Add service provider mode support for WxPayCodepayRequest
Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com>
This commit is contained in:
@@ -45,6 +45,58 @@ public class WxPayCodepayRequest implements Serializable {
|
||||
*/
|
||||
@SerializedName(value = "mchid")
|
||||
protected String mchid;
|
||||
/**
|
||||
* <pre>
|
||||
* 字段名:服务商应用ID
|
||||
* 变量名:sp_appid
|
||||
* 是否必填:否
|
||||
* 类型:string[1,32]
|
||||
* 描述:
|
||||
* 服务商模式下使用,由微信生成的应用ID,全局唯一。
|
||||
* 示例值:wxd678efh567hg6787
|
||||
* </pre>
|
||||
*/
|
||||
@SerializedName(value = "sp_appid")
|
||||
protected String spAppid;
|
||||
/**
|
||||
* <pre>
|
||||
* 字段名:服务商商户号
|
||||
* 变量名:sp_mchid
|
||||
* 是否必填:否
|
||||
* 类型:string[1,32]
|
||||
* 描述:
|
||||
* 服务商模式下使用,服务商商户号,由微信支付生成并下发。
|
||||
* 示例值:1230000109
|
||||
* </pre>
|
||||
*/
|
||||
@SerializedName(value = "sp_mchid")
|
||||
protected String spMchid;
|
||||
/**
|
||||
* <pre>
|
||||
* 字段名:子商户应用ID
|
||||
* 变量名:sub_appid
|
||||
* 是否必填:否
|
||||
* 类型:string[1,32]
|
||||
* 描述:
|
||||
* 服务商模式下使用,由微信生成的应用ID,全局唯一。
|
||||
* 示例值:wxd678efh567hg6787
|
||||
* </pre>
|
||||
*/
|
||||
@SerializedName(value = "sub_appid")
|
||||
protected String subAppid;
|
||||
/**
|
||||
* <pre>
|
||||
* 字段名:子商户商户号
|
||||
* 变量名:sub_mchid
|
||||
* 是否必填:否
|
||||
* 类型:string[1,32]
|
||||
* 描述:
|
||||
* 服务商模式下使用,子商户商户号,由微信支付生成并下发。
|
||||
* 示例值:1230000109
|
||||
* </pre>
|
||||
*/
|
||||
@SerializedName(value = "sub_mchid")
|
||||
protected String subMchid;
|
||||
/**
|
||||
* <pre>
|
||||
* 字段名:商品描述
|
||||
|
||||
@@ -1146,15 +1146,40 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
|
||||
|
||||
@Override
|
||||
public WxPayCodepayResult codepay(WxPayCodepayRequest request) throws WxPayException {
|
||||
if (StringUtils.isBlank(request.getAppid())) {
|
||||
request.setAppid(this.getConfig().getAppId());
|
||||
// 判断是否为服务商模式:如果设置了sp_appid或sp_mchid或sub_mchid中的任何一个,则认为是服务商模式
|
||||
boolean isPartnerMode = StringUtils.isNotBlank(request.getSpAppid())
|
||||
|| StringUtils.isNotBlank(request.getSpMchid())
|
||||
|| StringUtils.isNotBlank(request.getSubMchid());
|
||||
|
||||
if (isPartnerMode) {
|
||||
// 服务商模式
|
||||
if (StringUtils.isBlank(request.getSpAppid())) {
|
||||
request.setSpAppid(this.getConfig().getAppId());
|
||||
}
|
||||
if (StringUtils.isBlank(request.getSpMchid())) {
|
||||
request.setSpMchid(this.getConfig().getMchId());
|
||||
}
|
||||
if (StringUtils.isBlank(request.getSubAppid())) {
|
||||
request.setSubAppid(this.getConfig().getSubAppId());
|
||||
}
|
||||
if (StringUtils.isBlank(request.getSubMchid())) {
|
||||
request.setSubMchid(this.getConfig().getSubMchId());
|
||||
}
|
||||
String url = String.format("%s/v3/pay/partner/transactions/codepay", this.getPayBaseUrl());
|
||||
String body = this.postV3WithWechatpaySerial(url, GSON.toJson(request));
|
||||
return GSON.fromJson(body, WxPayCodepayResult.class);
|
||||
} else {
|
||||
// 直连商户模式
|
||||
if (StringUtils.isBlank(request.getAppid())) {
|
||||
request.setAppid(this.getConfig().getAppId());
|
||||
}
|
||||
if (StringUtils.isBlank(request.getMchid())) {
|
||||
request.setMchid(this.getConfig().getMchId());
|
||||
}
|
||||
String url = String.format("%s/v3/pay/transactions/codepay", this.getPayBaseUrl());
|
||||
String body = this.postV3WithWechatpaySerial(url, GSON.toJson(request));
|
||||
return GSON.fromJson(body, WxPayCodepayResult.class);
|
||||
}
|
||||
if (StringUtils.isBlank(request.getMchid())) {
|
||||
request.setMchid(this.getConfig().getMchId());
|
||||
}
|
||||
String url = String.format("%s/v3/pay/transactions/codepay", this.getPayBaseUrl());
|
||||
String body = this.postV3WithWechatpaySerial(url, GSON.toJson(request));
|
||||
return GSON.fromJson(body, WxPayCodepayResult.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user