1. 微信支付
这是用Golang封装了微信的所有API接口的SDK,并自动生成和解析XML数据,包括微信支付、公众号、小程序、移动端的工具函数。
- 支持境内普通商户和境内服务商(境外和银行服务商没有条件测试)。
- 支持全局配置应用ID、商家ID等信息。
- 全部参数和返回值均使用类型传递,而不是
map
类型。
1.1.2. 初始化
以下是通用的接口,使用上面初始化时生成的实例client
进行相应函数的调用。其中带有(*Client)
字样的接口,需要使用wechat.NewClient
创建的实例对象来调用,而不带的接口,则可以直接使用wechat.XXX
调用。
使用样例:
- 参数或返回值的类型,请查看接口对应的文件,里面有
XXXBody
和XXXResponse
与之对应。 - 参数或返回值中的常量,请参照constant.go文件。
- 具体使用方法,请参照接口对应的测试文件。
微信支付
对应文件:wx_pay_xxxxxx.go
- 提交付款码支付:
(*Client) Micropay
。 - 统一下单:
(*Client) UnifiedOrder
。 - 查询订单:
(*Client) QueryOrder
。 - 关闭订单:。
- 撤销订单:
(*Client) Reverse
。 - 申请退款:
(*Client) Refund
。 - 查询退款:
(*Client) QueryRefund
。 - 交易保障(JSAPI):
(*Client) ReportJsApi
。 - 交易保障(MICROPAY):
(*Client) ReportMicropay
。 - 下载资金账单:TODO,client.DownloadFundFlow()。
- 拉取订单评价数据:TODO,client.BatchQueryComment()。
- 企业付款到零钱:
(*Client) Change
。 - 查询企业付款到零钱:
(*Client) QueryChange
。
微信支付回调
对应文件:wx_notify_xxxxxx.go
- 支付回调:
(*Client) NotifyPay
。 - 退款回调:
(*Client) NotifyRefund
。
微信公众号
对应文件:
- 授权码查询OpenId:
(*Client) OpenIdByAuthCode
。 - 获取基础支持的AccessToken:
GetBasicAccessToken
。 - 获取用户基本信息(UnionId机制):
GetUserInfo
。 - 获取H5支付签名:
GetH5PaySign
。
微信小程序
- 获取小程序支付签名:
GetAppletPaySign
。 - 获取小程序码:
GetAppletUnlimitQrcode
。
移动端
对应文件:wx_app_xxxxxx.go
- 获取APP支付签名:
GetAppPaySign
。
1.1.4. 文档
- 微信支付文档:
- 随机数生成算法:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_3
- 签名生成算法:
- 交易金额:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2
- 交易类型:
- 货币类型:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2
- 时间规则:
- 时间戳:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2
- 商户订单号:
- 银行类型:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2
- 代金券或立减优惠:
- 最新县及县以上行政区划代码:https://pay.weixin.qq.com/wiki/doc/api/download/store_adress.csv
1.1.6. 测试方法
修改client_test.go
中的生成测试Client的代码,调整沙盒/生产环境、普通商户/服务商等选项,或者修改环境变量,来调整商户参数。
环境变量的脚本在env
文件中,修改后加载环境变量:
- 测试改为不同情境使用不同的用例。
- 继续调试境内普通商户和境内服务商的其他模块API文档。
- 选择性调试境外接口。
- 继续增加公众号和小程序相关接口。
- 移除开头的文件。