From c6dd592a88a911159a20b91e9fd5d8b375fc16ac Mon Sep 17 00:00:00 2001 From: DaxPay Date: Wed, 15 Jan 2025 16:37:34 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=BE=AE=E4=BF=A1=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=95=86v2=E8=AE=A2=E5=8D=95=E6=94=AF=E4=BB=98=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../channel/wechat/param/pay/WechatPayParam.java | 2 +- .../service/pay/isv/WechatPaySubV2Service.java | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/param/pay/WechatPayParam.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/param/pay/WechatPayParam.java index 7cf0fc398..826eb4398 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/param/pay/WechatPayParam.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/param/pay/WechatPayParam.java @@ -18,7 +18,7 @@ public class WechatPayParam { private String openId; /** - * 服务商模式下分为 1、sp用户服务标识 2、sub用户子标识 + * 服务商模式下分为 sp. 用户服务标识 sub. 用户子标识 * @see org.dromara.daxpay.channel.wechat.code.WechatPayCode#SP_OPENID */ @Schema(description = "openid类型") diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/isv/WechatPaySubV2Service.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/isv/WechatPaySubV2Service.java index 9e95a9317..394a927b6 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/isv/WechatPaySubV2Service.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/isv/WechatPaySubV2Service.java @@ -2,6 +2,7 @@ package org.dromara.daxpay.channel.wechat.service.pay.isv; import cn.bootx.platform.common.spring.exception.RetryableException; import cn.bootx.platform.core.util.JsonUtil; +import org.dromara.daxpay.channel.wechat.code.WechatPayCode; import org.dromara.daxpay.channel.wechat.entity.config.WechatPayConfig; import org.dromara.daxpay.channel.wechat.param.pay.WechatPayParam; import org.dromara.daxpay.channel.wechat.service.config.WechatPayConfigService; @@ -69,7 +70,7 @@ public class WechatPaySubV2Service { } // 微信公众号支付或者小程序支付 else if (payMethodEnum == PayMethodEnum.JSAPI) { - payBody = this.jsPay(payOrder, wechatPayParam.getOpenId(), config); + payBody = this.jsPay(payOrder, wechatPayParam, config); } // 二维码支付 else if (payMethodEnum == PayMethodEnum.QRCODE) { @@ -121,10 +122,15 @@ public class WechatPaySubV2Service { /** * 微信公众号支付或者小程序支付 */ - private String jsPay(PayOrder payOrder, String openId, WechatPayConfig wechatPayConfig) { + private String jsPay(PayOrder payOrder, WechatPayParam wechatPayParam, WechatPayConfig wechatPayConfig) { WxPayService wxPayService = wechatPayConfigService.wxJavaSdk(wechatPayConfig); WxPayUnifiedOrderRequest request = this.buildRequest(payOrder, wechatPayConfig); - request.setOpenid(openId); + + if (Objects.equals(wechatPayParam.getOpenIdType(), WechatPayCode.SUB_OPENID)){ + request.setSubOpenid(wechatPayParam.getOpenId()); + } else { + request.setOpenid(wechatPayParam.getOpenId()); + } try { var result = wxPayService.createOrder(WxPayConstants.TradeType.Specific.JSAPI, request); Map map = this.buildJsapiResult(result);