golang实现微信支付

微信支付

这是用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开头的文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值