微信支付v3
This commit is contained in:
parent
9ec69e8875
commit
3b5ae8d03e
|
@ -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<String,String> 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<String, String> 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<String> 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<String, String> 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<String, String> 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<String, String> 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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue