diff --git a/api-third/src/main/java/com/heyu/api/jsapi/dto/WxPayVO.java b/api-third/src/main/java/com/heyu/api/jsapi/dto/WxPayVO.java index d09f7cd..f5d6a2e 100644 --- a/api-third/src/main/java/com/heyu/api/jsapi/dto/WxPayVO.java +++ b/api-third/src/main/java/com/heyu/api/jsapi/dto/WxPayVO.java @@ -14,6 +14,10 @@ public class WxPayVO { private String paySign; // 商户号 private String mchid; + /*** + * 签名类型 + */ + private String signType = "RSA"; } diff --git a/api-third/src/main/java/com/heyu/api/jsapi/utils/PemUtil.java b/api-third/src/main/java/com/heyu/api/jsapi/utils/PemUtil.java index 266cb5f..2c502da 100644 --- a/api-third/src/main/java/com/heyu/api/jsapi/utils/PemUtil.java +++ b/api-third/src/main/java/com/heyu/api/jsapi/utils/PemUtil.java @@ -96,7 +96,7 @@ public class PemUtil { * @return RSA私钥 */ public static PrivateKey loadPrivateKeyFromPath(String keyPath) { - return loadPrivateKeyFromString(readKeyStringFromPath(keyPath)); + return loadPrivateKeyFromString(keyPath); } /** diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java index 7b5ed8b..c5722ba 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java @@ -361,13 +361,11 @@ public class AppOrderController { message.getMessageProperties().setDelay((second) * 1000); // 毫秒为单位,指定此消息的延时时长 ,+ 1 尽量保证机器人跑完了,再发送消息 return message; }); - } WxPayVO vo = new WxPayVO(); Long timeStamp = System.currentTimeMillis() / 1000; String nonceStr = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32); - String signatureStr = Stream.of(appid, String.valueOf(timeStamp), nonceStr, "prepay_id=" + prepay_id) .collect(Collectors.joining("\n", "", "\n")); @@ -376,21 +374,16 @@ public class AppOrderController { // "package": "prepay_id=wx201410272009395522657a690389285100", // "signType": "RSA", // "paySign": "oR9d", - String sign = JsapiPrepay.getSign(signatureStr, privateKey); vo.setNonceStr(nonceStr); vo.setTimeStamp(timeStamp); vo.setMchid(mchid); vo.setPaySign(sign); vo.setPrepayId("prepay_id=" + prepay_id); - return R.ok().setData(vo); } - - - @Describe("删除订单") @RequestMapping("/delete") public R add(@RequestBody VvTradeOrderDeleteDTO vvOrderRequest) { @@ -401,8 +394,6 @@ public class AppOrderController { return R.ok(); } - - /*** * 订单 妥投 /app/order/delivered */ diff --git a/api-web/api-interface/src/test/java/com/api/test/TestJSAPI.java b/api-web/api-interface/src/test/java/com/api/test/TestJSAPI.java index a84ea5f..e2098a5 100644 --- a/api-web/api-interface/src/test/java/com/api/test/TestJSAPI.java +++ b/api-web/api-interface/src/test/java/com/api/test/TestJSAPI.java @@ -3,10 +3,11 @@ package com.api.test; import com.alibaba.fastjson.JSON; import com.heyu.api.jsapi.JsapiPrepay; import com.heyu.api.jsapi.WXPayUtility; -import com.heyu.api.jsapi.dto.CommonAmountInfo; -import com.heyu.api.jsapi.dto.DirectAPIv3JsapiPrepayRequest; -import com.heyu.api.jsapi.dto.DirectAPIv3JsapiPrepayResponse; -import com.heyu.api.jsapi.dto.JsapiReqPayerInfo; +import com.heyu.api.jsapi.dto.*; + +import java.util.UUID; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class TestJSAPI { @@ -107,6 +108,30 @@ public class TestJSAPI { try { DirectAPIv3JsapiPrepayResponse response = client.doPay(request); System.out.println(JSON.toJSONString(response)); + + String prepay_id = response.getPrepayId(); + + + WxPayVO vo = new WxPayVO(); + Long timeStamp = System.currentTimeMillis() / 1000; + String nonceStr = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32); + + String signatureStr = Stream.of(appid, String.valueOf(timeStamp), nonceStr, "prepay_id=" + prepay_id) + .collect(Collectors.joining("\n", "", "\n")); + + // "timeStamp": "1414561699", + // "nonceStr": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS", + // "package": "prepay_id=wx201410272009395522657a690389285100", + // "signType": "RSA", + // "paySign": "oR9d", + + String sign = JsapiPrepay.getSign(signatureStr, privateKey); + vo.setNonceStr(nonceStr); + vo.setTimeStamp(timeStamp); + vo.setMchid(mchid); + vo.setPaySign(sign); + vo.setPrepayId("prepay_id=" + prepay_id); + System.out.println(JSON.toJSONString(vo)); // TODO: 请求成功,继续业务逻辑 System.out.println(response); } catch (Exception e) {