AliPay SDK for Golang

smartwalle · 2017-02-15 02:10:58 · 10164 次点击    
这是一个分享于 2017-02-15 02:10:58 的资源,其中的信息可能已经有所发展或是发生改变。

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 的结构体

集成流程

支付宝开放平台申请创建相关的应用,使用自己的支付宝账号登录即可。

沙箱环境

支付宝开放平台为每一个应用提供了沙箱环境,供开发人员开发测试使用。

沙箱环境是独立的,每一个应用都会有一个商家账号和买家账号。

应用信息配置

参考官网文档 进行应用的配置。

本 SDK 中的签名方法为 RSA2,所以请注意配置 RSA2(SHA256)密钥

请参考 如何生成 RSA 密钥

创建 Wap 支付

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,并向其传递会相关的信息。参考手机网站支付结果异步通知

我们需要在提供的 Notify URL 服务中获取相关的参数并进行验证:


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

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