diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayment.java b/mallinkService/src/main/java/com/simple/pay/WxPayment.java index 1dcc4f737..3e587d6c0 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayment.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayment.java @@ -398,7 +398,23 @@ public class WxPayment { params.remove("sign"); String stringA = packageSign(params, false); String stringSignTemp = stringA + "&key=" + partnerKey; - //return HashUtil.md5(stringSignTemp).toUpperCase(); + return HashUtil.md5(stringSignTemp).toUpperCase(); + } + + /** + * 生成签名 + * + * @param params + * 参数 + * @param partnerKey + * 支付密钥 + * @return sign + */ + public static String createSignHMAC(Map params, String partnerKey) { + // 生成签名前先去除sign + params.remove("sign"); + String stringA = packageSign(params, false); + String stringSignTemp = stringA + "&key=" + partnerKey; return HMACSHA256.sha256_HMAC(stringSignTemp, partnerKey).toUpperCase(); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index f0e31cb85..f17754813 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -189,7 +189,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { sighMap.put("timeStamp", timestamp); sighMap.put("nonceStr", noncestr); sighMap.put("package", "prepay_id=" + prepay_id); - //sighMap.put("signType", "MD5"); + sighMap.put("signType", "MD5"); String signAgent = WxPayment.createSign(sighMap, payAccount.getApiKey()); returnMap.put("timeStamp", timestamp); returnMap.put("nonceStr", noncestr); @@ -226,7 +226,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if(isShare) { payOrderMap.put("profit_sharing", "Y"); } - wxPayOrderSP.setSign(WxPayment.createSign(payOrderMap, payAccount.getApiKey())); + wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderSP)); logger.info("pay order, wechat pushOrder, " + wxPayOrderSP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); @@ -250,8 +250,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { sighMap.put("timeStamp", timestamp); sighMap.put("nonceStr", noncestr); sighMap.put("package", "prepay_id=" + prepay_id); - //sighMap.put("signType", "MD5"); - String signAgent = WxPayment.createSign(sighMap, payAccount.getApiKey()); + sighMap.put("signType", "HMAC-SHA256"); + String signAgent = WxPayment.createSignHMAC(sighMap, payAccount.getApiKey()); returnMap.put("timeStamp", timestamp); returnMap.put("nonceStr", noncestr); returnMap.put("package", "prepay_id=" + prepay_id); @@ -360,7 +360,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { try { Map map = BeanUtils.toStringMap(payOrderSQ); - payOrderSQ.setSign(WxPayment.createSign(map, payAccount.getApiKey())); + payOrderSQ.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey())); map = BeanUtils.toStringMap(payOrderSQ); String response = WxPay.orderQuery(map); @@ -450,7 +450,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { try { Map map = BeanUtils.toStringMap(payOrderSC); - payOrderSC.setSign(WxPayment.createSign(map, payAccount.getApiKey())); + payOrderSC.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey())); map = BeanUtils.toStringMap(payOrderSC); String response = WxPay.closeOrder(map); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java index 196c3b571..c472d7a85 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -402,6 +402,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { // 实际支付 // 向微信提交退款申请 if (payAccount.getType() == EnumPayMode.MCH.getCode()) { + // 普通商户模式 String noncestr = Utility.generate32UUID(); WxRefundOrderP wxRefundOrderP = new WxRefundOrderP(); wxRefundOrderP.setAppid(appInfo.getAppId()); @@ -474,6 +475,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { } } } else { + // 服务商模式 String noncestr = Utility.generate32UUID(); WxRefundOrderSP wxRefundOrderSP = new WxRefundOrderSP(); wxRefundOrderSP.setAppid(appInfo.getParentAppId()); @@ -509,7 +511,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), "退款签名异常"); } - String signAgent = WxPayment.createSign(signMap, payAccount.getApiKey()); + String signAgent = WxPayment.createSignHMAC(signMap, payAccount.getApiKey()); signMap.put("sign", signAgent); String response = null; try {