Просмотр исходного кода

[微信支付签名更改签名算法][升级]

release_toaliyun_real
Stormeye.Wu 7 лет назад
Родитель
Сommit
002a55e9b4
3 измененных файлов: 26 добавлений и 8 удалений
  1. +17
    -1
      mallinkService/src/main/java/com/simple/pay/WxPayment.java
  2. +6
    -6
      mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java
  3. +3
    -1
      mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java

+ 17
- 1
mallinkService/src/main/java/com/simple/pay/WxPayment.java Просмотреть файл

@@ -398,7 +398,23 @@ public class WxPayment {
params.remove("sign"); params.remove("sign");
String stringA = packageSign(params, false); String stringA = packageSign(params, false);
String stringSignTemp = stringA + "&key=" + partnerKey; 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<String, String> params, String partnerKey) {
// 生成签名前先去除sign
params.remove("sign");
String stringA = packageSign(params, false);
String stringSignTemp = stringA + "&key=" + partnerKey;
return HMACSHA256.sha256_HMAC(stringSignTemp, partnerKey).toUpperCase(); return HMACSHA256.sha256_HMAC(stringSignTemp, partnerKey).toUpperCase();
} }




+ 6
- 6
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("timeStamp", timestamp);
sighMap.put("nonceStr", noncestr); sighMap.put("nonceStr", noncestr);
sighMap.put("package", "prepay_id=" + prepay_id); sighMap.put("package", "prepay_id=" + prepay_id);
//sighMap.put("signType", "MD5");
sighMap.put("signType", "MD5");
String signAgent = WxPayment.createSign(sighMap, payAccount.getApiKey()); String signAgent = WxPayment.createSign(sighMap, payAccount.getApiKey());
returnMap.put("timeStamp", timestamp); returnMap.put("timeStamp", timestamp);
returnMap.put("nonceStr", noncestr); returnMap.put("nonceStr", noncestr);
@@ -226,7 +226,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
if(isShare) { if(isShare) {
payOrderMap.put("profit_sharing", "Y"); 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)); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderSP));
logger.info("pay order, wechat pushOrder, " + wxPayOrderSP.toString() + ", response: " + response.toString()); logger.info("pay order, wechat pushOrder, " + wxPayOrderSP.toString() + ", response: " + response.toString());
Map<String, String> returnMap = WxPayment.xmlToMap(response); Map<String, String> returnMap = WxPayment.xmlToMap(response);
@@ -250,8 +250,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
sighMap.put("timeStamp", timestamp); sighMap.put("timeStamp", timestamp);
sighMap.put("nonceStr", noncestr); sighMap.put("nonceStr", noncestr);
sighMap.put("package", "prepay_id=" + prepay_id); 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("timeStamp", timestamp);
returnMap.put("nonceStr", noncestr); returnMap.put("nonceStr", noncestr);
returnMap.put("package", "prepay_id=" + prepay_id); returnMap.put("package", "prepay_id=" + prepay_id);
@@ -360,7 +360,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {


try { try {
Map map = BeanUtils.toStringMap(payOrderSQ); Map map = BeanUtils.toStringMap(payOrderSQ);
payOrderSQ.setSign(WxPayment.createSign(map, payAccount.getApiKey()));
payOrderSQ.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey()));
map = BeanUtils.toStringMap(payOrderSQ); map = BeanUtils.toStringMap(payOrderSQ);


String response = WxPay.orderQuery(map); String response = WxPay.orderQuery(map);
@@ -450,7 +450,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {


try { try {
Map map = BeanUtils.toStringMap(payOrderSC); Map map = BeanUtils.toStringMap(payOrderSC);
payOrderSC.setSign(WxPayment.createSign(map, payAccount.getApiKey()));
payOrderSC.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey()));
map = BeanUtils.toStringMap(payOrderSC); map = BeanUtils.toStringMap(payOrderSC);
String response = WxPay.closeOrder(map); String response = WxPay.closeOrder(map);




+ 3
- 1
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()) { if (payAccount.getType() == EnumPayMode.MCH.getCode()) {
// 普通商户模式
String noncestr = Utility.generate32UUID(); String noncestr = Utility.generate32UUID();
WxRefundOrderP wxRefundOrderP = new WxRefundOrderP(); WxRefundOrderP wxRefundOrderP = new WxRefundOrderP();
wxRefundOrderP.setAppid(appInfo.getAppId()); wxRefundOrderP.setAppid(appInfo.getAppId());
@@ -474,6 +475,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
} }
} }
} else { } else {
// 服务商模式
String noncestr = Utility.generate32UUID(); String noncestr = Utility.generate32UUID();
WxRefundOrderSP wxRefundOrderSP = new WxRefundOrderSP(); WxRefundOrderSP wxRefundOrderSP = new WxRefundOrderSP();
wxRefundOrderSP.setAppid(appInfo.getParentAppId()); wxRefundOrderSP.setAppid(appInfo.getParentAppId());
@@ -509,7 +511,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), "退款签名异常"); 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); signMap.put("sign", signAgent);
String response = null; String response = null;
try { try {


Загрузка…
Отмена
Сохранить