From 9c216ffec05b6a69c061b5f65235bf5f7ed47a37 Mon Sep 17 00:00:00 2001 From: DaxPay Date: Tue, 5 Nov 2024 16:26:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(wechat):=20=E4=BF=AE=E5=A4=8D=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E6=94=AF=E4=BB=98=E5=90=8C=E6=AD=A5=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/sync/pay/WeChatPaySyncV3Service.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/sync/pay/WeChatPaySyncV3Service.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/sync/pay/WeChatPaySyncV3Service.java index 5ca11a55..3e1747ac 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/sync/pay/WeChatPaySyncV3Service.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/sync/pay/WeChatPaySyncV3Service.java @@ -1,6 +1,7 @@ package org.dromara.daxpay.channel.wechat.service.sync.pay; import cn.bootx.platform.core.util.JsonUtil; +import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryV3Result; import org.dromara.daxpay.channel.wechat.entity.config.WechatPayConfig; import org.dromara.daxpay.channel.wechat.service.config.WechatPayConfigService; import org.dromara.daxpay.channel.wechat.util.WechatPayUtil; @@ -17,6 +18,7 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Objects; +import java.util.Optional; /** * 微信支付信息同步 v3 @@ -37,9 +39,16 @@ public class WeChatPaySyncV3Service { WxPayService wxPayService = wechatPayConfigService.wxJavaSdk(wechatPayConfig); try { var result = wxPayService.queryOrderV3(null, order.getOrderNo()); + + // 获取支付金额 + var payerTotal = Optional.ofNullable(result.getAmount()) + .map(WxPayOrderQueryV3Result.Amount::getPayerTotal) + .map(PayUtil::conversionAmount) + .orElse(null); + syncResult.setSyncData(JsonUtil.toJsonStr(result)) .setOutOrderNo(result.getTransactionId()) - .setAmount(PayUtil.conversionAmount(result.getAmount().getPayerTotal())); + .setAmount(payerTotal); // 支付状态 - 成功 SUCCESS:支付成功 REFUND:转入退款 if (List.of(WxpayTradeStatus.SUCCESS, WxpayTradeStatus.REFUND).contains(result.getTradeState())){ syncResult.setPayStatus(PayStatusEnum.SUCCESS)