lhm 3 năm trước cách đây
mục cha
commit
94127aa56d

+ 6 - 0
kmall-admin/pom.xml

@@ -230,6 +230,12 @@
             <version>0.0.19</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.alipay.sdk</groupId>
+            <artifactId>alipay-sdk-java</artifactId>
+            <version>4.22.0.ALL</version>
+        </dependency>
+
         <!--    阿里云短信服务api    -->
         <dependency>
             <groupId>com.aliyun</groupId>

+ 7 - 3
kmall-admin/src/main/java/com/kmall/admin/controller/GoodsController.java

@@ -458,9 +458,13 @@ public class GoodsController {
                             throw new RRException("文件为:" + barcode + "的商品命名格式不正确,请检查!");
                         }
                         GoodsEntity goodsEntity = goodsService.queryByBarcode(barcode);
-                        goodsEntity.setPrimaryPicUrl(url);
-                        goodsEntity.setListPicUrl(url);
-                        goodsService.updateForImgUrl(goodsEntity);
+                        if (Objects.isNull(goodsEntity)) {
+                            log.error("商品图片名【{}】所对应商品不存在!", barcode);
+                        } else {
+                            goodsEntity.setPrimaryPicUrl(url);
+                            goodsEntity.setListPicUrl(url);
+                            goodsService.updateForImgUrl(goodsEntity);
+                        }
                     }
                     //保存文件信息
                     SysOssEntity ossEntity = new SysOssEntity();

+ 15 - 3
kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/ali/AliCusDeclareBiz.java

@@ -1,5 +1,6 @@
 package com.kmall.admin.cuspay.biz.ali;
 
+import com.alipay.api.internal.util.AlipaySignature;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.google.common.base.Strings;
 import com.google.common.collect.Maps;
@@ -41,6 +42,8 @@ import org.springframework.util.StringUtils;
 import com.kmall.admin.cuspay.biz.ali.support.sign.MD5;
 
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -115,7 +118,8 @@ public class AliCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
             // 商户海关备案名称
             aliCbPayDoc.setMerchantCustomsName(customsName);
             // 商户生成的用于唯一标识一次报关操作的业务编号
-            aliCbPayDoc.setOutRequestNo(Contants.WX + SnowflakeUtil.getSnowNextId());
+//            aliCbPayDoc.setOutRequestNo(Contants.WX + SnowflakeUtil.getSnowNextId());
+            aliCbPayDoc.setOutRequestNo(params.get("orderSn").toString());
             // 合作者身份ID
             aliCbPayDoc.setPartner(partner);
             // 该交易在支付宝系统中的交易流水号
@@ -392,11 +396,19 @@ public class AliCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
             prestr = prestr + "&sign_type=MD5";
         } else if ("prod".equals(encryption)) {
             // RSA加密
-            sign = RSA.sign(prestr, RSAPrivateKey, "UTF-8");
+            try {
+                sign = AlipaySignature.rsaSign(prestr, RSAPrivateKey, "utf-8", "RSA");
+            } catch (Exception e) {
+                logger.error("加密支付宝报关相关参数失败!", e);
+            }
             prestr = prestr + "&sign_type=RSA";
         }
 
-        prestr = prestr + "&sign=" + sign;
+        try {
+            prestr = URLEncoder.encode(prestr, "utf-8") + "&sign=" + sign;
+        } catch (UnsupportedEncodingException e) {
+            logger.error("签名编码出现错误!", e);
+        }
         prestr = "?" + prestr;
         return prestr;
     }

+ 14 - 2
kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/ali/AliCusDeclareQueryBiz.java

@@ -1,5 +1,6 @@
 package com.kmall.admin.cuspay.biz.ali;
 
+import com.alipay.api.internal.util.AlipaySignature;
 import com.kmall.admin.cuspay.biz.AbstractCusDeclareBiz;
 import com.kmall.admin.cuspay.biz.CuspayBiz;
 import com.kmall.admin.cuspay.ccnet2cuspay.common.ali.AliDict;
@@ -49,6 +50,8 @@ import com.kmall.admin.cuspay.biz.ali.support.sign.MD5;
 import javax.xml.bind.JAXB;
 import java.io.IOException;
 import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -342,11 +345,20 @@ public class AliCusDeclareQueryBiz extends AbstractCusDeclareBiz implements Cusp
             prestr = prestr + "&sign_type=MD5";
         } else if ("prod".equals(encryption)) {
             // RSA加密
-            sign = RSA.sign(prestr, RSAPrivateKey, "UTF-8");
+            try {
+                sign = AlipaySignature.rsaSign(prestr, RSAPrivateKey, "utf-8", "RSA");
+//                sign = RSA.sign(prestr, RSAPrivateKey, "UTF-8");
+            } catch (Exception e) {
+                logger.error("加密支付宝查询报关结果相关参数失败!", e);
+            }
             prestr = prestr + "&sign_type=RSA";
         }
 
-        prestr = prestr + "&sign=" + sign;
+        try {
+            prestr = URLEncoder.encode(prestr, "utf-8") + "&sign=" + sign;
+        } catch (UnsupportedEncodingException e) {
+            logger.error("签名编码出现错误!", e);
+        }
         prestr = "?" + prestr;
         return prestr;
     }

+ 1 - 1
kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/wx/WxCusDeclareBiz.java

@@ -117,7 +117,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
             // 微信支付商户号
             wxCbPayDoc.setMchId(mchid);
             // 商户订单号,商户系统内部订单号
-            wxCbPayDoc.setOutTradeNo(params.get("outTradeNo").toString());
+            wxCbPayDoc.setOutTradeNo(params.get("orderSn").toString());
             // 微信支付订单号
             wxCbPayDoc.setTransactionId(params.get("transactionId").toString());
             // 报送海关

+ 3 - 5
kmall-admin/src/main/java/com/kmall/admin/cuspay/support/sign/RSA.java

@@ -22,8 +22,7 @@ public class RSA{
 	* @param input_charset 编码格式
 	* @return 签名值
 	*/
-	public static String sign(String content, String privateKey, String input_charset)
-	{
+	public static String sign(String content, String privateKey, String input_charset) throws Exception {
         try 
         {
         	PKCS8EncodedKeySpec priPKCS8 	= new PKCS8EncodedKeySpec( Base64.decode(privateKey) );
@@ -42,10 +41,9 @@ public class RSA{
         }
         catch (Exception e)
         {
-        	e.printStackTrace();
+        	throw new Exception(e);
         }
-        
-        return null;
+
     }
 	
 	/**

+ 19 - 3
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -2925,6 +2925,7 @@ public class OrderServiceImpl implements OrderService {
         entity.setIdentityCard(seaportInfo.getIdentityCard());
         entity.setIdentityMobile(seaportInfo.getIdentityMobile());
         entity.setIdentityName(seaportInfo.getIdentityName());
+        entity.setOutTradeNo(sendOrderToVmcShopDTO.getPayInfo().getOutTradeNo());
         entity.setOrderProductInfo(JacksonUtil.toJson(seaportInfo.getOrderProductInfoList()));
 
         return entity;
@@ -2962,7 +2963,21 @@ public class OrderServiceImpl implements OrderService {
         String response = order.getResponse();
         response = response.replaceAll("\r|\n", "");
         payInfoDTO.setResponse(response);
-        payInfoDTO.setOutTradeNo(order.getAliTradeNo());
+        if ("wxpay".equals(order.getPayApp())) {
+            String payTransactionId = order.getPayTransactionId();
+            if (org.springframework.util.StringUtils.isEmpty(payTransactionId)) {
+                OrderEntity orderEntity = orderDao.queryObjectByOrderSn(order.getOrder_sn());
+                payTransactionId = orderEntity.getPayTransactionId();
+            }
+            payInfoDTO.setOutTradeNo(payTransactionId);
+        } else {
+            String aliTradeNo = order.getAliTradeNo();
+            if (org.springframework.util.StringUtils.isEmpty(aliTradeNo)) {
+                OrderEntity orderEntity = orderDao.queryObjectByOrderSn(order.getOrder_sn());
+                aliTradeNo = orderEntity.getAliTradeNo();
+            }
+            payInfoDTO.setOutTradeNo(aliTradeNo);
+        }
         return payInfoDTO;
     }
 
@@ -3441,6 +3456,7 @@ public class OrderServiceImpl implements OrderService {
                     Map processParam = Maps.newHashMap();
                     processParam.put("payTime", successTime);
                     processParam.put("orderSn", orderSn);
+                    order.setPayTransactionId(result.getTransaction_id());
                     orderDao.updateOrderProcessRecord(processParam);
 
 //                    orderWXPayRecordService
@@ -5389,8 +5405,8 @@ public class OrderServiceImpl implements OrderService {
             //阿里支付流水号
             orderSendCusParams.put("tradeNo", orderEntity.getAliTradeNo());
             orderSendCusParams.put("amount", orderEntity.getActualPrice());
-            orderSendCusParams.put("certId", userEntity.getIdNo());
-            orderSendCusParams.put("name", orderEntity.getPayName());
+            orderSendCusParams.put("buyerIdNo", userEntity.getIdNo());
+            orderSendCusParams.put("buyerName", orderEntity.getPayName());
 
             // 将支付单信息发送到当前项目下的 cuspay
             aliCusDeclareBiz.biz(orderSendCusParams);

+ 2 - 2
kmall-admin/src/main/resources/conf/cuspay/cuspay-ali.properties

@@ -10,8 +10,8 @@ ali.payment.query.url=https://mapi.alipay.com/gateway.do?
 
 # MD5\u5BC6\u94A5 - \u4E2D\u7F51\u5546\u6237
 ali.payment.md5.key=6zo20oar6qufb6x41ipli3yma9ju107h
-# RSA\u5F00\u53D1\u8005\u79C1\u94A5 - \u6D77\u63A7\u63D0\u4F9B
-ali.payment.rsa.private-key=MIIEpAIBAAKCAQEA282CGIYVvLrrpZq9BlXIvJtkM4CfxsZvG+6tmvMj23+2UvXn0686ga8qLKd7sCBRSQTWQplQ1DqlFIcT8VgSDDVRTVzn39j/oxm+yruTMm3Xu08Hi0rinVNOzANhajlLwJy75SfNg+xyP5ENaQQXOWYruL0YS4xHL1xEsZGAZvZYThbd1UjM/UzjndiWOuh6U5aB/Ty7LasU1rcJfluXQxxHgunVH8HGgwzCkmbQpdVzwmg365ZQ64y+i/5nmjLOQOfGcj6Vd0zlmsIUOhtmTfAk+MLMW9xRKI8aVf5L5i5upa8WT/8V1QLAP/fHl3rMmfYeR81wV3oQbTw2p9LFpQIDAQABAoIBAF1xN25filwqhsVnTBamX2k3ElkGxGYHs/KG/EzUMpk86PDJ051dcBzzr5U+Okn84zGMmd3EOeWPbOCWMDc4vqtr+z1NUtIJ+VuINWEQbxpQMhdSGJ3x3vcNFIGMqlwzMW4X85UO38LGwSce7jmH4KupMMsfsHVllFmg+x8WASVDqTvenBGN2e9JpX5j43r5QIBegXdBgMs/MwEgS7N4ntSCzD2UzpRrUrK95YEiJJolmWEcyxJhgUVTFCHHAUFW1maqPA+MPAEV+gvzFSyqQ3ohWbDPCeC/PvSyPVJjMoue4AQkjwJnDhfw1KG90pyNiME6MexO8edhlP7PBSdKrf0CgYEA8YWOIGYumxW7KZvi5z8eQGXn62nl+mC3GlMRyAvIe2cgZZ7pfu0p4cU6p/npAC/xWyiQgv0XxeTjN7KVe+i4mNXuxN/XmPdmm9oIRH0O52/8lHG1H+jTyOFQFJvtkN7lJJ7hf1HSWWoN2ohLyBq9yzTCVKkJ//jkVK2GMlTloisCgYEA6PqmRbTqxMykRVwTo55h5WEuVkbdD4CNDAieStl5L3UFdYSwWX6EwLs0qpaCjtfNLzUNfDWnWi6CaEDCsRYGpcwk5I6DSnquQW3DDc8U7eWZCphNezN8Fts5hwojWzHCvuddMe3iDCx8Ix5na9M4Bu3RI4ZVHsXZg2bNn1b6328CgYBuNFK11epOOYw9YDQY8GQNXnKEqL2Xkan7CQyEC1xfcp8Fv40rrWv+6M/q9c2rmDS5M7k9C99dHSPQtlwfPgF9O6DHlJv74GehlctP9QBn+mF2Gqxa8xIwBx9TSBMOl6ZXH2glgGBLDGll3es2U31my5wgpUE624bUXJlvPe3KIQKBgQDfapYOnKrSJKiXNvBCZHzeme30oKoW1qDr3Evn3VsALokYpDD08YXeyOd9ey4iS0Ihtg+DgHRG3/kAfrH1Xfjr/7OVVjEDOFhouBhn4qDgbd/wMBOFRN8HkB0/qXI0Xqixp29QlR3DrNkyWFK3LOs6gc6f8Y8pHnQzNV+UILYdkwKBgQCQdHftPG9PYyhjfJQmCStLs48w1BxOLE3gA3mMwzBPtyHUYPVCfp+XFBzzn2aCwXiCp9K3t5LW/sCqSgm1ipuZqUM38qrP8APXrFU2QtjmBiP651kQ8czRcJM2P7f330VtMxCIqjkaQV1gcAK96Oy0mqUMGcfo9qAvNlLKo1NFPw==
+# RSA\u5F00\u53D1\u8005\u79C1\u94A5 - \u6D77\u63A7\u63D0\u4F9B PKCS8\u683C\u5F0F
+ali.payment.rsa.private-key=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDbzYIYhhW8uuulmr0GVci8m2QzgJ/Gxm8b7q2a8yPbf7ZS9efTrzqBryosp3uwIFFJBNZCmVDUOqUUhxPxWBIMNVFNXOff2P+jGb7Ku5Mybde7TweLSuKdU07MA2FqOUvAnLvlJ82D7HI/kQ1pBBc5Ziu4vRhLjEcvXESxkYBm9lhOFt3VSMz9TOOd2JY66HpTloH9PLstqxTWtwl+W5dDHEeC6dUfwcaDDMKSZtCl1XPCaDfrllDrjL6L/meaMs5A58ZyPpV3TOWawhQ6G2ZN8CT4wsxb3FEojxpV/kvmLm6lrxZP/xXVAsA/98eXesyZ9h5HzXBXehBtPDan0sWlAgMBAAECggEAXXE3bl+KXCqGxWdMFqZfaTcSWQbEZgez8ob8TNQymTzo8MnTnV1wHPOvlT46SfzjMYyZ3cQ55Y9s4JYwNzi+q2v7PU1S0gn5W4g1YRBvGlAyF1IYnfHe9w0UgYyqXDMxbhfzlQ7fwsbBJx7uOYfgq6kwyx+wdWWUWaD7HxYBJUOpO96cEY3Z70mlfmPjevlAgF6Bd0GAyz8zASBLs3ie1ILMPZTOlGtSsr3lgSIkmiWZYRzLEmGBRVMUIccBQVbWZqo8D4w8ARX6C/MVLKpDeiFZsM8J4L8+9LI9UmMyi57gBCSPAmcOF/DUob3SnI2IwTox7E7x52GU/s8FJ0qt/QKBgQDxhY4gZi6bFbspm+LnPx5AZefraeX6YLcaUxHIC8h7ZyBlnul+7SnhxTqn+ekAL/FbKJCC/RfF5OM3spV76LiY1e7E39eY92ab2ghEfQ7nb/yUcbUf6NPI4VAUm+2Q3uUknuF/UdJZag3aiEvIGr3LNMJUqQn/+ORUrYYyVOWiKwKBgQDo+qZFtOrEzKRFXBOjnmHlYS5WRt0PgI0MCJ5K2XkvdQV1hLBZfoTAuzSqloKO180vNQ18NadaLoJoQMKxFgalzCTkjoNKeq5BbcMNzxTt5ZkKmE17M3wW2zmHCiNbMcK+510x7eIMLHwjHmdr0zgG7dEjhlUexdmDZs2fVvrfbwKBgG40UrXV6k45jD1gNBjwZA1ecoSovZeRqfsJDIQLXF9ynwW/jSuta/7oz+r1zauYNLkzuT0L310dI9C2XB8+AX07oMeUm/vgZ6GVy0/1AGf6YXYarFrzEjAHH1NIEw6XplcfaCWAYEsMaWXd6zZTfWbLnCClQTrbhtRcmW897cohAoGBAN9qlg6cqtIkqJc28EJkfN6Z7fSgqhbWoOvcS+fdWwAuiRikMPTxhd7I5317LiJLQiG2D4OAdEbf+QB+sfVd+Ov/s5VWMQM4WGi4GGfioOBt3/AwE4VE3weQHT+pcjReqLGnb1CVHcOs2TJYUrcs6zqBzp/xjykedDM1X5Qgth2TAoGBAJB0d+08b09jKGN8lCYJK0uzjzDUHE4sTeADeYzDME+3IdRg9UJ+n5cUHPOfZoLBeIKn0re3ktb+wKpKCbWKm5mpQzfyqs/wA9esVTZC2OYGI/rnWRDxzNFwkzY/t/ffRW0zEIiqORpBXWBwAr3o7LSapQwZx+j2oC82UsqjU0U/
 
 
 #\u5B9A\u65F6\u5668\u62A5\u5173\u4E00\u6B21\u533A\u7684\u6570\u636E