极简、易用的聚合支付SDK:微信、支付宝、通联支付、拉卡拉、PayPal、Apple 的Go版本SDK

PS

本资源仅供给大家学习研究及参考借鉴美工之用,请勿用于商业和非法用途,均无任何技术支持,谢谢合作!

推荐一个Go版本的支付库,极简、易用的聚合支付SDK:微信支付宝、通联支付、拉卡拉、PayPal、Apple 的Go版本SDK。

 

gopay是一个使用Golang编写的支付库。现在支持微信、支付宝、QQ、通联支付、拉卡拉、PayPal。

使用方法如下

引入gopay库:

go get -u github.com/go-pay/gopay

使用示例:

import (
    "github.com/go-pay/gopay"
    "github.com/go-pay/xlog"
)
func main() {
    xlog.Info("GoPay Version: ", gopay.Version)
}

我是在服务端对接支付宝时找到该库的,当时还只是支付宝和微信。现在又新增了多个支付厂商,支付宝和微信版本已经升级到V3版本了。

使用该库对接支付宝非常的方便,所以推荐一下该库。

这里以支付宝为例,在支付宝开放平台开通支付产品,获取支付宝证书,支付宝推荐使用证书认证。

常用的支付宝产品,gopay已经实现,直接调用方法即可。

首先,初始化支付宝客户端并做配置:

import (
    "github.com/go-pay/gopay/alipay/v3"
    "github.com/go-pay/xlog"
)
// 初始化支付宝客V3户端
// appid:应用ID
// privateKey:应用私钥,支持PKCS1和PKCS8
// isProd:是否是正式环境,沙箱环境请选择新版沙箱应用。
client, err := alipay.NewClientV3("2016091200494382", privateKey, false)
if err != nil {
    xlog.Error(err)
    return
}
// 自定义配置http请求接收返回结果body大小,默认 10MB
client.SetBodySize() // 没有特殊需求,可忽略此配置
// 设置自定义RequestId生成方法,非必须
client.SetRequestIdFunc()
// 打开Debug开关,输出日志,默认关闭
client.DebugSwitch = gopay.DebugOn
// 设置biz_content加密KEY,设置此参数默认开启加密(目前不可用)
//client.SetAESKey("1234567890123456")
// 传入证书内容
err := client.SetCert("appPublicCert.crt bytes", "alipayRootCert bytes", "alipayPublicCert.crt bytes")

然后,就是调用API方法和入参。以统一收单线下交易预创建作为示例:

import (
    "github.com/go-pay/gopay"
    "github.com/go-pay/gopay/pkg/js"
    "github.com/go-pay/util"
    "github.com/go-pay/xlog"
)
// 请求参数
bm := make(gopay.BodyMap)
bm.Set("subject", "预创建创建订单").
    Set("out_trade_no", util.RandomString(32)).
    Set("total_amount", "0.01")
// 创建订单
aliRsp, err := client.TradePrecreate(ctx, bm)
if err != nil {
    xlog.Errorf("client.TradePrecreate(), err:%v", err)
    return
}
xlog.Warnf("aliRsp:%s", js.Marshal(aliRsp))
if aliRsp.StatusCode != Success {
    xlog.Errorf("aliRsp.StatusCode:%d", aliRsp.StatusCode)
    return
}
xlog.Warnf("aliRsp.QrCode:", aliRsp.QrCode)
xlog.Warnf("aliRsp.OutTradeNo:", aliRsp.OutTradeNo)

最后,设置回调函数,用于接收支付宝异步通知。异步通知参数解析和验签Sign,gopay已经提供方法,下面看下使用:

import (
    "github.com/go-pay/gopay/alipay"
)
// 解析异步通知的参数
// req:*http.Request
notifyReq, err = alipay.ParseNotifyToBodyMap(c.Request)     // c.Request 是 gin 框架的写法
if err != nil {
    xlog.Error(err)
    return
}// value:url.Values
notifyReq, err = alipay.ParseNotifyByURLValues()
if err != nil {
    xlog.Error(err)
    return
}
// 支付宝异步通知验签(公钥模式)
ok, err = alipay.VerifySign(aliPayPublicKey, notifyReq)
// 支付宝异步通知验签(公钥证书模式)
ok, err = alipay.VerifySignWithCert("alipayPublicCert.crt content", notifyReq)
// 如果需要,可将 BodyMap 内数据,Unmarshal 到指定结构体指针 ptr
err = notifyReq.Unmarshal(ptr)
// ====异步通知,返回支付宝平台的信息====
// 文档:https://opendocs.alipay.com/open/203/105286
// 程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h)
// 此写法是 gin 框架返回支付宝的写法
c.String(http.StatusOK, "%s", "success")
// 此写法是 echo 框架返回支付宝的写法
return c.String(http.StatusOK, "success")

gopay对支付宝支持非常棒,已经实现了很多支付API,如果你使用的产品还没有实现,也可以使用自定义方法:

import (
    "github.com/go-pay/gopay"
    "github.com/go-pay/gopay/pkg/js"
    "github.com/go-pay/util"
    "github.com/go-pay/xlog"
)
// 请求参数
bm := make(gopay.BodyMap)
bm.Set("subject", "预创建创建订单").
    Set("out_trade_no", util.RandomString(32)).
    Set("total_amount", "0.01")
rsp := new(struct {
    OutTradeNo string `json:"out_trade_no"`
    QrCode     string `json:"qr_code"`
})
// 创建订单
res, err := client.DoAliPayAPISelfV3(ctx, alipay.MethodPost, "/v3/alipay/trade/precreate", bm, rsp)
if err != nil {
    xlog.Errorf("client.TradePrecreate(), err:%v", err)
    return
}
xlog.Warnf("aliRsp:%s", js.Marshal(rsp))
if res.StatusCode != Success {
    xlog.Errorf("aliRsp.StatusCode:%d", res.StatusCode)
    return
}

使用好的库,可以大大提高工作效率。推荐使用1分钱测试法。可以使用frp搭建支付宝联调环境。

打开DebugSwitch 可以非常方便排查问题。你如果有对接支付宝和微信支付的需求,推荐使用该库。

—————— 展开浏览全文 ——————
资源下载
下载价格VIP专享
仅限VIP下载升级VIP
版权免责声明 01、本站名称:飞瓜资源服务网
02、本站网址:https://www.dybdfw.com
03、本站所有资源来源于互联网搜集并整理,如有侵权请联系站长进行删除!
04、本站分享的资源仅供参考学习,您必须在下载后二十四个小时之内删除!
05、本站分享目的仅供学习研究和借鉴,请不要用于商业用途以及违法用途!
06、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
07、禁止用本站源码用于非法商业用途,不得违反国家法律,否则后果自负!
08、如发现资源链接无法下载、失效或广告,请联系管理员或提交工单处理!
09、所有资源均可通过日常签到等任务进行免费兑换,记得每天到本站签到!
10、本站所有资源积分兑换只是赞助,收取费用仅维持本站的日常运营所需!
11、如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励!
12、如需商用请购买正版,由于未及时购买正版发生侵权行为,与本站无关!
13、如果您发现本站分享的资源侵犯了您的权益,请邮件联系我们进行删除!
14、我们无法辨别该内容是否具有版权,若侵犯了您的权益请联系我们删除!
15、本站禁止以任何方式发布或转载任何违法相关信息,发现请向站长举报!
16、本站所有资源不代表本站立场,并不代表赞同其观点和对其真实性负责!
17、本站资源大多存储在云盘,如发现链接失效,请联系我们第一时间更新!
0
资源下载 / Download
下载权限VIP会员专享
仅限VIP会员下载开通VIP会员
飞瓜十周年庆,升级(终身VIP)只需188元,原价288元,限时特惠,即将终止! 点击开通
显示验证码
没有账号?注册  忘记密码?