celery-pay-assistant支付助手
支付助手 - 是一个基于微信支付API、支付宝支付API封装的Spring Boot Stater。通过简单注解配置即可进行支付交易。
主要特性
- 简单注解配置,即可实现支付相关操作
- 省掉碍眼繁琐的签名与验签,简化支付交互过程
- 透传返回交互结果
使用指引
引入依赖
implementation("cool.doudou:pay-assistant:latest")
配置文件
pay:
modes:
- wx
- ali
notify-server-address: http://127.0.0.1:8000
wx:
appId: wx000001
mchId: 14000001
private-key-path: /home/test.pem
private-key-serial-number: 70000000001
api-key-v3: abcdefg
ali:
appId: ali00001
private-key-path: /home/test.pem
public-key-path: /home/test-pub.pem
参数说明
下单
参数 | 名称 | 微信 | 支付宝 |
---|---|---|---|
outTradeNo | 商户订单号 | 数字、大小写字母_-*且在同一个商户号下唯一 | 字母、数字、下划线且需保证在商户端不重复 |
money | 总金额 | 单位为分 | 单位为元,精确到小数点后两位 |
description | 商品描述 | - | 不可使用特殊字符,如 /,=,& 等 |
timeExpire | 订单失效时间 | 格式为yyyy-MM-DDTHH🇲🇲ss+TIMEZONE | 格式为yyyy-MM-dd HH🇲🇲ss |
attach | 附加数据 | 在查询API和支付通知中原样返回 | 在异步通知、对账单中原样返回 |
uid | 用户ID | 用户标识 | 买家支付宝用户ID |
退款
参数 | 名称 | 微信 | 支付宝 |
---|---|---|---|
outTradeNo | 商户订单号 | 数字、大小写字母_-*且在同一个商户号下唯一 | 字母、数字、下划线且需保证在商户端不重复 |
outRefundNo | 退款单号 | 商户系统内部唯一,只能是数字、大小写字母_-*@、竖线 | 标识一次退款请求,需要保证在交易号下唯一 |
reason | 退款原因 | - | - |
money | 总金额 | 单位为分 | 无此参数 |
refundMoney | 退款金额 | 单位为分 | 单位为元 |
账单
- 微信交易账单需要两步:首先tradeBill获取账单地址,然后downloadBill返回字节数组数据流
- 支付宝交易账单需要一步:tradeBill获取账单地址,自行请求下载文件
使用方式
下单、查询、关闭、退款、交易账单
- PayModeEnum.WX:微信
- PayModeEnum.ALI:支付宝
@Service
public class PayService {
@Autowired
private PayHelper payHelper;
/**
* 下单
*/
public void place() {
PlaceOrderParam placeOrderParam = new PlaceOrderParam();
// ...
payHelper.place(PayModeEnum.WX, placeOrderParam);
}
/**
* 查询
*/
public void query() {
payHelper.query(PayModeEnum.WX, "xxxxxx00001");
}
/**
* 关闭
*/
public void close() {
payHelper.close(PayModeEnum.WX, "xxxxxx00001");
}
/**
* 退款
*/
public void refund() {
RefundParam refundParam = new RefundParam();
// ...
payHelper.refund(PayModeEnum.WX, refundParam);
}
/**
* 交易账单
*/
public void tradeBill() {
payHelper.tradeBill(PayModeEnum.WX, "2022-07-07");
}
}
支付通知
@Component
public class PayNotifyComponent {
/**
* 微信
*/
@WxPayNotify
public void wxPayNotify(String message) {
System.out.println(message);
}
/**
* 支付宝
*/
@AliPayNotify
public void aliPayNotify(String message) {
System.out.println(message);
}
}
评论