From 15f90adf8cd58662e98f5ca2d2995e237787143e Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Thu, 6 Nov 2025 18:05:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/heyu/api/jsapi/JsapiPrepay.java | 57 +++---------------- .../src/test/java/com/api/test/TestJSAPI.java | 40 +------------ 2 files changed, 9 insertions(+), 88 deletions(-) diff --git a/api-third/src/main/java/com/heyu/api/jsapi/JsapiPrepay.java b/api-third/src/main/java/com/heyu/api/jsapi/JsapiPrepay.java index acbc063..2f76ec2 100644 --- a/api-third/src/main/java/com/heyu/api/jsapi/JsapiPrepay.java +++ b/api-third/src/main/java/com/heyu/api/jsapi/JsapiPrepay.java @@ -2,7 +2,10 @@ package com.heyu.api.jsapi; // 引用微信支付工具库,参考:https://pay.weixin.qq.com/doc/v3/merchant/4014931831 -import com.heyu.api.jsapi.dto.*; +import com.heyu.api.jsapi.dto.CommonAmountInfo; +import com.heyu.api.jsapi.dto.DirectAPIv3JsapiPrepayRequest; +import com.heyu.api.jsapi.dto.DirectAPIv3JsapiPrepayResponse; +import com.heyu.api.jsapi.dto.JsapiReqPayerInfo; import lombok.extern.slf4j.Slf4j; import okhttp3.*; import org.springframework.beans.factory.annotation.Value; @@ -12,8 +15,6 @@ import java.io.IOException; import java.io.UncheckedIOException; import java.security.PrivateKey; import java.security.PublicKey; -import java.util.ArrayList; -import java.util.List; /** @@ -57,24 +58,22 @@ public class JsapiPrepay { } + public DirectAPIv3JsapiPrepayResponse prePay(String tradeOrderId, String skuInfo, Long amount, - String openid, - Long quantity + String openid ) { DirectAPIv3JsapiPrepayRequest request = new DirectAPIv3JsapiPrepayRequest(); request.setAppid(appid); request.setMchid(mchid); request.setNotifyUrl(notifyUrl); - request.setDescription(skuInfo); request.setOutTradeNo(tradeOrderId); request.setTimeExpire(WXPayUtility.generateExpireTime()); // 2025-11-05T21:02:16+08:00 request.setAttach("自定义数据说明"); request.setGoodsTag("WXG"); request.setSupportFapiao(false); - CommonAmountInfo commonAmountInfo = new CommonAmountInfo(); commonAmountInfo.setTotal(amount); commonAmountInfo.setCurrency("CNY"); @@ -83,48 +82,9 @@ public class JsapiPrepay { JsapiReqPayerInfo payer = new JsapiReqPayerInfo(); payer.setOpenid(openid); request.setPayer(payer); - - CouponInfo couponInfo = new CouponInfo(); - - couponInfo.setCostPrice(0L); - couponInfo.setInvoiceId(""); - request.setDetail(couponInfo); - List goodsDetails = new ArrayList<>(); - - GoodsDetail goodsDetailItem = new GoodsDetail(); - goodsDetailItem.setMerchantGoodsId("1246464644"); - goodsDetailItem.setWechatpayGoodsId("1001"); - goodsDetailItem.setGoodsName("iPhoneX 256G"); - goodsDetailItem.setQuantity(quantity); - goodsDetailItem.setUnitPrice(528800L); - - goodsDetails.add(goodsDetailItem); - couponInfo.setGoodsDetail(goodsDetails); - - CommonSceneInfo sceneInfo = new CommonSceneInfo(); - sceneInfo.setPayerClientIp("14.23.150.211"); - sceneInfo.setDeviceId("013467007045764"); - - StoreInfo setstoreInfo = new StoreInfo(); - - setstoreInfo.setId("0001"); - setstoreInfo.setName("腾讯大厦分店"); - setstoreInfo.setAreaCode("440305"); - setstoreInfo.setAddress("广东省深圳市南山区科技中一道10000号"); - - SettleInfo settleInfo = new SettleInfo(); - settleInfo.setProfitSharing(false); - - request.setSceneInfo(sceneInfo); - sceneInfo.setStoreInfo(setstoreInfo); - request.setSettleInfo(settleInfo); - - return null; + return doPay(request); } - - - public DirectAPIv3JsapiPrepayResponse doPay(DirectAPIv3JsapiPrepayRequest request) { String uri = PATH; String reqBody = WXPayUtility.toJson(request); @@ -136,12 +96,9 @@ public class JsapiPrepay { reqBuilder.addHeader("Content-Type", "application/json"); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), reqBody); reqBuilder.method(METHOD, requestBody); - Request httpRequest = reqBuilder.build(); - // 发送HTTP请求 OkHttpClient client = new OkHttpClient.Builder().build(); - try (Response httpResponse = client.newCall(httpRequest).execute()) { String respBody = WXPayUtility.extractBody(httpResponse); diff --git a/api-web/api-interface/src/test/java/com/api/test/TestJSAPI.java b/api-web/api-interface/src/test/java/com/api/test/TestJSAPI.java index efc1ad2..c7bedde 100644 --- a/api-web/api-interface/src/test/java/com/api/test/TestJSAPI.java +++ b/api-web/api-interface/src/test/java/com/api/test/TestJSAPI.java @@ -5,9 +5,6 @@ import com.heyu.api.jsapi.JsapiPrepay; import com.heyu.api.jsapi.WXPayUtility; import com.heyu.api.jsapi.dto.*; -import java.util.ArrayList; -import java.util.List; - public class TestJSAPI { @@ -27,14 +24,13 @@ public class TestJSAPI { request.setMchid("1731491745"); request.setNotifyUrl("https://api.1024api.com/api-interface/app/weixin/payNotify"); - - request.setDescription("Image形象店-深圳腾大-QQ公仔"); - request.setOutTradeNo("121775250"); + request.setOutTradeNo("12177525011"); request.setTimeExpire(WXPayUtility.generateExpireTime()); // 2025-11-05T21:02:16+08:00 request.setAttach("自定义数据说明"); request.setGoodsTag("WXG"); + request.setSupportFapiao(false); @@ -46,38 +42,6 @@ public class TestJSAPI { JsapiReqPayerInfo payer = new JsapiReqPayerInfo(); payer.setOpenid("o6t1512tT-JuBeT6rIu6RhFGf3BQ"); request.setPayer(payer); - CouponInfo couponInfo = new CouponInfo(); - - couponInfo.setCostPrice(608800L); - couponInfo.setInvoiceId("微信123"); - request.setDetail(couponInfo); - List goodsDetails = new ArrayList<>(); - - GoodsDetail goodsDetailItem = new GoodsDetail(); - goodsDetailItem.setMerchantGoodsId("1246464644"); - goodsDetailItem.setWechatpayGoodsId("1001"); - goodsDetailItem.setGoodsName("iPhoneX 256G"); - goodsDetailItem.setQuantity(1L); - goodsDetailItem.setUnitPrice(528800L); - goodsDetails.add(goodsDetailItem); - couponInfo.setGoodsDetail(goodsDetails); - - CommonSceneInfo sceneInfo = new CommonSceneInfo(); - sceneInfo.setPayerClientIp("14.23.150.211"); - sceneInfo.setDeviceId("013467007045764"); - - StoreInfo setstoreInfo = new StoreInfo(); - setstoreInfo.setId("0001"); - setstoreInfo.setName("腾讯大厦分店"); - setstoreInfo.setAreaCode("440305"); - setstoreInfo.setAddress("广东省深圳市南山区科技中一道10000号"); - - SettleInfo settleInfo = new SettleInfo(); - settleInfo.setProfitSharing(false); - - request.setSceneInfo(sceneInfo); - sceneInfo.setStoreInfo(setstoreInfo); - request.setSettleInfo(settleInfo); try {