mirror of
https://github.com/dromara/payment-spring-boot.git
synced 2026-03-13 21:33:41 +08:00
3c5dd6105d0259f28bbcdb9a77afcd61c77740a8
移动支付 Spring Boot 组件
为了满足业务中出现app支付、公众号支付、小程序支付等多appid并存的场景,对原有的进行了增强开发出了多租户版本。
支持类型
- 微信支付V3 全量支持,并支持多租户。
- 支付宝 集成SDK,作简单适配。
进度
- 微信支付营销-代金券
WechatMarketingFavorApi100% - 微信支付 支付功能-普通支付直连模式
WechatDirectPayApi100%
采用技术
- Spring
- Jackson
- Ali-pay-sdk
使用方法
集成
以Spring Boot Starter的形式集成到项目中。
<dependency>
<groupId>cn.felord</groupId>
<artifactId>payment-spring-boot-starter</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>
配置
微信支付
在Spring Boot项目中的application.yaml中配置wechat.pay相关参数。
wechat:
pay:
v3:
# 租户id
<tentantID>:
# 应用appId 必填
app-id: xxxxxxxx
# api 密钥 必填
app-secret: xxxxxxxxxxx
# api v3 密钥 必填
app-v3-secret: xxxxxxxx
# 微信支付商户号 必填
mch-id: xxxxxxx
# 合作商 选填
partner-key:
# 商户服务器域名 用于回调 需要放开回调接口的安全策略 必填
domain: https://xxxx.xxx.com
# 商户 api 证书 必填
cert-path: apiclient_cert.p12
然后启用@EnableWechatPay注解:
@EnableMobilePay
@Configuration
public class PayConfig {
}
请注意:只有
wechat.pay.v3.app-id设置了有效值才能启用下面的API。
API使用
微信支付V3开放接口引入:
@Autowired
WechatApiProvider wechatApiProvider;
V3
例如V3 查询商户下的优惠券
// 查询商户下的优惠券
@Test
public void v3MchStocks() {
// 配置文件中对应的tenantID:
String tenantId =<tenantID>;
StocksQueryParams params = new StocksQueryParams();
params.setOffset(0);
params.setLimit(10);
WechatResponseEntity<ObjectNode> objectNodeWechatResponseEntity = wechatApiProvider.favorApi(tenantId).queryStocksByMch(params);
System.out.println("objectNodeWechatResponseEntity = " + objectNodeWechatResponseEntity);
}
支付宝
使用须知
请注意因为未来SHA1withRSA将被淘汰,因此采用最新的SHA256withRSA证书,旧的模式将不提供支持。步骤如下:
1.使用支付宝开发助手申请CSR文件
2.上传CSR设置证书
上传成功后需要下载证书,和配置的对应关系为:
项目开发配置
在Spring Boot项目中的application.yaml中配置ali.pay相关参数。
ali:
pay:
v1:
# 可以替换为沙箱
server-url: https://openapi.alipaydev.com/gateway.do
# 蚂蚁开放平台申请并认证的应用appId
app-id: 2016102700769563
app-private-key-path: META-INF/app_rsa
alipay-public-cert-path: META-INF/alipayCertPublicKey_RSA2.crt
alipay-root-cert-path: META-INF/alipayRootCert.crt
app-cert-public-key-path: META-INF/appCertPublicKey_2016102700769563.crt
charset: utf-8
format: json
sign-type: RSA2
请注意:只有
ali.pay.v1.app-id设置了有效值才能启用下面的API。
API的使用
引入接口:
@Autowired
AlipayClient alipayClient;
调用,以现金红包为例:
@SneakyThrows
public void campaignCash() {
AlipayMarketingCampaignCashCreateRequest request = new AlipayMarketingCampaignCashCreateRequest();
request.setBizContent("{" +
"\"coupon_name\":\"XXX周年庆红包\"," +
"\"prize_type\":\"random\"," +
"\"total_money\":\"10000.00\"," +
"\"total_num\":\"1000\"," +
"\"prize_msg\":\"XXX送您大红包\"," +
"\"start_time\":\"2020-11-02 22:48:30\"," +
"\"end_time\":\"2020-12-01 22:48:30\"," +
"\"merchant_link\":\"http://www.weibo.com\"," +
"\"send_freqency\":\"D3|L10\"" +
" }");
AlipayMarketingCampaignCashCreateResponse execute = alipayClient.certificateExecute(request);
System.out.println("execute = " + execute.getBody());
}
打印响应体:
{"alipay_marketing_campaign_cash_create_response":{"code":"40004","msg":"Business Failed","sub_code":"isv.UNKNOW_SYSTEM_ERROR","sub_msg":"系统繁忙,请稍后再试"},"alipay_cert_sn":"e65893247c520d9d46db3000158505ee","sign":"M7gyi6ZwnRoHmdzd1IIxLc+XEE1pCx6ptOyQP4aRGMc01bJebNL7PbMpfU7TcB75KHmk3Oor2fYZfVEB7+5gxV9YwMuW3QtZbyACw3Gzt7wz4D1YCXkQD9PRvSsgw8xgNL+WnZxEI2yFdSp47Mc/Um73M101zFeo2dYKYXyVRdsGxnipY8fZs0JaXlX5OoROfHDcbvzBDjQyernspIoFoNiAwpaBwyQcEzh8V34ca4Rep/LSyI4N4VtU0n2nq3dO0Jor36n0o4j0QobWSE3c8StkVjbdP5XJB+adE51MUmh7xDdixQXE2fTRKw5wYlBO9O3bpF/uw78hWW/y3JwG9Q=="}
CHANGELOG
1.0.0.RELEASE
- 支持微信支付V3、支付宝支付
- 微信支付多租户
Description
微信支付V3支付,支持微信优惠券,代金券、商家券、公众号支付、微信小程序支付、分账、支付分、商家券、合单支付、先享卡、电商收付通等全部微信支付功能API,同时满足服务商、商户开发需求。一键集成,上手快,欢迎star。
Readme
Apache-2.0
2.6 MiB
Languages
HTML
90.9%
Java
9%
CSS
0.1%



