TRX 1 rok pred
rodič
commit
a2eef27aef

+ 2 - 1
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/UnionSuperParam.java

@@ -15,12 +15,13 @@ public class UnionSuperParam {
      */
     private final String signType = "SHA256";
 
-
     /**
      * 签名
      */
     private String sign;
 
+    private String payKey;
+
     @Schema(description = "报文请求时间")
     private String requestTimestamp;
 }

+ 4 - 1
PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/UnionFrictionlessPayMainService.java

@@ -102,6 +102,7 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
         jsonObject.set("certifId", "511304198608153312");
         jsonObject.set("customerNm", "唐仁祥");
         signParam.setCustInfo(AesUtils.base64Encode(jsonObject.toString()));
+        signParam.setPayKey(UnionPaymentConfig.payKey);
 
         String url = payApiConfig.getUrl(UnionFrictionlessPayApiConfig.sign);
         SuperResponseModel requestAPI = unionRequestService.requestAPI(url, signParam, SignResponse.class);
@@ -110,8 +111,9 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
         }
         SignResponse response = (SignResponse) requestAPI;
         log.info("response: {}", JSONUtil.toJsonStr(response));
-
         unionUserOpenInfoDao.save(unionUserOpenInfo);
+
+
 //        JSONObject jsonObject = new JSONObject();
 //        jsonObject.set("walletOption", "SINGLE");
 //        jsonObject.set("billNo", "31940000201700002");
@@ -136,6 +138,7 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
 //        jsonObject.set("msgType", "bills.getQRCode");
 //        jsonObject.set("mid", "898340149000005");
 //        jsonObject.set("tid", "88880001");
+//        jsonObject.set("payKey", "fcAmtnx7MwismjWNhNKdHC44mNXtnEQeJkRrhKJwyrW2ysRR");
 //
 //        String sign1 = unionRequestService.signByJSONObject(jsonObject);
 //        log.info("sign1: {}", sign1);

+ 10 - 8
PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/UnionRequestService.java

@@ -25,10 +25,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.StopWatch;
 
 import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
+import java.util.*;
 
 /**
  * 银联无感支付的请求
@@ -43,6 +40,8 @@ public class UnionRequestService extends SuperService {
     @Autowired
     RequestInfoFeignService requestInfoFeignService;
 
+    private static final List<String> exitKeys = List.of("signType", "sign", "payKey");
+
     public SuperResponseModel requestAPI(String url,
             Object data,
             Class<? extends SuperResponseModel> tClass) {
@@ -106,15 +105,16 @@ public class UnionRequestService extends SuperService {
         TreeMap<String, Object> map = new TreeMap<>();
 
         for (String key : entries.keySet()) {
-            if (!ObjectUtil.isEmpty(entries.get(key)) && !"sign".equals(key)) {
+            if (!ObjectUtil.isEmpty(entries.get(key)) && !exitKeys.contains(key)) {
                 map.put(key, String.valueOf(entries.get(key)));
             }
         }
 
         StringBuffer signPara = buildSignStr(entries); // 代签名的字符串
         StringBuffer reqPara = signPara; // 组织请求参数
+        String payKey = entries.get("payKey").toString();
 
-        String signStr = signPara.toString() + UnionPaymentConfig.payKey;
+        String signStr = signPara.toString() + payKey;
         log.info("s: {}", signStr);
         String sign = AesUtils.signData(signStr);
         log.info("sign: {}", sign);
@@ -127,7 +127,9 @@ public class UnionRequestService extends SuperService {
 
     @SneakyThrows
     public String sign(JSONObject entries) {
-        String signStr = buildSignStr(entries) + UnionPaymentConfig.payKey;
+        String payKey = entries.get("payKey").toString();
+        String signStr = buildSignStr(entries) + payKey;
+        log.info("signStr; {}", signStr);
         String sign = AesUtils.signData(signStr);
         log.info("sign: {}", sign);
         return sign;
@@ -136,7 +138,7 @@ public class UnionRequestService extends SuperService {
     private StringBuffer buildSignStr(JSONObject entries) {
         TreeMap<String, Object> map = new TreeMap<>();
         for (String key : entries.keySet()) {
-            if (!ObjectUtil.isEmpty(entries.get(key)) && !"sign".equals(key)) {
+            if (!ObjectUtil.isEmpty(entries.get(key)) && !exitKeys.contains(key)) {
                 map.put(key, String.valueOf(entries.get(key)));
             }
         }