Skip to content

Latest commit

 

History

History
190 lines (141 loc) · 5.42 KB

README.md

File metadata and controls

190 lines (141 loc) · 5.42 KB

欢迎使用 Pay-Assistant

Maven License SpringBoot

简介

支付助手 - 简化配置,注解带飞!

特点

基于微信支付API、支付宝支付API封装

  • 简单注解配置,即可实现支付相关操作
  • 省掉碍眼繁琐的签名与验签,简化支付交互过程
  • 透传返回交互结果

使用指引

引入依赖

implementation("cool.doudou:pay-assistant-boot-starter: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:mm:ss+TIMEZONE 格式为yyyy-MM-dd HH:mm:ss
attach 附加数据 在查询API和支付通知中原样返回 在异步通知、对账单中原样返回
uid 用户ID 用户标识 买家支付宝用户ID

退款

参数 名称 微信 支付宝
outTradeNo 商户订单号 数字、大小写字母_-*且在同一个商户号下唯一 字母、数字、下划线且需保证在商户端不重复
outRefundNo 退款单号 商户系统内部唯一,只能是数字、大小写字母_-*@、竖线 标识一次退款请求,需要保证在交易号下唯一
reason 退款原因 - -
money 总金额 单位为分 无此参数
refundMoney 退款金额 单位为分 单位为元

账单

  • 微信交易账单需要两步:首先tradeBill获取账单地址,然后downloadBill返回字节数组数据流
  • 支付宝交易账单需要一步:tradeBill获取账单地址,自行请求下载文件

使用方式

下单、查询、关闭、退款、交易账单

  • PayModeEnum.WX:微信
  • PayModeEnum.ALI:支付宝
@Component
public class PayComponent {
    @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);
    }
}

其他说明

支付通知URL:系统会根据注解@WxPayNotify、@AliPayNotify回调方法

  • 微信:/pay-notify/wx
  • 支付宝:/pay-notify/ali

支付宝RSA私钥字符串转换成pem文件

  • openssl命令生成PKCS1格式密钥文件 *.pem,文件以-----BEGIN RSA PRIVATE KEY-----开头
openssl rsa -inform PEM -in *.txt -outform PEM -out *.pem
  • openssl命令转换成PKCS8格式密钥文件 *.pem,文件以-----BEGIN PRIVATE KEY-----开头
openssl pkcs8 -topk8 -inform PEM -in *.pem -outform PEM -out *_pkcs8.pem -nocrypt

支付宝RSA公钥字符串转换成pem文件

  • txt文件:开头添加-----BEGIN PUBLIC KEY-----,结尾添加-----END PUBLIC KEY-----,更改后缀名为.pem即可

版权

Apache License 2.0

鼓励一下,喝杯咖啡

欢迎提出宝贵意见,不断完善 MQ-Assistant

鼓励一下,喝杯咖啡