From a1c28dbf38c978cad44e1a8e99e25d83234e2dcb Mon Sep 17 00:00:00 2001 From: liupopo Date: Mon, 27 Feb 2023 11:06:35 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=AE=89=E5=8D=93=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E5=92=8C=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/安卓APP证书/key-info.txt | 76 +++++++++++++++++++++++ docs/安卓APP证书/yxtmallapp.keystore | Bin 0 -> 2205 bytes mallplusui-uniapp-app/manifest.json | 4 +- 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 docs/安卓APP证书/key-info.txt create mode 100644 docs/安卓APP证书/yxtmallapp.keystore diff --git a/docs/安卓APP证书/key-info.txt b/docs/安卓APP证书/key-info.txt new file mode 100644 index 0000000..eb1e1d3 --- /dev/null +++ b/docs/安卓APP证书/key-info.txt @@ -0,0 +1,76 @@ +打包参数: +Android包名:com.yxt.mall +使用自有证书:yxtmallapp.keystore +证书别名:yxtmallapp +证书私钥密码:123456 +证书文件:yxtmallapp.keystore + + + +C:\opt\jdk1.8.0_261\bin\keytool -genkey -alias yxtmallapp -keyalg RSA -keysize 2048 -validity 36500 -keystore yxtmallapp.keystore +密码:123456 + +C:\opt\jdk1.8.0_261\bin\keytool -list -v -keystore yxtmallapp.keystore +输入密钥库口令: +密钥库类型: jks +密钥库提供方: SUN + +您的密钥库包含 1 个条目 + +别名: yxtmallapp +创建日期: 2023-2-27 +条目类型: PrivateKeyEntry +证书链长度: 1 +证书[1]: +所有者: CN=liu, OU=yxt, O=yxt, L=sjz, ST=hebei, C=CN +发布者: CN=liu, OU=yxt, O=yxt, L=sjz, ST=hebei, C=CN +序列号: 388e0f61 +有效期为 Mon Feb 27 09:58:50 CST 2023 至 Wed Feb 03 09:58:50 CST 2123 +证书指纹: + MD5: 0B:3E:40:4F:68:72:34:BF:98:1B:9D:34:3A:2C:59:A9 + SHA1: A7:D7:83:32:8C:59:02:57:8D:2E:CB:16:BB:5B:3B:74:35:DA:67:08 + SHA256: 0F:3B:5F:DC:03:DB:78:2B:35:60:69:95:73:40:72:A6:AC:96:F0:C8:D1:18:6E:1D:3F:BF:F8:21:BB:AE:85:1B +签名算法名称: SHA256withRSA +主体公共密钥算法: 2048 位 RSA 密钥 +版本: 3 + +扩展: + +#1: ObjectId: 2.5.29.14 Criticality=false +SubjectKeyIdentifier [ +KeyIdentifier [ +0000: 6E FA C5 DA 91 A2 65 22 17 E9 DE 1B 72 8B 22 CB n.....e"....r.". +0010: A9 81 5C 3A ..\: +] +] + + + +******************************************* +******************************************* + + + +Warning: +JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore yxtmallapp.keystore -destkeystore yxtmallapp.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。 + + + +支付宝APPID,2018082761134635 +#支付宝相关配置 +alipay.appId=2018082761134635 +alipay.privateKey=MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCpYi38h2/25e4mNWo56mmwuwa7QbBbPdgH00rsmPI/+0JkYhda2uZDvtrFXWMLzVJ2ioh9pamcfUbb2LcFgLIJ0KJyTia4sVMHmbk9l8wPf9mE4aOYN8ix6olzkm9ZhDGVekx2niW/hf6bpjnh92+I4EZo4xsK3RAsQ9oDXPjrJzktrrerAP+5MNOY8wLRqOp0KU+bOIcsz4Wz+qD3UxP2PjXPJDvXu7NkYDndOc7G0tVnhzVahFafqAntbgQHMyJENhLl9xdbnYdiKQqZJUwfI9xlRKYk08P4YVYTL7dAGAibQJJamgqmmKo8uibDIMkLsTGNm5WzW3EErWOCl6wlAgMBAAECggEAXfyxgbdxRDHPlHn9KIfO/5a3pH5NqkNFtQnkQCaZ/TChZWwcg3iFXr/vSqaICAt1H3u9QuMCm2fUQrcczzvbDqErEnwU9lTGuqfs5qVtQIhznU1K5nLFtRtsC6oMiUJV9Rh4hzU3wu9KGPoCkkUnKW8xApBJ+Bw0FivMNCOJp4kipif0gXQFxDH14w8n4QAyG3keXYP43DPqlsjmjJm4inHajxNO012Snle5SqA5HaIrZzf9St3ctq1BzqgUaD5yyXPmPyi1sqjrK+A16R4DrbKlY2h3/mo1IIfPjYbjb/uPcHf9pDMxEFwYIZ+kkz0uUjRDNWVX3A7ldav8MvvZ/QKBgQDot2raw93blrEhld3GGY4JNxboi6UZ1guK2nDEjlnpZjDUklSlNsx82NM8g0bm76Q9A3WpuoHQoSGEIy9ElrMuNS7xj+PZe5mNyKFMBG8hKeIV3jx4OIU80aiV9OQLv6+AonavHvOLXu41OJKdoQexyz7q3lu0+i7d9KKbWd2SlwKBgQC6VJxj1KPh3kHtmm/d/5fOZUDLqxTOyexRrEUCj9hGjv5XymxULQPskKxasFKiPyn4TCp2ZOrPO1slu8IUpzaymM4DDQYtTQkbsAT/N6r9efCJTXDdTgm5iyTaILbSbqd01KEnqjmFLOSCpasvM47rARlG4IYXIXD9cXKj12AaowKBgAN7w2C079w6nDopeSFe/o5KwdAHTxhc6N1SOb/ndZcVzYNREW1LrbHsuPS97lDEo4u6Qoeg4BKUZuEIecuoCdSWPTamdb2qqPjDWQ6/Pj6b1uOG6RbPmcb4SHK+MK+wVdsyE165suGSMTSgvSkY4PmbVjzDyVGjMRJneAulQ7jPAoGAViCIDWkbu2q1xLNPJClhrSiGU94nhxI05uefGnkM+khcbo4Flr8cAjw5Ps4j1BUoPDpQolsxYkrIbd+k7VEBanpRN33MriHepOqu1J2RrwqvUXf3RIQu4JHdnenjN8+oHcuvFhuL7O/8TBtxziah2CSw318m/AgcJzpKSEtkg8sCgYB/cr6PuuQ7JpK2kYmwYMSwNvys0v31iSqFmJK6EyPRycGw9Wj/ANiGJrKuVqdnzb2LqSzdNWkKte25hSIv21satgHM2of7oFzjFB2N/hMx5o+nOQgq0zZcA6Mvn0W3GFFZ1YAep3oyrxLh9+5ELi2JGXgJafiEJvr5J3YzSGOWrw== +alipay.serverUrl=https://openapi.alipay.com/gateway.do +alipay.domain=http://2xpk7t.natappfree.cc/api +#回调地址 +alipay.notifyUrl=http://2xpk7t.natappfree.cc/api/aliPay/notify_url +# 支付宝CA根证书文件路径(alipay_root_cert_path 文件绝对路径) +alipay.RootCertPath=D:\\apliay\\alipayRootCert.crt +# 支付宝公钥证书文件路径(alipay_cert_path 文件绝对路径) +alipay.ALIPAY_PUBLIC_KEY=D:\\apliay\\alipayCertPublicKey_ + + + + + + diff --git a/docs/安卓APP证书/yxtmallapp.keystore b/docs/安卓APP证书/yxtmallapp.keystore new file mode 100644 index 0000000000000000000000000000000000000000..a28cbb4f95e59cb5098b20e01dcc7397d98b727a GIT binary patch literal 2205 zcmcJQ`#;kS8^^bOx3Mv&A(bIgLhC!rDO4hv<*=mCWR4-kn3|`=a+t^=%qecCNJQN? z<&ej+9CBD1Ig501Oc6J!d33*?`}Mk?Kj8V{`r-Zg<$7J8>w0}I;ev1h0)fD`3i?-} znO8ys-2DCBf`YcB*p#f3Di8<)09o)&Py&h8LPFtCO_($kih#gb@VT@1BeQVqf(d__D-$&CsbgK%&D)cd|(?092Z1VCRfJAbH*pmbkE@0>szHs#m1`aN!OSoBe^4O>MLlYDX+P6b<Di|V(TvXQLcLpzs9kYCQ`=rcAt$_!STt9CZm^%iXEy*FcKTM3P{zrC zsSbG((F!xColXjPzOWizhMp_Zvf-+z&;0q+GElE_{LVUIL?)vQF?!>#tc+m1v-^ByWsv$#p?$&Hu*U9 zW%Ci#G~idIc(tG`hS~0Sy&Y@6c;ZxpHf%D%&h}8A!78uMV<)Fjy4FD|>w%&0e0Y4! ziSVhq(z~#Kad)#Dkndz`j#Pb~eKlodOGU;VOFvvvg!I5;gP(0K`S4(sISfHfzqTjl zD*m46zEC;na{T}S9sDh8Zlh&-2_W_JK0%~8mw{)1?eao+6$K{fOB+MM&f`u8J<)NRkl%Xd z!`&QF)t?SKUYh4@lQZfWs{^gx9a+H%o$vNZ9E}Q=7vj7*&z{yK@&r6*cZYqO`&&W) z{U(K~YMRUtd#A0Z{gih!A{SHYc6dg#nSC?*(UqB~Pv4?rVe=ntsEPSkb?w+gsXk9x z^~-`$r3{Q<2w2bxmns$%;Mx^$&&Rb0APsaqy)AO7?JJtjT zj4~s2CVjQPzmXoTxh7B8bqycc&A)eE&{x?`riI{jo49G)D6$u;q(rY0H2E)GAO=WQf z0ZTy3;*4XG%+V?*qFh+6?IVY#zJau?qBS$WVZCoRMWPOe+ME9|!>79{H*3AW(^+k| z=tEDbUC|W?lK5qu+1Ee6MO{C@zc(l{cdD#epC;)LdqZ5&ILS#=j6T~^0@$0@dK&^C z;f#iXy2e6}YBbtnf;+sutPE-gQ={I!pc?Ht1X>@G9Da*`=fZQS=smbzW)tnlh%Put zB;%7TukB`yoy)MiB3pQ2py=Z8iysY;@Q6G7iOYN9oU}B#ww;PL>7R#jZ$Punzv2<$ zh}Q)TArQb8WC3K51tS&!FenTLH%O9n12IUHW~^oGpBN}q3;_Wh2x1@#2{^!!SeTg& zK>`&21)^AlkC(fbFF_nc|6&m=5aJj9H=(h>Rs#P`V*f(`7V!6FfGXQCIz&)MM;|2U z8t8(~3X(d6Ujj({ukinB%z~=^bHuF|0I;Bv5Re5$!&p%0R(8@aSJ{4kKJKGSP?vLp z)_jk9c*{u4_L--~e!w5{dnSKU?cu1(kEr1gNbYD<~WK+>fBIc{!+CFPbn;zP!(Hk#PBm^DH2QpLIY z5OFw}FHcKhMF+Oj@OF4|&2hHb*{mXt# zp-#8QoK*_W-y(yM9>}T7P~$#G(=_qZZ_PeY> z>{jf%Ac<1x=pT2K^}el*%OPmj(_buq8z)~KFs_FIPzbbm7pM&4wib(%fXl;W1HZS9 zq!xLpZku_tlb)d3RUSn>^iLDF?qthED1`ZB>DVqSIj!j36525G5Cv(<4rORad5xLg z7V4VpP-qqmO4a@}Q%<>HsoDBedru2H{d`b1+ile%Wq^uKAJtr>q4^Drou(H5Ri&LcZCELz&7B$|6?Fk+` zYL?JQMZY5KWtR$E-(vW8dZvR82$&S{lr@U literal 0 HcmV?d00001 diff --git a/mallplusui-uniapp-app/manifest.json b/mallplusui-uniapp-app/manifest.json index b503a51..5337e2b 100644 --- a/mallplusui-uniapp-app/manifest.json +++ b/mallplusui-uniapp-app/manifest.json @@ -77,7 +77,9 @@ "UniversalLinks" : "", "__platform__" : [ "android" ] }, - "alipay" : {} + "alipay" : { + "__platform__" : [ "android" ] + } }, "push" : {}, "maps" : { From 3e7d073515566ae7248486895a1af61eb7090fde Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Mon, 27 Feb 2023 18:23:10 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zscat/mallplus/alipay/AliPayApi.java | 24 +++- .../com/zscat/mallplus/alipay/AliPayBean.java | 4 + .../controller/alipay/AliPayController.java | 107 +++++++++++++++--- .../main/resources/application-dev.properties | 27 +++-- 4 files changed, 137 insertions(+), 25 deletions(-) diff --git a/mallplus-pay/src/main/java/com/zscat/mallplus/alipay/AliPayApi.java b/mallplus-pay/src/main/java/com/zscat/mallplus/alipay/AliPayApi.java index 69b1a83..073b35c 100644 --- a/mallplus-pay/src/main/java/com/zscat/mallplus/alipay/AliPayApi.java +++ b/mallplus-pay/src/main/java/com/zscat/mallplus/alipay/AliPayApi.java @@ -6,9 +6,12 @@ import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.domain.*; +import com.alipay.api.internal.util.AlipaySignature; import com.alipay.api.request.*; import com.alipay.api.response.*; import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -53,13 +56,32 @@ public class AliPayApi { * @throws AlipayApiException 支付宝 Api 异常 */ public static AlipayTradeAppPayResponse appPayToResponse(AlipayTradeAppPayModel model, String notifyUrl, AliPayApiConfig aliPayApiConfig) throws AlipayApiException { - AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); + AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); request.setBizModel(model); request.setNotifyUrl(notifyUrl); + request.setBizContent(model.toString()); AlipayTradeAppPayResponse response = aliPayApiConfig.getAliPayClient().sdkExecute(request); System.out.println(response.getBody()); return aliPayApiConfig.getAliPayClient().sdkExecute(request); } + public static AlipayTradeAppPayResponse appPayToResponse1(AlipayTradeAppPayModel model, String notifyUrl, AlipayClient alipayClient) throws AlipayApiException { + log.info("-----------支付宝支付:{}", JSONObject.toJSONString(alipayClient)); + AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); + request.setNotifyUrl(notifyUrl); +// JSONObject bizContent = new JSONObject(); +// bizContent.put("out_trade_no", model.getOutTradeNo()); +// bizContent.put("total_amount",model.getTotalAmount()); +// bizContent.put("subject", "测试商品"); +// bizContent.put("product_code", "QUICK_MSECURITY_PAY"); + request.setBizModel(model); +// request.setBizContent(bizContent.toString()); + AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);; + log.info("-----------支付宝同步结果--------------:{}", JSONObject.toJSONString(response)); + System.out.println(response.getBody()); + return response; + } + + /** * WAP支付 diff --git a/mallplus-pay/src/main/java/com/zscat/mallplus/alipay/AliPayBean.java b/mallplus-pay/src/main/java/com/zscat/mallplus/alipay/AliPayBean.java index 2dfabd2..f51719e 100644 --- a/mallplus-pay/src/main/java/com/zscat/mallplus/alipay/AliPayBean.java +++ b/mallplus-pay/src/main/java/com/zscat/mallplus/alipay/AliPayBean.java @@ -26,5 +26,9 @@ public class AliPayBean { private String serverUrl; private String domain; + private String rootCertPath; + private String certPath; + private String alipayPublicKey; + } diff --git a/mallplus-portal/src/main/java/com/zscat/mallplus/pay/controller/alipay/AliPayController.java b/mallplus-portal/src/main/java/com/zscat/mallplus/pay/controller/alipay/AliPayController.java index fffe458..57d2da8 100644 --- a/mallplus-portal/src/main/java/com/zscat/mallplus/pay/controller/alipay/AliPayController.java +++ b/mallplus-portal/src/main/java/com/zscat/mallplus/pay/controller/alipay/AliPayController.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; +import com.alipay.api.CertAlipayRequest; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.domain.*; import com.alipay.api.internal.util.AlipaySignature; @@ -35,6 +36,7 @@ import com.zscat.mallplus.utils.ValidatorUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @@ -65,10 +67,61 @@ import java.util.Map; @RequestMapping("/api/aliPay") public class AliPayController extends AbstractAliPayApiController { private static final Logger log = LoggerFactory.getLogger(AliPayController.class); + + @Value("${alipay.domain}") + private String DOMAIN; + + @Value("${alipay.appId}") + private String APPID; + /** + * 支付宝公钥 + */ + @Value("${alipay.ALIPAY_PUBLIC_KEY}") + private String ALIPAY_PUBLIC_KEY; + /** + * 支付宝网关 + */ + @Value("${alipay.serverUrl}") + private String GATE; + + /** + * 编码方式 + */ + private String CHARSET = "utf-8"; + + /** + * 回调地址 + */ + @Value("${alipay.notifyUrl}") + private String NOTIFY_URL; + /** + * 支付宝CA根证书文件路径(alipay_root_cert_path 文件绝对路径) + */ + @Value("${alipay.RootCertPath}") + private String RootCertPath; + + /** + * 应用公钥证书路径(app_cert_path 文件绝对路径) + */ + @Value("${alipay.CertPath}") + private String CertPath; + + private String SignType = "RSA2"; + + /** + * 应用私钥 + */ + @Value("${alipay.privateKey}") + private String APP_PRIVATE_KEY; + + String domain = ""; String privateKey = ""; + //支付宝公钥 String publicKey = ""; + //支付宝支付业务:app_id String appId = ""; + @Resource private IOmsOrderService orderService; @Resource @@ -91,10 +144,10 @@ public class AliPayController extends AbstractAliPayApiController { aliPayApiConfig = AliPayApiConfig.builder() .setAppId(aliPayBean.getAppId()) .setAliPayPublicKey(aliPayBean.getPublicKey()) - .setCharset("UTF-8") + .setCharset(CHARSET) .setPrivateKey(aliPayBean.getPrivateKey()) .setServiceUrl(aliPayBean.getServerUrl()) - .setSignType("RSA2") + .setSignType(SignType) .build(); domain = aliPayBean.getDomain(); privateKey = aliPayBean.getPrivateKey(); @@ -104,29 +157,52 @@ public class AliPayController extends AbstractAliPayApiController { } catch (Exception e) { AliPayBean aliPayBean = new AliPayBean(); - aliPayBean.setAppId("2018082761134635"); - aliPayBean.setDomain("http://www.yyundong.com:8083/api"); - //aliPayBean.setDomain("http://26077a35f5.wicp.vip:43609/api"); - aliPayBean.setServerUrl("https://openapi.alipay.com/gateway.do"); - aliPayBean.setPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlOOOOWg4e2deSDMRG2y5EzG7/udMfTzYkn4u/3PWIOlpcUd2ujCztqKY2HdFhIaWE4q8PCLtT5XtBWCq2IVvpCPE8HRzgSZckh6J36SnO0JG1pZe8HajUgIw+T1NM7/b2Nb4OaI5HKNsQ5ei9NlN9RvlIUSpum/nIyk/9CBvNAg8xUlHUFPaPL0WCMJ9zIwRO+aEn2kwA7JQ8AvjuPy390oil0W4fxfHonJYxuzOo6Lx369Vti5N9UmXczXUcOiVwyCveoH05chNr3r8xu5QqpD1o32cO01Zt4EA9j6aM2H09g08VzoLam2OoU3umKOV0vvX+bMmb1GwrkussSvDpQIDAQAB"); - aliPayBean.setPrivateKey("MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCjI8p9Vh3QrBsa2BdTLAa9YrPGdHAo4DeYx79rlrITI4kIwy6/q/JDaXNBQgl80mUYh4Zinc0mDZ68n14zIL0f4At+EzzfxT5RIVYKZb/EEj6ijElldvijblcCAkrcoTl+oWDEKEOyyJW2UFbRIUYUZcszfi+pue1BIdvwlfxHTI77o1H6d2ApkyIHgs6zYeeauDkYYTdAjSCV7PHhTO6H6yS5uyc0rOLxUTdABA+b+ewSnTw2uvuVTTnrC7xIqjfj1fRocsNh/1KfqF4I5iMQmrRaIlujRSTQrO7kLVbYW45D+Qr4mB3TlhTGAFcTL+ovugA+66NASZmUyNsZHcBZAgMBAAECggEAao+eXHA72WoR6l7sHW/Mlzg5pY+5E3oh1rHi3yv39XhoskiL6Lcv78iZeC7ic54aWwNrTE83CXwsC5kttsfTwVZfK2L1iFUWd3gG85OyxygDsblg1932Wwpf2vgUXjkRjR1sT7TdQ5Kx9/xSORg65mf3axMpnvvLdZfgSi4uM4NJ94NzCLwH7zSWuK6CsPfl24RQlQfczRUy4GzG+wtXjDj5XLNNO6GQacQY4BUkcjCfrkUrQ9Lf2joYiXRyVNWUN1HivmfMouG37WQhUzz0CL8tF1EfooCfPhetAF5Aursve3O8l0Lno6K1auziN8g/Jfuo+efKfImzwvyo3m1n4QKBgQDjtfOWqcVP611OSTm1L1RFHCJMZN5wgOLEquO/2VC4VItV7vy0odNrLydd9Eg77VbC0IVcqunQIHjON3fFEVlj0bEVOaEN+X26oP84UNBK12QcLWvxxXQvOyaXg0hqgae5dpG5LvZHIP6b27jF3IuTG3lILZDjZsO9NcZbBr+NGwKBgQC3aD5VAUjCn+xnHIzGd0/avFYIGzqGUw2hZfFfuI3r58gRo/bjlOny7jLTxOFa+2SGggdDVm/izWut2FacNr3/GVTkcZc6ZEIXWq793vFky69PwGj24bCbplLYaCWM79HczM9sIWBl5WKmI7k1O/AIJrPteTa/Du/T+IfcATQDmwKBgQCCNjXI3eP6w3hjn/Pj6+CgdGoYjUW1x73lAGOj/Tzva0kSJstS74baL+ivDVWRDzMhy+O3DfUOEsOCCK3wfu9C6VH99Spnt1dyNUY8idnSMkEI6+BiLKs3pvd2hJgQb3vdzjOeVYB3RCLUNVz/qBIYWQmNgKDtqIId3HZE7yLyKQKBgQCq4Blq00Z55cu4CZZy9ghVL7Er3kp5iXmijLsExoqbZpg1L0E/qacJ6bk7KiwXuy5eT1j6+NZHRcHz9yJCapI70NsR927BPVWCMr/k0Uiv80FDmW1xzrXfXmfDLc0GcQ1inQMHqFUKultdlNziZxRsU7rBHnTOLtls8RmK9SgDzwKBgBnWfQNVF/BSIP/pOkudu966DwqySamzy/HrdOIq92r+OtAWqtLMq8bbIkMW1asC8+MLE81JD9fn7YmKeZTbMwxE2z5Tv1z+UUqy//79Vkj8FmlSfY0kraj9ZXjMp+Hg0kCpavOU4QFXONn2LVvrrh0tACcgJoJGRJJYuJMQeu7c"); + //APPID 即创建应用后生成,详情见创建应用并获取 APPID + aliPayBean.setAppId(APPID); + //gateway:支付宝网关(固定)https://openapi.alipay.com/gateway.do + aliPayBean.setServerUrl(GATE); + //开发者应用私钥,由开发者自己生成 + aliPayBean.setPrivateKey(APP_PRIVATE_KEY); + aliPayBean.setDomain(DOMAIN); + aliPayBean.setAlipayPublicKey(ALIPAY_PUBLIC_KEY); + aliPayBean.setCertPath(CertPath); + aliPayBean.setRootCertPath(RootCertPath); + aliPayApiConfig = AliPayApiConfig.builder() .setAppId(aliPayBean.getAppId()) - .setAliPayPublicKey(aliPayBean.getPublicKey()) - .setCharset("UTF-8") .setPrivateKey(aliPayBean.getPrivateKey()) + .setAliPayPublicKey(aliPayBean.getAlipayPublicKey()) + .setCharset(CHARSET) + .setSignType(SignType) .setServiceUrl(aliPayBean.getServerUrl()) - .setSignType("RSA2") + .setAppCertPath(aliPayBean.getCertPath()) + .setAliPayPublicKey(aliPayBean.getAlipayPublicKey()) + .setAliPayRootCertPath(aliPayBean.getRootCertPath()) .build(); domain = aliPayBean.getDomain(); privateKey = aliPayBean.getPrivateKey(); - publicKey = aliPayBean.getPublicKey(); + publicKey = aliPayBean.getAlipayPublicKey(); appId = aliPayBean.getAppId(); } return aliPayApiConfig; } + public AlipayClient alipayClient() throws AlipayApiException { + CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); + certAlipayRequest.setServerUrl(GATE); //gateway:支付宝网关(固定)https://openapi.alipay.com/gateway.do + certAlipayRequest.setAppId(APPID); //APPID 即创建应用后生成,详情见创建应用并获取 APPID + certAlipayRequest.setPrivateKey(APP_PRIVATE_KEY); //开发者应用私钥,由开发者自己生成 + certAlipayRequest.setFormat("json"); //参数返回格式,只支持 json 格式 + certAlipayRequest.setCharset(CHARSET); //请求和签名使用的字符编码格式,支持 GBK和 UTF-8 + certAlipayRequest.setSignType(SignType); //商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2。 + certAlipayRequest.setCertPath(CertPath); //应用公钥证书路径(app_cert_path 文件绝对路径) + certAlipayRequest.setAlipayPublicCertPath(ALIPAY_PUBLIC_KEY); //支付宝公钥证书文件路径(alipay_cert_path 文件绝对路径) + certAlipayRequest.setRootCertPath(RootCertPath); //支付宝CA根证书文件路径(alipay_root_cert_path 文件绝对路径) + AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest); + return alipayClient; + } + @RequestMapping("") @ResponseBody public String index() { @@ -168,9 +244,10 @@ public class AliPayController extends AbstractAliPayApiController { model.setOutTradeNo(orderInfo.getOrderSn()); model.setTimeoutExpress("30m"); model.setTotalAmount(orderInfo.getPayAmount().floatValue() + ""); - model.setPassbackParams("callback params"); +// model.setPassbackParams("callback params"); model.setProductCode("QUICK_MSECURITY_PAY"); - String order = AliPayApi.appPayToResponse(model, domain + "/aliPay/notify_url", this.getApiConfig()).getBody(); +// String order = AliPayApi.appPayToResponse1(model, domain + "/aliPay/notify_url", this.getApiConfig()).getBody(); + String order = AliPayApi.appPayToResponse1(model, domain + "/aliPay/notify_url", alipayClient()).getBody(); //String order = AliPayApi.appPayToResponse(model, domain, this.getApiConfig()).getBody(); System.out.println(JSONObject.toJSONString(orderInfo)); return new CommonResult().success(order); @@ -475,7 +552,7 @@ public class AliPayController extends AbstractAliPayApiController { public Object tradeRefund(AlipayTradeRefundModel model) { try { - // AlipayTradeRefundModel model = new AlipayTradeRefundModel(); + // AlipayTradeRefundModel model = new AlipayTradeRefundModel(); /*model.setOutTradeNo("081014283315023"); model.setTradeNo("2017081021001004200200273870"); model.setRefundAmount("86.00"); diff --git a/mallplus-portal/src/main/resources/application-dev.properties b/mallplus-portal/src/main/resources/application-dev.properties index 8f0662b..ad801e5 100644 --- a/mallplus-portal/src/main/resources/application-dev.properties +++ b/mallplus-portal/src/main/resources/application-dev.properties @@ -1,11 +1,6 @@ -spring.datasource.url=jdbc:mysql://8.130.39.13:3306/mallplus1?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8 -#spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mallplus1?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8 +spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mallplus1?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8 spring.datasource.username=root -spring.datasource.password=1LAiGz$t1*Iw -#spring.datasource.password=root -#spring.datasource.url=jdbc:mysql://39.104.142.92:3306/mallplus?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8 -#spring.datasource.username=root -#spring.datasource.password=123456 +spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.initialSize=5 @@ -43,13 +38,13 @@ mybatis-plus.configuration.cache-enabled=false #===mongodb end=== #===redis start=== # Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09 -spring.redis.database=4 +spring.redis.database=0 # Redis\u670D\u52A1\u5668\u5730\u5740 spring.redis.host=127.0.0.1 # Redis\u670D\u52A1\u5668\u8FDE\u63A5\u7AEF\u53E3 spring.redis.port=6379 # Redis\u670D\u52A1\u5668\u8FDE\u63A5\u5BC6\u7801\uFF08\u9ED8\u8BA4\u4E3A\u7A7A\uFF09 -spring.redis.password= +spring.redis.password=123456 # \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09 spring.redis.pool.max-active=8 # \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09 @@ -91,3 +86,17 @@ logging.level.com.mallplus.mall.ums.mapper=debug logistics.Kdniao.EBusinessID=test1627898 logistics.Kdniao.AppKey=5f1463ac-7fb7-4601-9a07-a43f4ff1ce1a logistics.Kdniao.ReqURL=http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json + +#支付宝相关配置 +alipay.appId=2018082761134635 +alipay.privateKey=MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCpYi38h2/25e4mNWo56mmwuwa7QbBbPdgH00rsmPI/+0JkYhda2uZDvtrFXWMLzVJ2ioh9pamcfUbb2LcFgLIJ0KJyTia4sVMHmbk9l8wPf9mE4aOYN8ix6olzkm9ZhDGVekx2niW/hf6bpjnh92+I4EZo4xsK3RAsQ9oDXPjrJzktrrerAP+5MNOY8wLRqOp0KU+bOIcsz4Wz+qD3UxP2PjXPJDvXu7NkYDndOc7G0tVnhzVahFafqAntbgQHMyJENhLl9xdbnYdiKQqZJUwfI9xlRKYk08P4YVYTL7dAGAibQJJamgqmmKo8uibDIMkLsTGNm5WzW3EErWOCl6wlAgMBAAECggEAXfyxgbdxRDHPlHn9KIfO/5a3pH5NqkNFtQnkQCaZ/TChZWwcg3iFXr/vSqaICAt1H3u9QuMCm2fUQrcczzvbDqErEnwU9lTGuqfs5qVtQIhznU1K5nLFtRtsC6oMiUJV9Rh4hzU3wu9KGPoCkkUnKW8xApBJ+Bw0FivMNCOJp4kipif0gXQFxDH14w8n4QAyG3keXYP43DPqlsjmjJm4inHajxNO012Snle5SqA5HaIrZzf9St3ctq1BzqgUaD5yyXPmPyi1sqjrK+A16R4DrbKlY2h3/mo1IIfPjYbjb/uPcHf9pDMxEFwYIZ+kkz0uUjRDNWVX3A7ldav8MvvZ/QKBgQDot2raw93blrEhld3GGY4JNxboi6UZ1guK2nDEjlnpZjDUklSlNsx82NM8g0bm76Q9A3WpuoHQoSGEIy9ElrMuNS7xj+PZe5mNyKFMBG8hKeIV3jx4OIU80aiV9OQLv6+AonavHvOLXu41OJKdoQexyz7q3lu0+i7d9KKbWd2SlwKBgQC6VJxj1KPh3kHtmm/d/5fOZUDLqxTOyexRrEUCj9hGjv5XymxULQPskKxasFKiPyn4TCp2ZOrPO1slu8IUpzaymM4DDQYtTQkbsAT/N6r9efCJTXDdTgm5iyTaILbSbqd01KEnqjmFLOSCpasvM47rARlG4IYXIXD9cXKj12AaowKBgAN7w2C079w6nDopeSFe/o5KwdAHTxhc6N1SOb/ndZcVzYNREW1LrbHsuPS97lDEo4u6Qoeg4BKUZuEIecuoCdSWPTamdb2qqPjDWQ6/Pj6b1uOG6RbPmcb4SHK+MK+wVdsyE165suGSMTSgvSkY4PmbVjzDyVGjMRJneAulQ7jPAoGAViCIDWkbu2q1xLNPJClhrSiGU94nhxI05uefGnkM+khcbo4Flr8cAjw5Ps4j1BUoPDpQolsxYkrIbd+k7VEBanpRN33MriHepOqu1J2RrwqvUXf3RIQu4JHdnenjN8+oHcuvFhuL7O/8TBtxziah2CSw318m/AgcJzpKSEtkg8sCgYB/cr6PuuQ7JpK2kYmwYMSwNvys0v31iSqFmJK6EyPRycGw9Wj/ANiGJrKuVqdnzb2LqSzdNWkKte25hSIv21satgHM2of7oFzjFB2N/hMx5o+nOQgq0zZcA6Mvn0W3GFFZ1YAep3oyrxLh9+5ELi2JGXgJafiEJvr5J3YzSGOWrw== +alipay.serverUrl=https://openapi.alipay.com/gateway.do +alipay.domain=http://2xpk7t.natappfree.cc/api +#回调地址 +alipay.notifyUrl=http://n748bm.natappfree.cc/api/aliPay/notify_url +# 支付宝CA根证书文件路径(alipay_root_cert_path 文件绝对路径) +alipay.RootCertPath=D:\\apliay\\alipayRootCert.crt +# 支付宝公钥证书文件路径(alipay_cert_path 文件绝对路径) +alipay.ALIPAY_PUBLIC_KEY=D:\\apliay\\alipayCertPublicKey_RSA2.crt +# 应用公钥证书路径(app_cert_path 文件绝对路径) +alipay.CertPath=D:\\apliay\\appCertPublicKey_2018082761134635.crt