diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 818d9cf..fc1edce 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -25,7 +25,7 @@
com.github.wechatpay-apiv3
wechatpay-java
- 0.2.12
+ 0.2.17
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java b/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java
index 3d4ff01..ef6607c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java
@@ -11,10 +11,15 @@ import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.member.domain.MemberOrder;
import com.ruoyi.member.service.IMemberOrderService;
import com.ruoyi.payConfig.WechatPayConfig;
-import com.ruoyi.payConfig.WechatPayRequest;
-import com.ruoyi.payConfig.WechatPayUrlEnum;
+
import com.wechat.pay.contrib.apache.httpclient.util.AesUtil;
-import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
+import com.wechat.pay.java.core.Config;
+import com.wechat.pay.java.core.RSAPublicKeyConfig;
+
+import com.wechat.pay.java.service.payments.jsapi.JsapiService;
+import com.wechat.pay.java.service.payments.jsapi.JsapiServiceExtension;
+import com.wechat.pay.java.service.payments.jsapi.model.*;
+import com.wechat.pay.java.service.payments.nativepay.NativePayService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -34,8 +39,7 @@ import java.util.Map;
public class PayApi {
@Resource
private WechatPayConfig wechatPayConfig;
- @Resource
- private WechatPayRequest wechatPayRequest;
+
@Autowired
private IMemberOrderService memberOrderService;
/**
@@ -45,41 +49,39 @@ public class PayApi {
*/
@ApiOperation(value = "统一下单-统一接口", notes = "统一下单-统一接口")
@GetMapping("/prepayment")
- public Map transactions(String type, Long orderNo) throws SignatureException, NoSuchAlgorithmException, InvalidKeyException, IOException {
+ public PrepayWithRequestPaymentResponse transactions(String type, String orderNo) throws SignatureException, NoSuchAlgorithmException, InvalidKeyException, IOException {
LambdaQueryWrapper queryWrapper =new LambdaQueryWrapper<>();
queryWrapper.eq(MemberOrder::getOrderNo,orderNo).last("limit 1");
MemberOrder memberOrder = memberOrderService.getOne(queryWrapper);
SysUser user = SecurityUtils.getLoginUser().getUser();
- // 统一参数封装
- Map params = new HashMap<>(8);
- params.put("appid", wechatPayConfig.getAppId());
- params.put("mchid", wechatPayConfig.getMchId());
- params.put("description", "开通会员");
- params.put("out_trade_no", orderNo.toString());
- params.put("notify_url", wechatPayConfig.getNotifyUrl());
- Map amountMap = new HashMap<>(4);
- BigDecimal goodsPrice = memberOrder.getGoodsPrice();
- // 金额单位为分
- amountMap.put("total", goodsPrice.multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).intValue());
- //人民币
- amountMap.put("currency", "CNY");
- params.put("amount", amountMap);
-
- // 场景信息
- Map sceneInfoMap = new HashMap<>(4);
- // 客户端IP
- sceneInfoMap.put("payer_client_ip", "127.0.0.1");
- // 商户端设备号(门店号或收银设备ID)
- sceneInfoMap.put("device_id", "127.0.0.1");
- // 除H5与JSAPI有特殊参数外,其他的支付方式都一样
- Map payerMap = new HashMap<>(4);
- payerMap.put("openid", user.getWxOpenId());
- params.put("payer", payerMap);
- params.put("scene_info", sceneInfoMap);
- String paramsStr = JSON.toJSONString(params);
- String resStr = wechatPayRequest.wechatHttpPost("https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi",paramsStr);
- Map resMap = JSONObject.parseObject(resStr, new TypeReference