本文采用沙箱环境

1. 开启沙箱

文档:https://docs.open.alipay.com/200/105311/
沙箱地址:https://openhome.alipay.com/platform/appDaily.htm

2. 生成应用公钥和秘钥(已弃用)

本文中的签名方法默认为 RSA2,采用支付宝提供的 RSA签名&验签工具 生成秘钥时,秘钥的格式必须为 PKCS1,秘钥长度推荐 2048。所以在支付宝管理后台请注意配置 RSA2(SHA256)密钥。
生成秘钥对之后,将公钥提供给支付宝(通过支付宝后台上传)对我们请求的数据进行签名验证,我们的代码中将使用私钥对请求数据签名。

RSA签名和验证工具下载:https://docs.open.alipay.com/291/105971

  1. 下载之后解压
  2. 双击RSA签名验签工具.bat
  3. 秘钥格式选择PKCS1
  4. 点击生成秘钥
  5. 复制公钥
  6. 回到沙箱中,点击查看应用公钥,然后点击修改
  7. 保存好私钥,我们一会需要在代码中用到
  8. 复制支付宝公钥,代码中验证需要用到
  9. 配置支付成功后的回调地址(这必须是个公网地址)

3. 证书认证

目前新创建的支付宝应用只支持证书方式认证,已经弃用之前的公钥和私钥的方式

公钥秘钥说明

我们生成秘钥对之后,将公钥提供给支付宝(通过支付宝后台上传)对我们请求的数据进行签名验证,我们的代码中使用私钥对请求数据签名。

  • 证书签名请求文件(用来提交给支付宝后台生成证书的)
  • 应用私钥(调用支付宝接口的时候,我们需要使用该私钥对参数进行签名)
  • 支付宝公钥证书(用来验证我们的签名的,现在已经被支付宝公钥证书取代)

3.1 下载生成工具

下载地址与文档:https://docs.open.alipay.com/291/105971

3.2 生成csr证书签名请求文件

工具安装好之后打开,点击获取

3.3 输入信息

主要是组织/公司这块一定要写的和你支付宝中应用的名一样,不然不会通过的,填写完毕之后点击生成CSR文件 ,点击页面的打开文件位置,就可以看到三个文件了,分别是证书签名请求文件应用公钥应用私钥

3.4 上传CSR证书签名请求文件

回到支付宝后台,点击 接口加签方式 设置,选择公钥证书,点击上次CSR生成证书,把我们刚才生成的那个证书(.csr)上传进去

3.5 下载证书

上传好之后,会弹出让你下载证书的页面,把那三个证书都下载下来,分别是: 应用公钥证书,支付宝公钥证书,支付宝根证书

代码部分

下载第三方库
go get github.com/smartwalle/alipay/v3

1. 网页扫码支付

package mainimport ("fmt""github.com/smartwalle/alipay/v3""net/http""os/exec""strings""time"
)var (// appIdappId = ""// 应用公钥aliPublicKey = ""// 应用私钥privateKey = ""client, _ = alipay.New(appId, aliPublicKey, privateKey, false)
)func init() {client.LoadAppPublicCert("应用公钥证书")client.LoadAliPayPublicCert("支付宝公钥证书")client.LoadAliPayRootCert("支付宝根证书")
}//网站扫码支付
func WebPageAlipay() {pay := alipay.AliPayTradePagePay{}// 支付宝回调地址(需要在支付宝后台配置)// 支付成功后,支付宝会发送一个POST消息到该地址pay.NotifyURL = "http://www.pibigstar/alipay"// 支付成功之后,浏览器将会重定向到该 URLpay.ReturnURL = "http://localhost:8088/return"//支付标题pay.Subject = "支付宝支付测试"//订单号,一个订单号只能支付一次pay.OutTradeNo = time.Now().String()//销售产品码,与支付宝签约的产品码名称,目前仅支持FAST_INSTANT_TRADE_PAYpay.ProductCode = "FAST_INSTANT_TRADE_PAY"//金额pay.TotalAmount = "0.01"url, err := client.TradePagePay(pay)if err != nil {fmt.Println(err)}payURL := url.String()//这个 payURL 即是用于支付的 URL,可将输出的内容复制,到浏览器中访问该 URL 即可打开支付页面。fmt.Println(payURL)//打开默认浏览器payURL = strings.Replace(payURL,"&","^&",-1)exec.Command("cmd", "/c", "start",payURL).Start()
}//手机客户端支付
func WapAlipay() {pay := alipay.AliPayTradeWapPay{}// 支付成功之后,支付宝将会重定向到该 URLpay.ReturnURL = "http://localhost:8088/return"//支付标题pay.Subject = "支付宝支付测试"//订单号,一个订单号只能支付一次pay.OutTradeNo = time.Now().String()//商品codepay.ProductCode = time.Now().String()//金额pay.TotalAmount = "0.01"url, err := client.TradeWapPay(pay)if err != nil {fmt.Println(err)}payURL := url.String()//这个 payURL 即是用于支付的 URL,可将输出的内容复制,到浏览器中访问该 URL 即可打开支付页面。fmt.Println(payURL)//打开默认浏览器payURL = strings.Replace(payURL,"&","^&",-1)exec.Command("cmd", "/c", "start",payURL).Start()
}func main() {//生成支付URLWapAlipay()//支付成功之后的返回URL页面http.HandleFunc("/return", func(rep http.ResponseWriter, req *http.Request) {req.ParseForm()ok, err := client.VerifySign(req.Form)if err == nil && ok {rep.Write([]byte("支付成功"))}})//支付成功之后的通知页面http.HandleFunc("/alipay", func(rep http.ResponseWriter, req *http.Request) {var noti, _ = client.GetTradeNotification(req)if noti != nil {fmt.Println("支付成功")//修改订单状态。。。。} else {fmt.Println("支付失败")}alipay.AckNotification(rep) // 确认收到通知消息})fmt.Println("server start....")http.ListenAndServe(":8088", nil)
}

golang对接支付宝支付相关推荐

  1. java 对接支付宝支付

    2019独角兽企业重金招聘Python工程师标准>>> 对接支付宝支付的前提: 1,商户开通支付能力 登录蚂蚁金服 开放平台:https://open.alipay.com/plat ...

  2. JAVA对接支付宝支付(超详细,一看就懂)

    Java对接支付宝支付 更多内容 冷文博客: 传送门 引入 为什么要发这篇帖子呢?原因很简单,就是因为在一个稍稍正规一点的应用上都会有支付这个环节,我们日常的在线支付如今包括支付宝,微信钱包,QQ钱包 ...

  3. java对接支付宝支付

    java对接支付宝支付演示 现在有不少的项目都需要对接支付,这里主要是进行讲解对接支付宝H5支付 废话不多说 上代码 引入支付宝官方的sdk <!-- https://mvnrepository ...

  4. java对接支付宝支付(手机网站支付)

    记录一下对接支付宝支付的过程,既是对这段时间工作的总结,也希望能对之后需要对接支付宝手机网站支付的小伙伴一点帮助. 1.查看官方文档,具体对接流程(https://docs.open.alipay.c ...

  5. SpringBoot+vue3对接支付宝支付详细教程

    SpringBoot+vue3对接支付宝支付详细教程 本人也是第一次做这个,是一个刚刚学习自学支付的萌新,目的是在于学习,只是为了记录自己的学习过程,怕以后会忘记,因为我没有企业账号,所以用的是自己的 ...

  6. 项目场景:对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法

    项目场景:对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法 问题描述: 对接中遇到的问题: 原因分析: 提示:浏览器的锅 解决方案: 关闭所有窗口,只打开那个支付页面窗口就可以 转载h ...

  7. 对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法

    项目场景:对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法 问题描述: 对接中遇到的问题: 原因分析: 提示:浏览器的锅 解决方案:   关闭所有窗口,只打开那个支付页面窗口就可以

  8. PHP版本对接支付宝支付接口 电脑网站 详细介绍 沙箱环境 超简单易懂

    PHP版本对接支付宝支付接口 其实理顺了思路后,按照我接下来的步骤来,真的超级简单啊,为啥有那么多的朋友们折腾了那么久呢,嘿嘿,接下来跟我走吧~ 我是昨天晚上洗完澡之后,大概八九点,才开始正式开工尝试 ...

  9. android支付功能开发,对接支付宝支付接口开发详细步骤

    对接支付宝支付接口,官方文档已经写的很清楚了,但是也有很多像我一样的小白,第一次对接支付宝支付接口,会有些迷茫,所以我在此写下这篇文章,给我和我一样的同学,一点思路吧. 第一步:(先要在支付宝进行操做 ...

最新文章

  1. 区块链与边缘计算(1)基本概念
  2. Hibernate关联映射-数据对象三种关系
  3. hash hashcode变化_没想到 Hash 冲突还能这么玩,你的服务中招了吗?
  4. OpenCV的数据类型——辅助对象
  5. 给用户添加sudo功能
  6. Software - ASCII码表
  7. Databinding在自定义ViewGroup中如何绑定view
  8. 疾控LIMS实验室信息管理系统功能需求
  9. ROS机器人操作系统——什么是ROS(一)
  10. Scratch下载(各版本都可下载)
  11. bitcscs计算机系统,深入理解计算机系统CSAPP-美-布莱恩特
  12. 读书有益——》《断舍离·舍·做减法的勇气》
  13. 程序员外包工作3年,跳槽却没人要,网友:你也太老实了吧
  14. stm32f407探索者开发板(二)——新建工程(基于固件库)
  15. 读《哈佛情商课》有感
  16. 接入飞书的 ChatGPT 对话机器人,SAM 来了
  17. mPEG-SG 甲氧基PEG琥珀酰亚胺戊二酸酯
  18. 数字图像处理课程实习——傅里叶变换与频域滤波
  19. 提取DC综合report_constrain all violator中big neg slack
  20. 基于51单片机SJA1000 CAN通讯实现(C语言程序)

热门文章

  1. 工业交换机与商用交换机的区别有哪些
  2. wireless tools笔记
  3. 吴恩达深度学习课件和课后习题
  4. 全国计算机等级考试三级数据库技术(十四)
  5. 微信小程序申请开通直播功能
  6. zookeeper集群伪分布式安装测试-windows
  7. 目标函数和损失函数的区别
  8. Oracle执行语句跟踪(1)——使用sql trace实现语句追踪
  9. 快速了解什么是CDN
  10. jpg转换为word可编辑的怎么转换呢