mirror of
https://gitee.com/egzosn/pay-java-parent.git
synced 2026-09-03 05:24:28 +08:00
修复直连商户查询订单与关闭订单提示MchId必填问题
This commit is contained in:
@@ -9,11 +9,11 @@ import com.egzosn.pay.common.bean.OrderParaStructure;
|
||||
import com.egzosn.pay.common.bean.PayOrder;
|
||||
import com.egzosn.pay.common.http.UriVariables;
|
||||
import com.egzosn.pay.common.util.MapGen;
|
||||
import com.egzosn.pay.common.util.str.StringUtils;
|
||||
import com.egzosn.pay.wx.v3.utils.WxConst;
|
||||
|
||||
/**
|
||||
* 微信参数构造器
|
||||
*
|
||||
* @author Egan
|
||||
* <pre>
|
||||
* email egzosn@gmail.com
|
||||
@@ -32,19 +32,19 @@ public class WxParameterStructure {
|
||||
*
|
||||
* @return 公共参数
|
||||
*/
|
||||
public Map<String, Object> getPublicParameters() {
|
||||
|
||||
Map<String, Object> parameters = new LinkedHashMap<>();
|
||||
public Map<String, Object> getPublicParameters(Map<String, Object> parameters) {
|
||||
if (payConfigStorage.isPartner()) {
|
||||
return parameters;
|
||||
}
|
||||
if (null == parameters) {
|
||||
parameters = new LinkedHashMap<>();
|
||||
}
|
||||
parameters.put(WxConst.APPID, payConfigStorage.getAppId());
|
||||
parameters.put(WxConst.MCH_ID, payConfigStorage.getMchId());
|
||||
return parameters;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 加载结算信息
|
||||
*
|
||||
@@ -65,7 +65,6 @@ public class WxParameterStructure {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 初始化通知URL必须为直接可访问的URL,不允许携带查询串,要求必须为https地址。
|
||||
*
|
||||
@@ -77,32 +76,38 @@ public class WxParameterStructure {
|
||||
OrderParaStructure.loadParameters(parameters, WxConst.NOTIFY_URL, order);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取服务商相关信息
|
||||
* 获取商户相关信息
|
||||
*
|
||||
* @return 服务商相关信息
|
||||
* @return 商户相关信息
|
||||
*/
|
||||
public String getSpParameters() {
|
||||
public String getMchParameters() {
|
||||
Map<String, Object> attr = initSubMchId(null);
|
||||
OrderParaStructure.loadParameters(attr, WxConst.SP_MCH_ID, payConfigStorage.getSpMchId());
|
||||
OrderParaStructure.loadParameters(attr, payConfigStorage.isPartner() ? WxConst.SP_MCH_ID : WxConst.MCH_ID, payConfigStorage.getMchId());
|
||||
return UriVariables.getMapToParameters(attr);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化商户相关信息
|
||||
*
|
||||
* @param parameters 参数信息
|
||||
*/
|
||||
public void initPartner(Map<String, Object> parameters) {
|
||||
public Map<String, Object> initPartner(Map<String, Object> parameters) {
|
||||
if (null == parameters) {
|
||||
parameters = new HashMap<>();
|
||||
parameters = new LinkedHashMap<>();
|
||||
}
|
||||
if (StringUtils.isNotEmpty(payConfigStorage.getSpAppId()) && StringUtils.isNotEmpty(payConfigStorage.getSpMchId())) {
|
||||
payConfigStorage.setPartner(true);
|
||||
parameters.put("sp_appid", payConfigStorage.getSpAppId());
|
||||
parameters.put(WxConst.SP_MCH_ID, payConfigStorage.getSpMchId());
|
||||
if (payConfigStorage.isPartner()) {
|
||||
parameters.put("sp_appid", payConfigStorage.getAppId());
|
||||
parameters.put(WxConst.SP_MCH_ID, payConfigStorage.getMchId());
|
||||
OrderParaStructure.loadParameters(parameters, "sub_appid", payConfigStorage.getSubAppId());
|
||||
OrderParaStructure.loadParameters(parameters, WxConst.SUB_MCH_ID, payConfigStorage.getSubMchId());
|
||||
return parameters;
|
||||
}
|
||||
OrderParaStructure.loadParameters(parameters, "sub_appid", payConfigStorage.getSubAppId());
|
||||
initSubMchId(parameters);
|
||||
|
||||
parameters.put(WxConst.APPID, payConfigStorage.getAppId());
|
||||
parameters.put(WxConst.MCH_ID, payConfigStorage.getMchId());
|
||||
return parameters;
|
||||
}
|
||||
|
||||
|
||||
@@ -116,10 +121,10 @@ public class WxParameterStructure {
|
||||
if (null == parameters) {
|
||||
parameters = new HashMap<>();
|
||||
}
|
||||
if (StringUtils.isNotEmpty(payConfigStorage.getSubMchId())) {
|
||||
payConfigStorage.setPartner(true);
|
||||
parameters.put(WxConst.SUB_MCH_ID, payConfigStorage.getSubMchId());
|
||||
if (payConfigStorage.isPartner()) {
|
||||
OrderParaStructure.loadParameters(parameters, WxConst.SUB_MCH_ID, payConfigStorage.getSubMchId());
|
||||
}
|
||||
|
||||
return parameters;
|
||||
|
||||
}
|
||||
|
||||
@@ -169,20 +169,20 @@ public class WxPayConfigStorage extends BasePayConfigStorage {
|
||||
}
|
||||
|
||||
public String getSpAppId() {
|
||||
return spAppId;
|
||||
return getAppId();
|
||||
}
|
||||
|
||||
public void setSpAppId(String spAppId) {
|
||||
this.spAppId = spAppId;
|
||||
setAppId(spAppId);
|
||||
addAttr("spAppId", spAppId);
|
||||
}
|
||||
|
||||
public String getSpMchId() {
|
||||
return spMchId;
|
||||
return getMchId();
|
||||
}
|
||||
|
||||
public void setSpMchId(String spMchId) {
|
||||
this.spMchId = spMchId;
|
||||
setMchId(spMchId);
|
||||
addAttr("spMchId", spMchId);
|
||||
}
|
||||
|
||||
|
||||
@@ -134,6 +134,7 @@ public class WxPayService extends BasePayService<WxPayConfigStorage> {
|
||||
*/
|
||||
@Override
|
||||
protected void initAfter() {
|
||||
payConfigStorage.setPartner(StringUtils.isNotEmpty(payConfigStorage.getSubMchId()));
|
||||
new Thread(() -> {
|
||||
payConfigStorage.loadCertEnvironment();
|
||||
wxParameterStructure = new WxParameterStructure(payConfigStorage);
|
||||
@@ -234,8 +235,9 @@ public class WxPayService extends BasePayService<WxPayConfigStorage> {
|
||||
public JSONObject unifiedOrder(PayOrder order) {
|
||||
|
||||
//统一下单
|
||||
Map<String, Object> parameters = wxParameterStructure.getPublicParameters();
|
||||
wxParameterStructure.initPartner(parameters);
|
||||
Map<String, Object> parameters = wxParameterStructure.initPartner(null);
|
||||
;
|
||||
// wxParameterStructure.getPublicParameters(parameters);
|
||||
// 商品描述
|
||||
OrderParaStructure.loadParameters(parameters, WxConst.DESCRIPTION, order.getSubject());
|
||||
OrderParaStructure.loadParameters(parameters, WxConst.DESCRIPTION, order.getBody());
|
||||
@@ -283,6 +285,9 @@ public class WxPayService extends BasePayService<WxPayConfigStorage> {
|
||||
|
||||
Map<String, Object> params = new LinkedHashMap<>();
|
||||
String appId = payConfigStorage.getAppId();
|
||||
if (payConfigStorage.isPartner() && StringUtils.isNotEmpty(payConfigStorage.getSubAppId())){
|
||||
appId = payConfigStorage.getSubAppId();
|
||||
}
|
||||
String timeStamp = String.valueOf(DateUtils.toEpochSecond());
|
||||
String randomStr = SignTextUtils.randomStr();
|
||||
String prepayId = result.getString("prepay_id");
|
||||
@@ -457,7 +462,7 @@ public class WxPayService extends BasePayService<WxPayConfigStorage> {
|
||||
public Map<String, Object> query(AssistOrder assistOrder) {
|
||||
String transactionId = assistOrder.getTradeNo();
|
||||
String outTradeNo = assistOrder.getOutTradeNo();
|
||||
String parameters = wxParameterStructure.getSpParameters();
|
||||
String parameters = wxParameterStructure.getMchParameters();
|
||||
WxTransactionType transactionType = WxTransactionType.QUERY_TRANSACTION_ID;
|
||||
String uriVariable = transactionId;
|
||||
if (StringUtils.isNotEmpty(outTradeNo)) {
|
||||
@@ -490,7 +495,7 @@ public class WxPayService extends BasePayService<WxPayConfigStorage> {
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> close(AssistOrder assistOrder) {
|
||||
String parameters = wxParameterStructure.getSpParameters();
|
||||
String parameters = wxParameterStructure.getMchParameters();
|
||||
return getAssistService().doExecute(parameters, WxTransactionType.CLOSE, assistOrder.getOutTradeNo());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user