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 文件是匹配的。

以上就完成了生成公鑰/私鑰 證書證書 的配置

然后把證書給下載回來放到項目里

go get github.com/iGoogle-ink/gopay

下面用的github.com/iGoogle-ink/gopay v1.4.8的包 如果是1.5.1參考上面的連接

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&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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM