package cn.iocoder.yudao.module.pay.framework.pay.core.client.impl.weixin; import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; import com.github.binarywang.wxpay.bean.request.WxPayRefundV3Request; import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request; import com.github.binarywang.wxpay.bean.result.WxPayRefundV3Result; import com.github.binarywang.wxpay.bean.result.enums.TradeTypeEnum; import com.github.binarywang.wxpay.config.WxPayConfig; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.WxPayService; import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import java.time.Duration; import static cn.iocoder.yudao.module.pay.framework.pay.core.client.impl.weixin.AbstractWxPayClient.formatDateV3; /** * {@link WxNativePayClient} 的集成测试,用于快速调试微信扫码支付 * * @author 芋道源码 */ @Disabled public class WxNativePayClientIntegrationTest { @Test public void testPayV3() throws WxPayException { // 创建 config 配置 WxPayConfig config = buildWxPayConfigV3(); // 创建 WxPayService 客户端 WxPayService client = new WxPayServiceImpl(); client.setConfig(config); // 执行发起支付 WxPayUnifiedOrderV3Request request = new WxPayUnifiedOrderV3Request() .setOutTradeNo(String.valueOf(System.currentTimeMillis())) .setDescription("测试支付-body") .setAmount(new WxPayUnifiedOrderV3Request.Amount().setTotal(1)) // 单位分 .setTimeExpire(formatDateV3(LocalDateTimeUtils.addTime(Duration.ofMinutes(2)))) .setSceneInfo(new WxPayUnifiedOrderV3Request.SceneInfo().setPayerClientIp("127.0.0.1")) .setNotifyUrl("http://127.0.0.1:48080"); System.out.println("========= request =========="); System.out.println(JsonUtils.toJsonPrettyString(request)); String response = client.createOrderV3(TradeTypeEnum.NATIVE, request); System.out.println("========= response =========="); System.out.println(JsonUtils.toJsonPrettyString(response)); } @Test public void testRefundV3() throws WxPayException { // 创建 config 配置 WxPayConfig config = buildWxPayConfigV3(); // 创建 WxPayService 客户端 WxPayService client = new WxPayServiceImpl(); client.setConfig(config); // 执行发起退款 WxPayRefundV3Request request = new WxPayRefundV3Request() .setOutTradeNo("1689545729695") .setOutRefundNo(String.valueOf(System.currentTimeMillis())) .setAmount(new WxPayRefundV3Request.Amount().setTotal(1).setRefund(1).setCurrency("CNY")) .setReason("就是想退了"); System.out.println("========= request =========="); System.out.println(JsonUtils.toJsonPrettyString(request)); WxPayRefundV3Result response = client.refundV3(request); System.out.println("========= response =========="); System.out.println(JsonUtils.toJsonPrettyString(response)); } private WxPayConfig buildWxPayConfigV3() { WxPayConfig config = new WxPayConfig(); config.setAppId("wx62056c0d5e8db250"); config.setMchId("1545083881"); config.setApiV3Key("459arNsYHl1mgkiO6H9ZH5KkhFXSxaA4"); // config.setCertSerialNo(serialNo); config.setPrivateCertPath("/Users/yunai/Downloads/wx_pay/apiclient_cert.pem"); config.setPrivateKeyPath("/Users/yunai/Downloads/wx_pay/apiclient_key.pem"); return config; } }