AliPay SDK for Golang

smartwalle · · 9882 次点击    
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
https://github.com/smartwalle/alipay AliPay SDK for Golang ## 已实现接口 #### 手机网站支付API * **手机网站支付接口** alipay.trade.wap.pay * **统一收单线下交易查询** alipay.trade.query * **统一收单交易支付接口** alipay.trade.pay * **统一收单交易关闭接口** alipay.trade.close * **统一收单交易退款接口** alipay.trade.refund * **统一收单交易退款查询** alipay.trade.fastpay.refund.query #### 通知 * **验证是否是支付宝发来的通知** notify_verify * **通知内容转换** 将支付宝的通知内容转换为 Golang 的结构体 ## 集成流程 从[支付宝开放平台](https://open.alipay.com/)申请创建相关的应用,使用自己的支付宝账号登录即可。 #### 沙箱环境 支付宝开放平台为每一个应用提供了沙箱环境,供开发人员开发测试使用。 沙箱环境是独立的,每一个应用都会有一个商家账号和买家账号。 #### 应用信息配置 参考[官网文档](https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.5pgfxp&treeId=200&articleId=105894&docType=1) 进行应用的配置。 本 SDK 中的签名方法为 RSA2,所以请注意配置 **RSA2(SHA256)密钥**。 请参考 [如何生成 RSA 密钥](https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=105971&docType=1)。 #### 创建 Wap 支付 ``` Golang var client = alipay.New(appId, partnerId, publickKey, privateKey, false) var p = AliPayTradeWapPay{} p.NotifyURL = "xxx" p.Subject = "标题" p.OutTradeNo = "传递一个唯一单号" p.TotalAmount = "10.00" p.ProductCode = "商品编码" var html, _ = client.TradeWapPay(p) // 将html输出到浏览器 ``` #### 验证支付结果 有支付或者其它动作发生后,支付宝服务器会调用我们提供的 Notify URL,并向其传递会相关的信息。参考[手机网站支付结果异步通知](https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.XM5C4a&treeId=203&articleId=105286&docType=1)。 我们需要在提供的 Notify URL 服务中获取相关的参数并进行验证: ```Golang http.HandleFunc("/alipay", func(rep http.ResponseWriter, req *http.Request) { var noti = alipay.GetTradeNotification(req) if noti != nil && client.NotifyVerify(noti.NotifyId) == true { fmt.Println("支付成功") } else { fmt.Println("支付失败") } }) ``` 如果 **client.NotifyVerify()** 方法返回的是 **true**,则表示是支付宝发送的通知,为了安全,切记这一步流程不可少。 此验证方法适用于支付宝所有情况下发送的 Notify,不管是手机 App 支付还是 Wap 支付。

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

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