博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Go语言实现微信支付SDK
阅读量:7232 次
发布时间:2019-06-29

本文共 2148 字,大约阅读时间需要 7 分钟。

微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。

老司机倾囊相授,带你一路进阶,来不及解释了快上车!

wxpay for golang

注:本人照着微信支付官方 SDK Java 版,用 Go 语言实现的一个微信支付 SDK,与 Java 版功能一致,具备轻量易上手,且功能齐全的特点,理论上性能也会比 Java 版的更快。

GitHub地址:

wxpay提供了对应的方法:

方法名 说明
MicroPay 刷卡支付
UnifiedOrder 统一下单
OrderQuery 查询订单
Reverse 撤销订单
CloseOrder 关闭订单
Refund 申请退款
RefundQuery 查询退款
DownloadBill 下载对账单
Report 交易保障
ShortUrl 转换短链接
AuthCodeToOpenid 授权码查询openid
  • 参数为Params类型,返回类型也是ParamsParams 是一个 map[string]string 类型的结构体。
  • 方法内部会将参数会转换成含有appidmch_idnonce_strsign\_typesign的XML;
  • 默认使用MD5进行签名;
  • 通过HTTPS请求得到返回数据后会对其做必要的处理(例如验证签名,签名错误则抛出异常)。
  • 对于downloadBill,无论是否成功都返回Map,且都含有return_codereturn_msg。若成功,其中return_codeSUCCESS,另外data对应对账单数据。

安装

go get github.com/objcoding/wxpay复制代码

示例

// 新建微信支付客户端client := wxpay.NewClient(wxpay.NewAccount{	AppID: "appid",	MchID: "mchid",	ApiKey: "apiKey",}, false) // sandbox环境请传true// 统一下单params := make(wxpay.Params)params.SetString("body", "test").		SetString("out_trade_no", "436577857").		SetInt64("total_fee", 1).		SetString("spbill_create_ip", "127.0.0.1").		SetString("notify_url", "http://notify.objcoding.com/notify").		SetString("trade_type", "APP")p, _ := client.UnifiedOrder(params)// 订单查询params := make(wxpay.Params)params.SetString("out_trade_no", "3568785")p, _ := client.OrderQuery(params)// 退款params := make(wxpay.Params)params.SetString("out_trade_no", "3568785").		SetString("out_refund_no", "19374568").		SetInt64("total_fee", 1).		SetInt64("refund_fee", 1)p, _ := client.Refund(params)// 退款查询params := make(wxpay.Params)params.SetString("out_refund_no", "3568785")p, _ := client.RefundQuery(params)复制代码
// 创建支付账户account := wxpay.NewAccount("appid", "mchid", "apiKey")// 设置证书account.SetCertData("证书地址")// 新建微信支付客户端client := wxpay.NewClient(account, false) // sandbox环境请传true// 设置http请求超时时间client.SetHttpConnectTimeoutMs(2000)// 设置http读取信息流超时时间client.SetHttpReadTimeoutMs(1000)// 更改签名类型client.SetSignType(HMACSHA256)// 设置支付账户client.setAccount(account)复制代码
// 签名signStr := client.Sign(params)// 校验签名b := client.ValidSign(params)复制代码
// 支付或退款返回成功信息return wxpay.Notifies{}.OK()// 支付或退款返回失败信息return wxpay.Notifies{}.NotOK("支付失败或退款失败了")复制代码

License

MIT license

转载地址:http://ikjfm.baihongyu.com/

你可能感兴趣的文章
开学季学生宿舍竟然限电,学校管理因噎废食?
查看>>
同样是异形屏,为什么OPPO R15能够打造不一样的体验?
查看>>
奇点汽车回应欠薪3月传闻:多轮融资顺利 不存在资金问题
查看>>
孕妇高速上产女 交警医生合力架起生命绿色通道
查看>>
西藏尼阿底遗址项目获“2018年中国考古新发现”入围奖
查看>>
2018年浙江检察机关办理公益诉讼案件5551件
查看>>
加拿大渥太华民众寒冬享受运河滑冰道乐趣
查看>>
火箭队再遭伤病打击 曝中锋卡佩拉至少缺阵1月
查看>>
和妈妈在一起,就是团圆
查看>>
程序员面试,写个javascript物理引擎,张口要月薪20K!面试官真给了!
查看>>
UAS-点评侧用户行为检索系统
查看>>
Shapeless 入门指南(二):自然数类型 Nat
查看>>
[问题回顾]JTalk Online:面试官教你快速成为 leader 最欣赏的技术人
查看>>
深度有趣 | 05 自编码器图像去噪
查看>>
自制简单的range(Vue)
查看>>
强化学习的基本概念与代码实现
查看>>
最好用的货币:货币发展史和BCH
查看>>
Google 跨平台方案 Flutter 从入门到实战
查看>>
PHP版本兼容之openssl调用参数
查看>>
翻译连载 | 附录 A:Transducing(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
查看>>