https://opendocs.alipay.com/open/204/105297https://opendocs.alipay.com/apis/api_1/alipay.trade.app.pay
公鑰證書方式
https://docs.open.alipay.com/291/105971
下載以後解壓 雙擊RSA簽名驗籤工具.bat 祕鑰格式選擇PKCS1 點擊生成祕鑰 複製公鑰 回到沙箱中,點擊查看應用公鑰,而後點擊修改
下載工具並安裝好後打開,
1.點擊工具界面下方的 點擊獲取,生成應用公鑰證書 CSR 申請文件github
2.點擊進入 獲取csr 頁面後,根據以下提示完善填寫信息,點擊 生成CSR文件。請注意「組織/公司」名稱必定要和開發者中心門戶帳號信息的公司名稱保持一致,不然會致使後續步驟中上傳csr證書文件校驗失敗。golang
Tips:沙箱環境下「組織/公司」名稱應填寫爲「沙箱環境」。
api
3.在生成 CSR 文件後,點擊 打開密鑰文件路徑,在對應的文件夾裏能夠看到三個文件:應用公鑰 key 串、應用私鑰key 串,以及 csr格式的應用公鑰證書文件。以下圖所示:服務器
4.生成公鑰證書 CSR 申請文件,開發者就能夠在應用的開發配置頁面/接口加簽方式進行配置(以下圖 1)。點擊 設置 後,選擇公鑰證書(以下圖2)> 上傳CSR文件在線生成證書 > 上傳CSR文件在線生成,選擇上一步驟生成的 .csr文件上傳,便可完成公鑰證書的設置,以下圖所示。app
以下圖 1異步
以下圖 2ide
注意:工具
生成的私鑰需妥善保管,避免遺失,不要泄露。應用私鑰需填寫到代碼中供簽名時使用,而且必須保證應用私鑰和上傳到開放平臺申請應用公鑰證書的 CSR 文件是匹配的。
以上就完成了生成公鑰/私鑰 證書證書 的配置
而後把證書給下載回來放到項目裏
go get github.com/iGoogle-ink/gopay
github.com/iGoogle-ink/gopay v1.4.8
以
package alipayext import ( "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¬ify_url=123123&return_url=https%3A%2F%2Fwww.gopay.ink&sign=123123&sign_type=RSA2×tamp=2020-03-13+19%3A30%3A45&version=1.0
安卓對接文檔
https://opendocs.alipay.com/open/204/105296
ios對接文檔
https://opendocs.alipay.com/open/204/105295