分享
  1. 首页
  2. 文章

基于Golang的微信支付SDK,支持微信商户支付/商户分账/服务商支付/服务商分账

黑白配 · · 3414 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

微信支付 SDK For Golang

支持微信商户支付/商户分账/服务商支付/服务商分账

查看线上文档

安装包

go get -u github.com/wleven/wxpay

查看文档

// 执行命令
godoc -http:=8888 -play
// 浏览器打开文档
http://127.0.0.1:8888/pkg/github.com/wleven/wxpay/

支付环境初始化

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 // WxPay 支付环境
 type WxPay struct {
 AppID string // 商户/服务商 AppId(公众号/小程序)
 MchID string // 商户/服务商 商户号
 SubAppID string // 子商户公众号ID
 SubMchID string // 子商户商户号
 PayNotify string // 支付结果回调地址
 RefundNotify string // 退款结果回调地址
 Secret string // 微信支付密钥
 APIClientPath pay.APIClientPath // API证书路径
 }
 // APIClientPath 微信支付API证书
 type APIClientPath struct {
 Cert string // 证书路径
 Key string // 证书密钥路径
 Root string // 根证书路径
 }

统一下单

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := WxPay.UnifiedOrder(pay.UnifiedOrder{
 Attach: "支付测试",
 OutTradeNo: "11111111111114",
 TotalFee: 1,
 SpbillCreateIP: "127.0.0.1",
 OpenID: "owJNp5PDj8lja9S3m2l2M_jt3aHY",
 Receipt: "Y",
 Body: "测试",
 TradeType: "JSAPI",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

小程序支付

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := pay.WxAppPay(UnifiedOrder{
 Attach: "支付测试",
 OutTradeNo: "11111111111115 ",
 TotalFee: 1,
 SpbillCreateIP: "127.0.0.1",
 OpenID: "owJNp5PDj8lja9S3m2l2M_jt3aHY",
 Receipt: "Y",
 Body: "测试",
 TradeType: "JSAPI",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

付款码支付

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := pay.Micropay(Micropay{
 Attach: "支付测试",
 OutTradeNo: "11111111111115",
 TotalFee: 1,
 SpbillCreateIP: "127.0.0.1",
 Receipt: "Y",
 Body: "测试",
 AuthCode: "12312312312",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

关闭订单

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := WxPay.CloseOrder("11111111111112"); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

撤销订单

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := pay.ReverseOrder(ReverseOrder{
 OutTradeNo: "11111111111112",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

查询订单

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := WxPay.OrderQuery(pay.OrderQuery{
 OutTradeNo: "11111111111113",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println.Error(err)
 }

申请退款

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := WxPay.Refund(pay.Refund{
 OutTradeNo: "11111111111113",
 TotalFee: 100,
 RefundFee: 1,
 OutRefundNo: "11111111111113",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

查询退款

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := pay.RefundQuery(RefundQuery{
 OutTradeNo: "11111111111113",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

添加分账接收方

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := WxPay.ProfitSharingAddReceiver(pay.Receiver{
 Type: "PERSONAL_OPENID",
 Account: "owJNp5PDj8lja9S3m2l2M_jt3aHY",
 RelationType: "DISTRIBUTOR",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

删除分账接收方

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := WxPay.ProfitSharingRemoveReceiver(pay.Receiver{
 Type: "PERSONAL_OPENID",
 Account: "owJNp5PDj8lja9S3m2l2M_jt3aHY",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

发起分账

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 // 第二个参数options为multi为多次分账 默认为单次
 if result, err := WxPay.ProfitSharing(pay.ProfitSharing{
 TransactionID: "11111",
 OutOrderNo: "111111",
 Receivers: []Receiver{{Type: "PERSONAL_OPENID", Account: "owJNp5PDj8lja9S3m2l2M_jt3aHY", Amount: 1, Description: "个人分成"}},
 }, "multi"); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

完成分账

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := WxPay.ProfitSharingFinish(pay.ProfitSharingFinish{
 TransactionID: "11111",
 OutOrderNo: "111111",
 Description: "分账完成",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

查询分账结果

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := WxPay.ProfitSharingQuery(pay.ProfitSharingQuery{
 TransactionID: "11111",
 OutOrderNo: "111111",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

分账回退

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := WxPay.ProfitSharingReturn(pay.ProfitSharingReturn{
 OutOrderNo: "1111111",
 OutReturnNo: "1111112",
 ReturnAccount: "12312312",
 ReturnAmount: 100,
 Description: "回退",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

分账回退结果查询

 var WxPay = pay.WxPay{
 // 支付初始化参数
 }
 if result, err := WxPay.ProfitSharingReturnQuery(pay.ProfitSharingReturnQuery{
 OutOrderNo: "1111111",
 OutReturnNo: "1111112",
 }); err == nil {
 log.Println(result)
 } else {
 log.Println(err)
 }

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
3414 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏