幼敏悟过人,读书辄成诵。这篇文章主要讲述Golang 版本 支付宝支付SDK app支付接口2.0相关的知识,希望能为你提供帮助。
参考技术贴:
https://blog.csdn.net/ming2316780/article/details/86505883
对接文档:
https://opendocs.alipay.com/open/204/105297
https://opendocs.alipay.com/apis/api_1/alipay.trade.app.pay
公钥证书方式
RSA签名和验证工具下载:https://docs.open.alipay.com/291/105971
下载之后解压
双击RSA签名验签工具.bat
秘钥格式选择PKCS1
点击生成秘钥
复制公钥
回到沙箱中,点击查看应用公钥,然后点击修改
下载工具并安装好后打开,
1.点击工具界面下方的 点击获取,生成应用公钥证书 CSR 申请文件
文章图片
2.点击进入 获取csr 页面后,根据如下提示完善填写信息,点击 生成CSR文件。请注意“组织/公司”名称一定要和开发者中心门户账号信息的公司名称保持一致,否则会导致后续步骤中上传csr证书文件校验失败。
Tips:沙箱环境下“组织/公司”名称应填写为“沙箱环境”。
文章图片
3.在生成 CSR 文件后,点击 打开密钥文件路径,在对应的文件夹里可以看到三个文件:应用公钥 key 串、应用私钥key 串,以及 csr格式的应用公钥证书文件。如下图所示:
文章图片
4.生成公钥证书 CSR 申请文件,开发者就可以在应用的开发配置页面/接口加签方式进行配置(如下图 1)。点击 设置 后,选择公钥证书(如下图2)> 上传CSR文件在线生成证书 > 上传CSR文件在线生成,选择上一步骤生成的 .csr文件上传,即可完成公钥证书的设置,如下图所示。
如下图 1
文章图片
如下图 2
文章图片
注意:
生成的私钥需妥善保管,避免遗失,不要泄露。应用私钥需填写到代码中供签名时使用,并且必须保证应用私钥和上传到开放平台申请应用公钥证书的 CSR 文件是匹配的。
【Golang 版本 支付宝支付SDK app支付接口2.0】以上就完成了生成公钥/私钥 证书证书 的配置
文章图片
然后把证书给下载回来放到项目里
go get github.com/iGoogle-ink/gopay
下面用的
github.com/iGoogle-ink/gopay v1.4.8
的包 如果是1.5.1参考上面的连接以
package alipayextimport (
"fmt"
"github.com/iGoogle-ink/gopay"
"linkbook.com/LinkBookGo/lib/apilog"
)func AliPayTradeAppPay() string {
privateKey := "私钥"
client := gopay.NewAliPayClient(appid, privateKey, false)
// 设置支付宝请求 公共参数
//注意:具体设置哪些参数,根据不同的方法而不同,此处列举出所以设置参数
//client.SetLocation().// 设置时区,不设置或出错均为默认服务器时间
client.SetCharset("utf-8").// 设置字符编码,不设置默认 utf-8
//SetAliPayRootCertSN().// 设置支付宝根证书SN,通过 alipay.GetRootCertSN() 获取
//SetAppCertSN().// 设置应用公钥证书SN,通过 alipay.GetCertSN() 获取
//SetAliPayPublicCertSN().// 设置支付宝公钥证书SN,通过 alipay.GetCertSN() 获取
SetSignType("RSA2").// 设置签名类型,不设置默认 RSA2
SetReturnUrl("https://xxx.haimait.com/alipay/return_url").// 设置返回URL
SetNotifyUrl("https://xxx.haimait.com/alipay/notify_url")// 设置异步通知URL//三个证书文件入在项目根目录的config目录下
err:=client.SetCertSnByPath("config/appCertPublicKey_2019090767039358.crt", "config/alipayRootCert.crt", "config/alipayCertPublicKey_RSA2.crt")
if err != nil{
fmt.Println("err:aaaaaa",err.Error())
fmt.Println("同步回调失败.")
return ""
}
fmt.Println("client:==>
",client)
//配置公共参数
//请求参数
bm := make(gopay.BodyMap)
bm.Set("subject", "测试APP支付")
bm.Set("out_trade_no", "GZ201901301040355703")//订单号,一个订单号只能支付一次
bm.Set("quit_url", "https://www.gopay.ink") //商品code
bm.Set("total_amount", "0.01")
bm.Set("product_code", "QUICK_WAP_WAY")
fmt.Println("body:",bm) //APP支付是通过服务端获取支付参数后,然后通过android/ios客户端的SDK调用支付功能
payParam, err := client.AliPayTradeAppPay(bm)
if err != nil {
fmt.Println("err:bbbb", err)
return ""
}
fmt.Println("payParam:1111111", payParam)
apilog.Log("aplipay","AliPayTradeAppPay",payParam)
return payParam
}
下面是返回的参数形式,把它以客串的方式,返回给安卓和ISO前端,让前端调起预支付
payParam:1111111 alipay_root_cert_sn=123123&
app_cert_sn=123123&
app_id=123123&
biz_content=12123out_trade_no123123&
method=alipay.trade.app.pay&
notify_url=123123&
return_url=https%3A%2F%2Fwww.gopay.ink&
sign=123123&
sign_type=RSA2&
timestamp=2020-03-13+19%3A30%3A45&
version=1.0
安卓对接文档
https://opendocs.alipay.com/open/204/105296
ios对接文档
https://opendocs.alipay.com/open/204/105295
推荐阅读
- Spring执行ApplicationEvent事件顺序ServletWebServerInitializedEvent
- 作为一名Android开发者,为什么在日常我们的学习效率越来越低,越来越迷茫
- win7桌面图标不见了怎样办,本文教您处理win7桌面
- win7怎样进入bios,本文教您win7怎样进入bios
- 显示器闪黑屏,本文教您如何恢复运用
- 苹果系统安装win7,本文教您苹果笔记本安装win7系
- 怎样把手机的照片传到电脑,本文教您电脑上传图
- win7激活工具,本文教您激活win7的设置办法
- 电脑本地连接受局限怎样办,本文教您处理电脑本