提交修改

This commit is contained in:
quyixiao 2025-11-06 17:49:25 +08:00
parent 58c4a3717e
commit 9cc960158f
3 changed files with 182 additions and 4 deletions

View File

@ -2,8 +2,7 @@ package com.heyu.api.jsapi;
// 引用微信支付工具库参考https://pay.weixin.qq.com/doc/v3/merchant/4014931831
import com.heyu.api.jsapi.dto.DirectAPIv3JsapiPrepayRequest;
import com.heyu.api.jsapi.dto.DirectAPIv3JsapiPrepayResponse;
import com.heyu.api.jsapi.dto.*;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.springframework.stereotype.Component;
@ -12,6 +11,8 @@ import java.io.IOException;
import java.io.UncheckedIOException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.List;
/**
@ -45,7 +46,88 @@ public class JsapiPrepay {
}
public DirectAPIv3JsapiPrepayResponse rePay(DirectAPIv3JsapiPrepayRequest request) {
public DirectAPIv3JsapiPrepayResponse prePay(){
DirectAPIv3JsapiPrepayRequest request = new DirectAPIv3JsapiPrepayRequest();
request.setAppid("wx75fa59c097bd3dfd");
request.setMchid("1731491745");
request.setNotifyUrl("https://api.1024api.com/api-interface/app/weixin/payNotify");
request.setDescription("Image形象店-深圳腾大-QQ公仔");
request.setOutTradeNo("121775250");
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(5L);
commonAmountInfo.setCurrency("CNY");
request.setAmount(commonAmountInfo);
JsapiReqPayerInfo payer = new JsapiReqPayerInfo();
payer.setOpenid("o6t1512tT-JuBeT6rIu6RhF Gf3BQ");
request.setPayer(payer);
CouponInfo couponInfo = new CouponInfo();
couponInfo.setCostPrice(0L);
couponInfo.setInvoiceId("");
request.setDetail(couponInfo);
List<GoodsDetail> 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);
return null;
}
public DirectAPIv3JsapiPrepayResponse doPay(DirectAPIv3JsapiPrepayRequest request) {
String uri = PATH;
String reqBody = WXPayUtility.toJson(request);

View File

@ -0,0 +1,96 @@
package com.api.test;
import com.alibaba.fastjson.JSON;
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 Test2JSAPI {
public static void main(String[] args) {
// TODO: 请准备商户开发必要参数参考https://pay.weixin.qq.com/doc/v3/merchant/4013070756
JsapiPrepay client = new JsapiPrepay(
"1731491745", // 商户号是由微信支付系统生成并分配给每个商户的唯一标识符商户号获取方式参考 https://pay.weixin.qq.com/doc/v3/merchant/4013070756
"793D48CCEB62C6B227E0A4F46AD90279B149A7BE", // 商户API证书序列号如何获取请参考 https://pay.weixin.qq.com/doc/v3/merchant/4013053053
"/Users/quyixiao/Desktop/weixincert/apiclient_key.pem", // 商户API证书私钥文件路径本地文件路径
"PUB_KEY_ID_0117314917452025110400382304001401", // 微信支付公钥ID如何获取请参考 https://pay.weixin.qq.com/doc/v3/merchant/4013038816
"/Users/quyixiao/Desktop/weixincert/wxp_pub.pem" // 微信支付公钥文件路径本地文件路径
);
DirectAPIv3JsapiPrepayRequest request = new DirectAPIv3JsapiPrepayRequest();
request.setAppid("wx75fa59c097bd3dfd");
request.setMchid("1731491745");
request.setNotifyUrl("https://api.1024api.com/api-interface/app/weixin/payNotify");
request.setDescription("Image形象店-深圳腾大-QQ公仔");
request.setOutTradeNo("121775250");
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(5L);
commonAmountInfo.setCurrency("CNY");
request.setAmount(commonAmountInfo);
JsapiReqPayerInfo payer = new JsapiReqPayerInfo();
payer.setOpenid("o6t1512tT-JuBeT6rIu6RhF Gf3BQ");
request.setPayer(payer);
CouponInfo couponInfo = new CouponInfo();
couponInfo.setCostPrice(608800L);
couponInfo.setInvoiceId("微信123");
request.setDetail(couponInfo);
List<GoodsDetail> 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 {
DirectAPIv3JsapiPrepayResponse response = client.doPay(request);
System.out.println(JSON.toJSONString(response));
// TODO: 请求成功继续业务逻辑
System.out.println(response);
} catch (Exception e) {
// TODO: 请求失败根据状态码执行不同的逻辑
e.printStackTrace();
}
}
}

View File

@ -82,7 +82,7 @@ public class TestJSAPI {
try {
DirectAPIv3JsapiPrepayResponse response = client.rePay(request);
DirectAPIv3JsapiPrepayResponse response = client.doPay(request);
System.out.println(JSON.toJSONString(response));
// TODO: 请求成功继续业务逻辑
System.out.println(response);