# wxpay-sdk说明
> 我们在开发微信支付时,发现微信官方已经对SDK做了升级,V3版本的SDK从设计上符合RESTful规范。 我们再在开源库中寻找是否有现成的开箱即用、并且支持响应式编程的SDK版本。经过一凡寻找,令我们失望。github上的一些微信支付SDK版本,从设计上多多少少都有一些问题,因此我们决定重新开发一套基于Java的V3版本的支付SDK, 并且用于我们的产品。
微信支付v3版本的sdk, 目前包含同步API和异步API。用户可以使用此API 版本在传统的命令式编程模式上,也可以使用异步API用于响应式编程。目前只支持微信 ==直连模式== 支付。
本SDK支持多商户模式。
## 同步API
用于传统命令式编程。 可以用于Spring MVC 或其他框架。目前httpClient 采用Apache-httpClient。
## 异步API
同时,我们也支持了异步接口,异步实现采用Project reactor。httpClient采用Spring Webflux的WebClient。
## 模块说明
- wxpay-v3-commons
- 微信v3接口的公共类定义, 同步异步均继承这个类,抽象了一些支付需要的公共方法和类放在这个模块中。
- wxpay-v3-reactor
- 微信v3的SDK, 基于ProjectReactor 封装了一些接口,和实现了一些API。本模块不依赖于Spring, 可以不在spring环境下使用。
- wxpay-v3-webflux
- 微信v3的SDK, 基于webflux来实现。 适用于spring环境。 用户可以用于异步或同步模式。 签名函数在拦截器中实现。
- wxpay-v3-block
- 基于命令式编程,封装了一些支付接口和实现了一些API。 本模块不依赖于其他框架,可以使用在任何java环境下。
- wxpay-v3-apache-httpclient
- 基于apache httpClient而实现的的版本。
**模块之间的依赖关系**(如果不想使用本SDK封装的接口,用户可以依赖wxpay-v3-commons模块自己封装API)
![relations](relations.png)
**同步接口请使用 wxpay-v3-apache-httpclient。**
**异步接口请使用wxpay-v3-webflux。**
## 实现的API
**注意: 目前只实现了直连模式API**
直连模式API描述
| 类型 | API名称 | 支持同步 | 支持异步 | 说明 |
| -------- | ----------------------- | -------- | -------- | ------------------------------------ |
| 预下单 | AppPrepay | 是 | 是 | APP下单API |
| 预下单 | H5Prepay | 是 | 是 | H5下单API |
| 预下单 | JSApiPrepay | 是 | 是 | JSAPI下单API |
| 预下单 | NativePrepay | 是 | 是 | Native下单API |
| 订单查询 | OrderTradeNoInquiry | 是 | 是 | 通过商户订单号查询 |
| 订单查询 | OrderTransactionInquiry | 是 | 是 | 通过微信支付订单号查询 |
| 订单查询 | OrderInquiry | 是 | 是 | 通过商户订单号或者微信支付订单号查询 |
| 订单关闭 | OrderClosure | 是 | 是 | 订单关闭 |
| 证书下载 | CertificatesDownloader | 是 | 是 | 微信证书下载 |
直连合单模式的AP描述(前缀添加"C")
| 类型 | API名称 | 支持同步 | 支持异步 | 说明 |
| -------- | ------------- | -------- | -------- | ---------------------------------------- |
| 预下单 | CAppPrepay | 是 | 是 | 合单APP下单API |
| 预下单 | CH5Prepay | 是 | 是 | 合单H5下单API |
| 预下单 | CJSApiPrepay | 是 | 是 | 合单JSAPI下单API |
| 预下单 | CNativePrepay | 是 | 是 | 合单Native下单API |
| 订单查询 | COrderInquiry | 是 | 是 | 合单通过商户订单号或者微信支付订单号查询 |
| 订单关闭 | COrderClosure | 是 | 是 | 合单订单关闭 |
# 注意
- 该模块只支持微信v3版本的SDK. 其他v1, v2版本不支持。
- 对于JSON的解析,本SDK 依赖于Gson来解析。
# 使用方法
## 同步接口
### 使用步骤
1. 构建ApiContext.
2. 构建对象调用接口
### 构建ApiContext示例代码
```java
// 注意导入的是同步的包。
import com.jk.wxpay.v3.apache.MemoryCacheCertificatesManager;
import com.jk.wxpay.v3.apache.SimpleMerchantPrivateKeyManager;
import com.jk.wxpay.v3.apache.http.ApiContextBuilder;
import com.jk.wxpay.v3.block.api.direct.OrderClosure;
import com.jk.wxpay.v3.block.api.direct.prepay.AppPrepay;
import com.jk.wxpay.v3.block.api.direct.prepay.JsApiPrepay;
import com.jk.wxpay.v3.block.api.direct.prepay.NativePrepay;
import com.jk.wxpay.v3.block.request.ApiContext;
import com.jk.wxpay.v3.commons.bean.direct.JSAPIPrepayOrder;
import com.jk.wxpay.v3.commons.bean.direct.PrepayOrder;
import com.jk.wxpay.v3.commons.bean.direct.result.NativePrepayResult;
import com.jk.wxpay.v3.commons.bean.direct.result.PrepayResult;
import com.jk.wxpay.v3.commons.exception.WxPayException;
private ApiContext init() {
// 构建商户私钥管理器, 一个简单的管理。
SimpleMerchantPrivateKeyManager privateKeyManager = new SimpleMerchantPrivateKeyManager()
.setCertSerialNumber("xxxxx") // 商户证书编号。
.setPrivateKeyPath("cert/my-cert-key.pem") // 账户私钥文件
.setApiV3Key("xxxxxx"); // 商户在微信商户平台上的apiV3key。
// 构建微信证书管理器, 这个管理器默认证书自动下载,且存储在内存中。
MemoryCacheCertificatesManager certificatesManager = new MemoryCacheCertificatesManager(privateKeyManager);
// 构建apiContext.
ApiContext apiContext = new ApiContextBuilder().setMerchantPrivateKeyManager(privateKeyManager)
.setWxCertificatesManager(certificatesManager).build();
return apiContext;
}
```
### 调用下单接口
```java
// App下载支付
try {
AppPrepay appPrepay = new AppPrepay(this.apiContext);
PrepayResult result = appPrepay.prepay(new PrepayOrder()
.setMchId("xxx")
.setAppId("xx").setOutTradeNo("xxxxxxxx"));
System.out.println(result);
} catch (WxErrorException e) {
e.printStackTrace();
}
// Native下单支付
try {
NativePrepay nativePrepay = new NativePrepay(this.apiContext);
NativePrepayResult result = nativePrepay.prepay(new PrepayOrder()
.setMchId("xxx")
.setAppId("xx").setOutTradeNo("xxxxxxxx"));
System.out.println(result);
} catch (WxErrorException e) {
e.printStackTrace();
}
// JSAPI下账单支付
try {
JsApiPrepay jsApiPrepay = new JsApiPrepay(this.apiContext);
JSAPIPrepayOrder prepayOrder = new JSAPIPrepayOrder();
prepayOrder.setMchId("xxx").setAppId("111");
PrepayResult result = jsApiPrepay.prepay(prepayOrder);
System.out.println(result);
} catch (WxErrorException e) {
e.printStackTrace();
}
// ........其他支付接口不再演示。
```
### 关闭订单
```java
// 调用对象直接关闭,关闭无返回值。不抛出异常说明关闭完成。
try {
new OrderClosure(this.apiContext)
.close("merchantId", "outTradeNo");
} catch (WxErrorException e) {
e.printStackTrace();
}
```
### 查询订单
```java
// 支持按照商户订单号查询或者微信交易号查询。
try {
OrderInquiry orderInquiry = new OrderInquiry(this.apiContext);
OrderQueryResult orderQueryResult1 = orderInquiry.queryByOutTradeNo("mchId", "outTradeNo");
OrderQueryResult orderQue
没有合适的资源?快使用搜索试试~ 我知道了~
wxpay-sdk-v3开箱即用, 实现了 _微_ _信_ 支付V3版本的SDK, 包括命令式和异步编程SDK
共170个文件
java:151个
gradle:7个
pem:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 192 浏览量
2023-07-11
15:27:50
上传
评论
收藏 300KB ZIP 举报
温馨提示
wxpay-sdk-v3开箱即用, 实现了 _微_ _信_ 支付V3版本的SDK, 包括命令式和异步编程SDK
资源推荐
资源详情
资源评论
收起资源包目录
wxpay-sdk-v3开箱即用, 实现了 _微_ _信_ 支付V3版本的SDK, 包括命令式和异步编程SDK (170个子文件)
gradlew.bat 3KB
.gitignore 397B
build.gradle 2KB
build.gradle 2KB
build.gradle 1KB
build.gradle 1KB
build.gradle 1KB
build.gradle 779B
settings.gradle 178B
gradlew 6KB
gradle-wrapper.jar 58KB
ExchangeFilter.java 6KB
OrderQueryResult.java 6KB
SyncTestController.java 6KB
FilterUtils.java 5KB
ExchangeFilter.java 5KB
RefundResponse.java 5KB
SubOrderResult.java 5KB
HttpRequestClient.java 5KB
AsyncTestController.java 5KB
PrepayOrderParams.java 5KB
HttpRequestClient.java 5KB
CPrepayOrderParams.java 5KB
FilterUtils.java 4KB
PrepayOrder.java 4KB
CPrepayOrder.java 4KB
JsonUtils.java 4KB
MemoryCacheCertificatesManager.java 4KB
PromotionDetail.java 4KB
MemoryCacheCertificatesManager.java 4KB
SimpleValueReceiver.java 4KB
SingleRequester.java 4KB
CertificatesDecoder.java 4KB
SingleRequester.java 4KB
RefundParams.java 3KB
PemUtils.java 3KB
HttpApiContextBuilder.java 3KB
ApiContextBuilder.java 3KB
HttpUtils.java 3KB
RefundRespPromotionDetail.java 3KB
WxErrorCode.java 3KB
SimpleMessageWriter.java 3KB
SubOrder.java 3KB
COrderQueryResult.java 3KB
OrderQuery.java 3KB
ApiContextBuilder.java 2KB
RefundRespGoodsDetail.java 2KB
AuthorizationUtils.java 2KB
SimpleMerchantPrivateKeyManager.java 2KB
RefundRespAmount.java 2KB
PrepayNotifyResource.java 2KB
PrepayNotifyData.java 2KB
SimpleMerchantPrivateKeyManager.java 2KB
CloseableHttpClientBuilder.java 2KB
OrderInquiry.java 2KB
VerificationUtils.java 2KB
GoodsDetail.java 2KB
OrderInquiry.java 2KB
Constants.java 2KB
RsaCryptoUtils.java 2KB
WxErrorException.java 2KB
AesUtil.java 2KB
AesUtils.java 2KB
QueryGoodsDetail.java 2KB
SubOrderCloseParams.java 2KB
WxPayException.java 2KB
SHA256SignUtils.java 2KB
DiscountDetail.java 2KB
OrderClosure.java 2KB
OrderClosure.java 1KB
QueryOrderAmount.java 1KB
SceneInfo.java 1KB
SimpleWxCertificatesManager.java 1KB
ValidationUtil.java 1KB
SimpleCertificatesManager.java 1KB
DecryptCertificateDescription.java 1KB
StoreInfo.java 1KB
COrderClosure.java 1KB
RefundAmount.java 1KB
SubOrderCloseInfo.java 1KB
EncryptCertificateDescription.java 1KB
QueryParams.java 1KB
CloseSubOrder.java 1KB
COrderClosure.java 1KB
EncryptCertificate.java 1KB
TradeState.java 1KB
TradeType.java 1KB
COrderQuery.java 1KB
CAppPrepay.java 1KB
JsApiPrepay.java 1KB
CJsApiPrepay.java 1KB
WxErrorDetail.java 1KB
CertificatesDownloader.java 1KB
RefundSourceAccount.java 1KB
AppPrepay.java 1KB
CNativePrepay.java 1KB
NativePrepay.java 1KB
OrderAmount.java 1KB
StringUtils.java 1KB
CH5Prepay.java 1KB
共 170 条
- 1
- 2
资源评论
GZM888888
- 粉丝: 177
- 资源: 2945
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功