1. 支付寶開放平台登錄
使用已有的支付寶賬號即可
https://open.alipay.com/platform/home.htm
由於官方沒有提供go語言支付的SDK,所以在github找了很長時間找到了一個能用的(累。。。)
2. 關於沙箱環境(開發模擬環境)
https://docs.open.alipay.com/200/105311
登錄后,在頁面頂部可以選擇進入沙箱環境設置頁面
3. 支付寶開發者文檔
https://openhome.alipay.com/developmentDocument.htm
電腦網站支付
https://docs.open.alipay.com/270
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-----中間的內容保存在支付寶的用戶配置中(沙箱或者正式)
https://openhome.alipay.com/platform/appDaily.htm?tab=info
下載支付寶的公鑰文件
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)
}