1. 支付宝开放平台登录
使用已有的支付宝账号即可
由于官方没有提供go语言支付的SDK,所以在github找了很长时间找到了一个能用的(累。。。)
2. 关于沙箱环境(开发模拟环境)
登录后,在页面顶部可以选择进入沙箱环境设置页面
3. 支付宝开发者文档
电脑网站支付
4. 电脑网站支付流程
5. 使用go工具包
https://github.com/smartwalle/alipay
安装
go get github.com/smartwalle/alipay
生成密钥文件
openssl
OpenSSL> genrsa -out app_private_key.pem 2048 # 私钥
OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem # 导出公钥
OpenSSL> exit
cat app_publict_key.pem 查看公钥的内容
将-----BEGIN PUBLIC KEY-----和-----END PUBLIC KEY-----中间的内容保存在支付宝的用户配置中(沙箱或者正式)
下载支付宝的公钥文件
beego+golang直接调用的代码
支付代码:
var privateKey = "写入私钥"
var appId = "支付宝配置可以拿到APPID"
var aliPublicKey = "写入私钥"
var client = alipay.New(appId, aliPublicKey, privateKey, false)
//alipay.trade.page.pay
var p = alipay.AliPayTradePagePay{}
p.NotifyURL = "http://生成环境IP加端口/user/payOk"
p.ReturnURL = "http://生成环境IP加端口/user/payOk"
p.Subject = "项目名称"
p.OutTradeNo = "自定义订单号"
p.TotalAmount = "支付价格"
p.ProductCode = "FAST_INSTANT_TRADE_PAY"
var url, err = client.TradePagePay(p)
if err != nil {
fmt.Println(err)
}
var payURL = url.String()
this.Redirect(payURL,302)
支付成功调用处理方法:
func(this *OrderController)PayOK(){
trade_no :=this.GetString("trade_no") if trade_no != ""{ //获取相应的订单,更改订单信息 } this.Redirect("/goods/userCenterOrder",302)}