脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Golang - Golang实现支付宝沙箱支付的方法步骤

Golang实现支付宝沙箱支付的方法步骤

2023-04-20 17:33落雪bin飞 Golang

本文主要介绍了Golang实现支付宝沙箱支付的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

首先我使用的是 gin 作为我的后端框架,我们先设定好几个接口。

?
1
2
3
4
5
6
func main() {
    r := gin.Default()
    r.GET("/pay", tools.WebPageAlipay)
    r.GET("/return", tools.AliPayNotify)
    r.Run(":8100")
}

github.com/smartwalle/alipay 这个第三方库来作为定义了很多支付宝接口,我们直接使用这个库来继续我们的开发。

首先初始化

?
1
2
3
4
5
6
7
8
9
var (
    appID = "你的支付宝ID"
    privateKey = "你的支付宝私钥"
    client, _  = alipay.New(appID, privateKey, false)
)
 
func init() {
    client.LoadAliPayPublicKey("你的支付宝公钥")
}

将在支付宝开放平台沙箱中申请的密钥和公钥填入对应位置

使用 Web 扫码支付接口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// WebPageAlipay 网页扫码支付
func WebPageAlipay(c *gin.Context) {
    ......
    var p = alipay.TradePagePay{}
    p.ReturnURL = "http://127.0.0.1:8080/return" //订单付款后跳转的网址页面
    p.Subject = fmt.Sprintf("订单号:%s", orderSn) //付款标题
    p.OutTradeNo = orderSn                     //商家订单号
    p.TotalAmount = price                      //价格
    p.ProductCode = "FAST_INSTANT_TRADE_PAY"
    
    var url, err = client.TradePagePay(p)
    if err != nil {
        fmt.Println(err)
    }
 
    var payURL = url.String() //扫码支付的网页链接,返回前端后打开
}

在支付成功后,支付页面会自动跳转到 p.ReturnURL 中设置的地址(我这里设置的前端地址,跳转到前端地址后,前端向后端请求 /return ,完整获取页面的查询参数并全部拼接到后端 /return 中),后端获取查询参数做签名验证

?
1
2
3
4
5
6
7
// AliPayNotify 接受通知接口
func AliPayNotify(c *gin.Context) {
    //获取url并转成*URL
    x, _ := url.Parse(c.Request.URL.String())
    //验证是否成功支付
    ok, err := client.VerifySign(x.Query())
}

到此这篇关于Golang实现支付宝沙箱支付的方法步骤的文章就介绍到这了,更多相关Golang 支付宝沙箱支付内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/luoxuebinfei/article/details/124804583

延伸 · 阅读

精彩推荐
  • Golanggolang操作elasticsearch的实现

    golang操作elasticsearch的实现

    这篇文章主要介绍了golang操作elasticsearch,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编...

    guyan031915482020-07-20
  • Golanggolang开发中channel使用

    golang开发中channel使用

    channel[通道]是golang的一种重要特性,正是因为channel的存在才使得golang不同于其它语言。这篇文章主要介绍了golang开发中channel使用,需要的朋友可以参考下...

    飞翔码农5852020-09-27
  • Golanggolang Gin上传文件返回前端及中间件实现示例

    golang Gin上传文件返回前端及中间件实现示例

    这篇文章主要为大家介绍了golang Gin上传文件返回前端及中间件实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪...

    Jeff的技术栈6632022-09-19
  • Golang简单聊一聊Go语言中的数组和切片

    简单聊一聊Go语言中的数组和切片

    数组和切片由于语法十分相似,在使用中容易混淆,要认真区分,下面这篇文章主要给大家介绍了关于Go语言中数组和切片的相关资料,需要的朋友可以参考下...

    架构精进之路4642021-08-16
  • Golang详解Go module的介绍及使用

    详解Go module的介绍及使用

    module是一个相关Go包的集合,它是源代码更替和版本控制的单元。这篇文章主要介绍了Go module的介绍及使用,需要的朋友可以参考下...

    benben_201525342021-01-27
  • GolangGO接收GET/POST参数及发送GET/POST请求的实例详解

    GO接收GET/POST参数及发送GET/POST请求的实例详解

    这篇文章主要介绍了GO接收GET/POST参数及发送GET/POST请求,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    qq_2731293926782021-02-21
  • GolangGo 分布式令牌桶限流 + 兜底保障

    Go 分布式令牌桶限流 + 兜底保障

    上篇文章提到固定时间窗口限流无法处理突然请求洪峰情况,本文讲述的令牌桶线路算法则可以比较好的处理此场景。...

    微服务实践10252022-01-12
  • Golanggolang 后台进程的启动和停止操作

    golang 后台进程的启动和停止操作

    这篇文章主要介绍了golang 后台进程的启动和停止操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    StellarCode6002021-05-29