返回介绍

微信支付

发布于 2023-06-25 22:01:52 字数 14368 浏览 0 评论 0 收藏 0

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

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

1.1.1. 安装

go get -u gitee.com/cuckoopark/wechat

1.1.2. 初始化

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

1.1.3. 使用

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

使用样例:

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

注意事项:

  • 参数或返回值的类型,请查看接口对应的文件,里面有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文件中,修改后加载环境变量:

source env
go test

1.1.7. TODO

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文