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

Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity

1098226878 лет назад: 4
Родитель
Сommit
8d0d2ac5db

+ 11 - 4
service-front/src/main/java/com/java110/front/controller/app/PaymentController.java

@@ -215,10 +215,7 @@ public class PaymentController extends BaseController {
         String sign = params.get("sign");
         System.out.println(sign);
 
-        /*验签*/
-        //对通知内容生成sign
-        //String strSign = makeSign(md5key, params);
-        //System.out.println("strSign="+strSign);
+
         String preStr = buildSignString(params);
         paramIn.put("preSign",preStr);
         paramIn.put("sign",sign);
@@ -264,6 +261,16 @@ public class PaymentController extends BaseController {
             paramIn.put(key, request.getParameter(key));
         }
         logger.debug("微信支付回调报文" + paramIn.toJSONString());
+        /*接收参数*/
+        Map<String, String> params = getRequestParams(request);
+        System.out.println("params:" + params);
+        String sign = params.get("sign");
+        System.out.println(sign);
+
+
+        String preStr = buildSignString(params);
+        paramIn.put("preSign",preStr);
+        paramIn.put("sign",sign);
 
         return oweFeeToNotifySMOImpl.toNotify(paramIn.toJSONString(), request);
     }

+ 17 - 1
service-front/src/main/java/com/java110/front/smo/payment/adapt/chinaums/ChinaUmsOweFeeToNotifyAdapt.java

@@ -29,6 +29,7 @@ import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.PayUtil;
 import com.java110.utils.util.StringUtil;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +38,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.client.HttpStatusCodeException;
 import org.springframework.web.client.RestTemplate;
 
+import java.io.UnsupportedEncodingException;
 import java.util.Date;
 import java.util.SortedMap;
 import java.util.TreeMap;
@@ -123,7 +125,11 @@ public class ChinaUmsOweFeeToNotifyAdapt implements IOweFeeToNotifyAdapt {
             }
             paramMap.put(key, map.get(key).toString());
         }
-        String sign = PayUtil.createSign(paramMap, smallWeChatDto.getPayPassword());
+        String preSign = map.getString("preSign");
+        String text = preSign + smallWeChatDto.getPayPassword();
+        System.out.println("待签名字符串:" + text);
+        String sign = DigestUtils.sha256Hex(getContentBytes(text)).toUpperCase();
+
         if (!sign.equals(map.get("sign"))) {
             throw new IllegalArgumentException("鉴权失败");
         }
@@ -238,4 +244,14 @@ public class ChinaUmsOweFeeToNotifyAdapt implements IOweFeeToNotifyAdapt {
         return PayUtil.md5(str);
     }
 
+
+    // 根据编码类型获得签名内容byte[]
+    public static byte[] getContentBytes(String content) {
+        try {
+            return content.getBytes("UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException("签名过程中出现错误");
+        }
+    }
+
 }