|
@@ -0,0 +1,84 @@
|
|
|
+package com.fs.course.controller;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import com.fs.FSAdminApplication;
|
|
|
+import com.fs.course.config.RedPacketConfig;
|
|
|
+import com.fs.system.service.ISysConfigService;
|
|
|
+import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
|
|
|
+import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request;
|
|
|
+import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult;
|
|
|
+import com.github.binarywang.wxpay.bean.result.enums.TradeTypeEnum;
|
|
|
+import com.github.binarywang.wxpay.config.WxPayConfig;
|
|
|
+import com.github.binarywang.wxpay.constant.WxPayConstants;
|
|
|
+import com.github.binarywang.wxpay.exception.WxPayException;
|
|
|
+import com.github.binarywang.wxpay.service.WxPayService;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.junit.jupiter.api.Test;
|
|
|
+import org.junit.runner.RunWith;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.boot.test.context.SpringBootTest;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+import static org.junit.jupiter.api.Assertions.*;
|
|
|
+
|
|
|
+@RunWith(org.springframework.test.context.junit4.SpringRunner.class)
|
|
|
+@SpringBootTest(classes = FSAdminApplication.class)
|
|
|
+@Slf4j
|
|
|
+class FsCourseDomainNameControllerTest {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private WxPayService wxPayService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysConfigService configService;
|
|
|
+ @Test
|
|
|
+ public void nativePay() throws WxPayException {
|
|
|
+ String json = configService.selectConfigByKey("redPacket.config");
|
|
|
+ RedPacketConfig config = JSONUtil.toBean(json, RedPacketConfig.class);
|
|
|
+
|
|
|
+ WxPayConfig payConfig = new WxPayConfig();
|
|
|
+ payConfig.setAppId("wx961fadab9bcb792b");
|
|
|
+ payConfig.setMchId("1716217886");
|
|
|
+ payConfig.setApiV3Key("BLIAwfgnGV0gwUtKOmyv1Kh1sST0z6ls");
|
|
|
+ payConfig.setPrivateKeyPath("C:\\cert\\1716217886_20250509_cert\\apiclient_key.pem");
|
|
|
+ payConfig.setPrivateCertPath("C:\\cert\\1716217886_20250509_cert\\apiclient_cert.pem");
|
|
|
+ payConfig.setCertSerialNo("4E8BD68BC2BFD37CA58244D660E5FDCCE475D82E");
|
|
|
+ payConfig.setUseSandboxEnv(false);
|
|
|
+ payConfig.setSignType(WxPayConstants.SignType.HMAC_SHA256);
|
|
|
+
|
|
|
+ wxPayService.setConfig(payConfig);
|
|
|
+
|
|
|
+ WxPayUnifiedOrderV3Request orderV3Request = createOrderV3Request();
|
|
|
+
|
|
|
+ WxPayUnifiedOrderResult result = wxPayService.createOrderV3(TradeTypeEnum.NATIVE,orderV3Request);
|
|
|
+
|
|
|
+ log.info("返回数据: {}",result);
|
|
|
+ }
|
|
|
+
|
|
|
+ private WxPayUnifiedOrderV3Request createOrderV3Request() {
|
|
|
+ WxPayUnifiedOrderV3Request request = new WxPayUnifiedOrderV3Request();
|
|
|
+
|
|
|
+ // 设置订单基本信息
|
|
|
+ WxPayUnifiedOrderV3Request.Amount amount = new WxPayUnifiedOrderV3Request.Amount();
|
|
|
+ amount.setTotal(1); // 金额,单位:分
|
|
|
+ amount.setCurrency("CNY"); // 币种
|
|
|
+
|
|
|
+ request.setAmount(amount);
|
|
|
+ request.setAppid("wx961fadab9bcb792b");
|
|
|
+ request.setMchid("1716217886");
|
|
|
+ request.setDescription("测试"); // 商品描述
|
|
|
+ request.setOutTradeNo("20250621170609"); // 商户订单号
|
|
|
+ request.setNotifyUrl("https://userapp.fbylive.com/app/wxpay/v3TransferNotify"); // 通知地址
|
|
|
+
|
|
|
+ // Native支付需要设置场景信息
|
|
|
+ WxPayUnifiedOrderV3Request.SceneInfo sceneInfo = new WxPayUnifiedOrderV3Request.SceneInfo();
|
|
|
+ sceneInfo.setPayerClientIp("127.0.0.1");
|
|
|
+ request.setSceneInfo(sceneInfo);
|
|
|
+
|
|
|
+ return request;
|
|
|
+ }
|
|
|
+}
|