1. 微信支付

这是用Golang封装了微信的所有API接口的SDK,并自动生成和解析XML数据,包括微信支付、公众号、小程序、移动端的工具函数。

  • 支持境内普通商户和境内服务商(境外和银行服务商没有条件测试)。
  • 支持全局配置应用ID、商家ID等信息。
  • 全部参数和返回值均使用struct类型传递,而不是map类型。

1.1.1. 安装

  1. go get -u gitee.com/cuckoopark/wechat

1.1.2. 初始化

  1. const (
  2. isProd = true // 生产环境或沙盒环境
  3. isMch = false // 是否是企业模式,仅当调用企业付款时为true
  4. serviceType = wechat.ServiceTypeNormalDomestic // 普通商户或服务商等类型
  5. apiKey = "xxxxxxxx" // 微信支付上设置的API Key
  6. certFilepath = "/xxx/yyy/apiclient_cert.p12" // 微信证书文件的本地路径,仅部分接口使用,如果不使用这些接口,可以传递空值
  7. )
  8. config := wechat.Config{
  9. AppId: AppID,
  10. MchId: MchID,
  11. SubAppId: SubAppId, // 仅服务商模式有效
  12. SubMchId: SubMchID, // 仅服务商模式有效
  13. }
  14. client := wechat.NewClient(isProd, isMch, serviceType, apiKey, certFilepath, config)

1.1.3. 使用

以下是通用的接口,使用上面初始化时生成的实例client进行相应函数的调用。其中带有(*Client)字样的接口,需要使用wechat.NewClient创建的实例对象来调用,而不带的接口,则可以直接使用wechat.XXX调用。

使用样例:

  1. func Test() {
  2. // 初始化参数
  3. body := wechat.QueryOrderBody{}
  4. body.OutTradeNo = "YgENQFTovdeJdFouNyy3nFVOhGD6ZvPH"
  5. // 请求订单查询
  6. wxRsp, err := client.QueryOrder(body)
  7. if err != nil {
  8. return
  9. }
  10. fmt.Printf("返回值: %+v\n", wxRsp)
  11. }

注意事项:

  • 参数或返回值的类型,请查看接口对应的文件,里面有XXXBodyXXXResponse与之对应。
  • 参数或返回值中的常量,请参照constant.go文件。
  • 具体使用方法,请参照接口对应的测试文件。

微信支付

对应文件:wx_pay_xxxxxx.go

  • 提交付款码支付:(*Client) Micropay
  • 统一下单:(*Client) UnifiedOrder
  • 查询订单:(*Client) QueryOrder
  • 关闭订单:(*Client) CloseOrder
  • 撤销订单:(*Client) Reverse
  • 申请退款:(*Client) Refund
  • 查询退款:(*Client) QueryRefund
  • 下载对账单:(*Client) DownloadBill
  • 交易保障(JSAPI):(*Client) ReportJsApi
  • 交易保障(MICROPAY):(*Client) ReportMicropay
  • 下载资金账单:TODO,client.DownloadFundFlow()。
  • 拉取订单评价数据:TODO,client.BatchQueryComment()。
  • 企业付款到零钱:(*Client) Change
  • 查询企业付款到零钱:(*Client) QueryChange

微信支付回调

对应文件:wx_notify_xxxxxx.go

  • 支付回调:(*Client) NotifyPay
  • 退款回调:(*Client) NotifyRefund

微信公众号

对应文件:wx_service_xxxxxx.go

  • 授权码查询OpenId:(*Client) OpenIdByAuthCode
  • 获取基础支持的AccessToken:GetBasicAccessToken
  • 获取用户基本信息(UnionId机制):GetUserInfo
  • 获取H5支付签名:GetH5PaySign

微信小程序

对应文件:wx_applet_xxxxxx.go

  • 获取小程序支付签名:GetAppletPaySign
  • 获取小程序码:GetAppletUnlimitQrcode

移动端

对应文件:wx_app_xxxxxx.go

  • 获取APP支付签名:GetAppPaySign

1.1.4. 文档

1.1.5. 开发进度

1.1.6. 测试方法

修改client_test.go中的生成测试Client的代码,调整沙盒/生产环境、普通商户/服务商等选项,或者修改环境变量,来调整商户参数。

环境变量的脚本在env文件中,修改后加载环境变量:

  1. source env
  2. go test

1.1.7. TODO

  • 测试改为不同情境使用不同的用例。
  • 继续调试境内普通商户和境内服务商的其他模块API文档。
  • 选择性调试境外接口。
  • 继续增加公众号和小程序相关接口。
  • 移除service开头的文件。