Skip to content

Commit ccdbef3

Browse files
committed
Update WxMpServiceImpl.java
1.对应WxMpService类修改getJSSDKPayInfo(Map<String, String> parameters)方法为getPayInfo(Map<String, String> parameters)方法 2.增加,1)扫码支付参数拼装方法:getNativePayInfo(String productId,String outTradeNo, double amt, String body,String ip, String callbackUrl) 2)原来的公众号支付参数拼装方法:getJsapiPayInfo(String openId,String outTradeNo, double amt, String body,String ip, String callbackUrl) 3.在getPayInfo(Map<String, String> parameters)方法中增加codeUrl参数判断,只有在NATIVE方式才返回codeUrl参数。
1 parent ae50576 commit ccdbef3

File tree

1 file changed

+36
-19
lines changed

1 file changed

+36
-19
lines changed

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -821,25 +821,40 @@ private void checkParameters(Map<String, String> parameters) {
821821
throw new IllegalArgumentException("Reqiured argument 'product_id' is missing when trade_type is 'NATIVE'.");
822822
}
823823

824+
@Override
825+
public Map<String, String> getJsapiPayInfo(String openId,String outTradeNo, double amt, String body,String ip, String callbackUrl) throws WxErrorException{
826+
Map<String, String> packageParams = new HashMap<String, String>();
827+
packageParams.put("appid", wxMpConfigStorage.getAppId());
828+
packageParams.put("mch_id", wxMpConfigStorage.getPartnerId());
829+
packageParams.put("body", body);
830+
packageParams.put("out_trade_no", outTradeNo);
831+
packageParams.put("total_fee", (int) (amt * 100) + "");
832+
packageParams.put("spbill_create_ip", ip);
833+
packageParams.put("notify_url", callbackUrl);
834+
packageParams.put("trade_type", "JSAPI");
835+
packageParams.put("openid", openId);
836+
837+
return getPayInfo(packageParams);
838+
}
839+
840+
@Override
841+
public Map<String, String> getNativePayInfo(String productId,String outTradeNo, double amt, String body,String ip, String callbackUrl) throws WxErrorException{
842+
Map<String, String> packageParams = new HashMap<String, String>();
843+
packageParams.put("appid", wxMpConfigStorage.getAppId());
844+
packageParams.put("mch_id", wxMpConfigStorage.getPartnerId());
845+
packageParams.put("body", body);
846+
packageParams.put("out_trade_no", outTradeNo);
847+
packageParams.put("total_fee", (int) (amt * 100) + "");
848+
packageParams.put("spbill_create_ip", ip);
849+
packageParams.put("notify_url", callbackUrl);
850+
packageParams.put("trade_type", "NATIVE");
851+
packageParams.put("product_id", productId);
852+
853+
return getPayInfo(packageParams);
854+
}
855+
824856
@Override
825-
public Map<String, String> getJSSDKPayInfo(String openId, String outTradeNo, double amt, String body, String tradeType, String ip, String callbackUrl)
826-
throws WxErrorException {
827-
Map<String, String> packageParams = new HashMap<String, String>();
828-
packageParams.put("appid", wxMpConfigStorage.getAppId());
829-
packageParams.put("mch_id", wxMpConfigStorage.getPartnerId());
830-
packageParams.put("body", body);
831-
packageParams.put("out_trade_no", outTradeNo);
832-
packageParams.put("total_fee", String.format("%.0f", amt * 100));
833-
packageParams.put("spbill_create_ip", ip);
834-
packageParams.put("notify_url", callbackUrl);
835-
packageParams.put("trade_type", tradeType);
836-
packageParams.put("openid", openId);
837-
838-
return getJSSDKPayInfo(packageParams);
839-
}
840-
841-
@Override
842-
public Map<String, String> getJSSDKPayInfo(Map<String, String> parameters) throws WxErrorException {
857+
public Map<String, String> getPayInfo(Map<String, String> parameters) throws WxErrorException {
843858
WxMpPrepayIdResult wxMpPrepayIdResult = getPrepayId(parameters);
844859

845860
if (!"SUCCESS".equalsIgnoreCase(wxMpPrepayIdResult.getReturn_code())
@@ -866,7 +881,9 @@ public Map<String, String> getJSSDKPayInfo(Map<String, String> parameters) throw
866881
payInfo.put("nonceStr", System.currentTimeMillis() + "");
867882
payInfo.put("package", "prepay_id=" + prepayId);
868883
payInfo.put("signType", "MD5");
869-
payInfo.put("code_url",wxMpPrepayIdResult.getCode_url());
884+
if("NATIVE".equals(parameters.get("trade_type"))){
885+
payInfo.put("codeUrl", wxMpPrepayIdResult.getCode_url());
886+
}
870887

871888
String finalSign = WxCryptUtil.createSign(payInfo, wxMpConfigStorage.getPartnerKey());
872889
payInfo.put("paySign", finalSign);

0 commit comments

Comments
 (0)