celery-pay-assistant​支付助手

联合创作 · 2023-09-30 04:29

​支付助手 - 是一个基于微信支付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);
    }
}

浏览 1
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报