- 前景
- 开发环境
- Go 基础
- 流程控制
- 函数
- 方法
- 面向对象
- 网络编程
- 并发编程
- 数据操作
- 常用标准库
- beego 框架
- gin 框架
- 微服务
- 插件库
- 项目
- 开源仓库
- go 学习线路图
- 音频和音乐
- 身份验证和 OAuth
- 机器人相关
- 标准 CLI
- 构建用户界面库
- 配置
- 持续集成
- CSS 预处理器
- 数据结构
- 数据库
- 数据库驱动
- 日期和时间
- 分布式系统
- 电子邮件
- 嵌入式脚本语言
- 错误处理
- 文件
- 金融
- Forms
- 功能性
- 游戏开发
- 生成与泛型
- 地理位置
- 编译器
- Goroutines
- 图形界面
- 图片
- 物联网
- 工作计划
- JSON格式
- Logging
- 机器学习
- 实现消息传递
- 微软办公软件
- 依赖注入
- 项目布局
- Strings
- 其他
- 自然语言处理
- 网络
- HTTP 客户端
- OpenGL
- ORM
- 包管理
- 性能
- 查询语言
- 资源嵌入
- 科学与数据分析
- 安全
- 序列化
- 服务器应用
- 流处理
- 模板引擎
- 测试
- 文字处理
- 第三方 API
- 实用工具
- UUID
- 验证方式
- 版本控制
- 视频
- Web 框架
- 中间件
- 路由器
- 视窗
- XML 格式
- 代码分析
- 编辑器插件
- 硬件
- go 生成工具
- go 工具
- DevOps 工具
- 其他
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
微信支付
这是用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)
}
注意事项:
- 参数或返回值的类型,请查看接口对应的文件,里面有
XXXBody
和XXXResponse
与之对应。 - 参数或返回值中的常量,请参照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. 文档
- 微信支付文档:https://pay.weixin.qq.com/wiki/doc/api/index.html
- 随机数生成算法: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_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/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/danpin.php?chapter=9_101&index=1
- 代金券或立减优惠:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=12_1
- 最新县及县以上行政区划代码:https://pay.weixin.qq.com/wiki/doc/api/download/store_adress.csv
1.1.5. 开发进度
- 境内普通商户
- 境内服务商
1.1.6. 测试方法
修改client_test.go
中的生成测试Client的代码,调整沙盒/生产环境、普通商户/服务商等选项,或者修改环境变量,来调整商户参数。
环境变量的脚本在env
文件中,修改后加载环境变量:
source env
go test
1.1.7. TODO
- 测试改为不同情境使用不同的用例。
- 继续调试境内普通商户和境内服务商的其他模块API文档。
- 选择性调试境外接口。
- 继续增加公众号和小程序相关接口。
- 移除
service
开头的文件。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论