From 3b5ae8d03e8fb30b6007d1093495bd24e73066ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Thu, 22 May 2025 18:14:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98v3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WechatPay2Controller.java | 151 ++++++++++++------ 1 file changed, 102 insertions(+), 49 deletions(-) diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/wechart/controller/WechatPay2Controller.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/wechart/controller/WechatPay2Controller.java index f635384..4be0b73 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/wechart/controller/WechatPay2Controller.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/wechart/controller/WechatPay2Controller.java @@ -1,17 +1,17 @@ package com.nu.modules.wechart.controller; - import cn.hutool.core.util.IdUtil; -import com.github.wxpay.sdk.WXPay; -import com.github.wxpay.sdk.WXPayConstants; -import com.github.wxpay.sdk.WXPayUtil; -import com.nu.modules.wechart.entity.WXConfig; import com.nu.modules.wechart.entity.WechatpayConfig; +import com.wechat.pay.java.core.Config; +import com.wechat.pay.java.core.RSAAutoCertificateConfig; + +import com.wechat.pay.java.service.payments.jsapi.JsapiService; +import com.wechat.pay.java.service.payments.jsapi.model.Amount; +import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest; +import com.wechat.pay.java.service.payments.jsapi.model.PrepayResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; - -import java.util.HashMap; import java.util.Map; @RestController @@ -28,49 +28,102 @@ public class WechatPay2Controller { */ @PostMapping("/native") public Map nativePay() throws Exception { - log.info("生成订单"); - //生成订单 - log.info("存入数据库..."); +// log.info("生成订单"); +// //生成订单 +// log.info("存入数据库..."); +// +// log.info("调用统一下单API"); +// // 订单号 +// String orderNo = IdUtil.simpleUUID(); +// // 请求body参数 看官方文档 +// WXConfig config = new WXConfig(); +// config.setAppId(wechatpayConfig.getAppid()); +// config.setMchId(wechatpayConfig.getMchId()); +// config.setKey(wechatpayConfig.getApiV3Key()); +// +// Map paramsMap = new HashMap<>(); +// paramsMap.put("appid", wechatpayConfig.getAppid()); +// paramsMap.put("mchid", wechatpayConfig.getMchId()); +// paramsMap.put("description", "测试微信jsapi支付"); +// paramsMap.put("out_trade_no", orderNo); +// // 回调的地址 +// paramsMap.put("notify_url",wechatpayConfig.getNotifyDomain()+"/native/notify"); +// +// Map amountMap = new HashMap(); +// //订单总金额,单位为分。 +// amountMap.put("total", 1); +// //CNY:人民币,境内商户号仅支持人民币。 +// amountMap.put("currency", "CNY"); +// paramsMap.put("total_fee", 1+""); +//// paramsMap.put("amount", amountMap.toString()); +// Map payer = new HashMap(); +// payer.put("openid", "oE3S76LTNliVGdi63ciiV9T2pqAU"); +// paramsMap.put("payer", payer.toString()); +// paramsMap.put("trade_type", "JSAPI"); +// String generateNonceStr = WXPayUtil.generateNonceStr(); +// paramsMap.put("nonce_str", generateNonceStr); +// +// String body = "护理单元"; +// paramsMap.put("body", body); +// +// log.info("请求参数1:" + paramsMap.toString()); +// +// Set keySet = paramsMap.keySet(); +// String[] keyArray = (String[])keySet.toArray(new String[keySet.size()]); +// Arrays.sort(keyArray); +// StringBuilder sb = new StringBuilder(); +// String[] var6 = keyArray; +// int var7 = keyArray.length; +// +// for(int var8 = 0; var8 < var7; ++var8) { +// String k = var6[var8]; +// if (!k.equals("sign") && ((String)paramsMap.get(k)).trim().length() > 0) { +// sb.append(k).append("=").append(((String)paramsMap.get(k)).trim()).append("&"); +// } +// } +// +// sb.append("key=").append( wechatpayConfig.getApiV3Key()); +// log.info("xml1:" + sb.toString()); +// +// String xml2 = WXPayUtil.mapToXml(paramsMap); +// log.info("xml2:" + xml2); +// +// String sign = WXPayUtil.generateSignature(paramsMap, wechatpayConfig.getApiV3Key(), WXPayConstants.SignType.MD5); +// log.info("sign:" + sign); +// paramsMap.put("sign", sign); +// +// log.info("请求参数2:" + paramsMap); +// +// WXPay wxpay = new WXPay(config); +// Map response = wxpay.unifiedOrder(paramsMap); +// for (String key : response.keySet()) { +// log.info("微信支付订单微信返回参数:keys:" + key + " value:" + response.get(key).toString()); +// } +// return null; - log.info("调用统一下单API"); - // 订单号 - String orderNo = IdUtil.simpleUUID(); - // 请求body参数 看官方文档 - WXConfig config = new WXConfig(); - config.setAppId(wechatpayConfig.getAppid()); - config.setMchId(wechatpayConfig.getMchId()); - config.setKey(wechatpayConfig.getApiV3Key()); - - Map paramsMap = new HashMap<>(); - paramsMap.put("appid", wechatpayConfig.getAppid()); - paramsMap.put("mchid", wechatpayConfig.getMchId()); - paramsMap.put("description", "iPhone 15 Pro Max 5G"); - paramsMap.put("out_trade_no", orderNo); - // 回调的地址 - paramsMap.put("notify_url",wechatpayConfig.getNotifyDomain()+"/native/notify"); - - Map amountMap = new HashMap(); - //订单总金额,单位为分。 - amountMap.put("total", 1); - //CNY:人民币,境内商户号仅支持人民币。 - amountMap.put("currency", "CNY"); - paramsMap.put("total_fee", 1+""); - paramsMap.put("trade_type", "JSAPI"); - String generateNonceStr = WXPayUtil.generateNonceStr(); - paramsMap.put("nonce_str", generateNonceStr); - String body = "body"; - paramsMap.put("body", body); - paramsMap.put("sign", WXPayUtil.generateSignature(paramsMap, wechatpayConfig.getApiV3Key(), WXPayConstants.SignType.MD5)); - - log.info("请求参数:" + paramsMap); - - - - WXPay wxpay = new WXPay(config); - Map response = wxpay.unifiedOrder(paramsMap); - for (String key : response.keySet()) { - log.info("微信支付订单微信返回参数:keys:" + key + " value:" + response.get(key).toString()); - } + Config config = + new RSAAutoCertificateConfig.Builder() + .merchantId(wechatpayConfig.getMchId()) + .privateKeyFromPath(wechatpayConfig.getPrivateKeyPath()) + .merchantSerialNumber(wechatpayConfig.getMchSerialNo()) + .apiV3Key(wechatpayConfig.getApiV3Key()) + .build(); + // 构建service + JsapiService service = new JsapiService.Builder().config(config).build(); + // request.setXxx(val)设置所需参数,具体参数可见Request定义 + PrepayRequest request = new PrepayRequest(); + Amount amount = new Amount(); + amount.setTotal(1); + request.setAmount(amount); + request.setAppid(wechatpayConfig.getAppid()); + request.setMchid(wechatpayConfig.getMchId()); + request.setDescription("测试商品标题"); + request.setNotifyUrl(wechatpayConfig.getNotifyDomain()); + request.setOutTradeNo(IdUtil.simpleUUID()); + // 调用下单方法,得到应答 + PrepayResponse response = service.prepay(request); + String prepayId = response.getPrepayId(); + log.info("prepayId:" + prepayId); return null; } }