最近想對接對接支付寶接口, 支付寶接口可以使用沙箱測試
代碼地址: https://github.com/klren0312/NodeAlipayTest
一. 開啟沙箱
可以訪問開發(fā)者中心https://openhome.alipay.com/platform/appDaily.htm?tab=info
進(jìn)行認(rèn)證后, 即可進(jìn)入沙箱配置頁
二. 配置密鑰
1. 下載密鑰生成工具
訪問 https://docs.open.alipay.com/291/105971
2.生成公鑰私鑰
3.設(shè)置公鑰
加簽方式選擇公鑰
注意: 由于我年輕的時候失誤, 選了RSA2選成了證書, 沒法對接node, 所以我代碼只能用RSA來進(jìn)行, 不過截圖可以用別人的
輸入公鑰后, 會生成一個支付寶公鑰, 后面代碼需要使用
三. NodeJS請求支付接口
1. 初始化項(xiàng)目
mkdir payTest
yarn init -y
2. 安裝依賴
官方提供了NodeJS的服務(wù)端SDK
前往https://docs.open.alipay.com/54/103419查看
yarn add alipay-sdk
3.查看要用到的接口
由于我們用的是PC支付, 對應(yīng)的文檔中提示我們可以使用alipay.trade.page.pay
接口來實(shí)現(xiàn)
alipay.trade.page.pay
接口的必填參數(shù)如下,
4.代碼編寫
const AlipaySdk = require('alipay-sdk').default
const AlipayFormData = require('alipay-sdk/lib/form').default
// 初始化插件
const alipaySdk = new AlipaySdk({
appId: '2016100100639372',
gateway: 'https://openapi.alipaydev.com/gateway.do',
signType: 'RSA', // 注意這里默認(rèn)是RSA2, 但是我自己只能用RSA, 所以是RSA, 正常不要配置
privateKey: '剛剛你使用工具生成的私鑰',
alipayPublicKey: '剛剛你使用公鑰在沙箱頁面生成的支付寶公鑰'
})
async function pay () {
const formData = new AlipayFormData()
// 調(diào)用 setMethod 并傳入 get梅肤,會返回可以跳轉(zhuǎn)到支付頁面的 url
formData.setMethod('get')
// 配置回調(diào)接口
formData.addField('notifyUrl', 'http://www.zzes1314.cn')
// 設(shè)置參數(shù)
formData.addField('bizContent', {
outTradeNo: '1582976759798',
productCode: 'FAST_INSTANT_TRADE_PAY',
totalAmount: '0.01',
subject: '商品',
body: '商品詳情',
});
// 請求接口
const result = await alipaySdk.exec(
'alipay.trade.page.pay',
{},
{ formData: formData },
);
// result 為可以跳轉(zhuǎn)到支付鏈接的 url
console.log(result);
}
pay()
5. 運(yùn)行結(jié)果
可以看到命令行打印了返回的跳轉(zhuǎn)鏈接
訪問可以看到沙箱的支付環(huán)境
這是使用沙箱的賬號登錄支付即可
四. 一些小問題
當(dāng)我們配置好公鑰的時候可以來檢驗(yàn)下是否可以正常驗(yàn)簽
這里可以通過它提示下載簽名工具, 但是由于簽名工具是用java語言開發(fā),所以工具的左邊文本框要輸入PKCS8格式的私鑰文本信息金吗。
如果您使用非java開發(fā)語言众羡,請先將生成的私鑰轉(zhuǎn)換成PKCS8格式的私鑰,再將PKCS8格式的私鑰文本信息輸入工具左邊輸入框嗦嗡。
所以我們要把私鑰在支付寶開放平臺助手
里進(jìn)行轉(zhuǎn)換后再進(jìn)行簽名
然后復(fù)制生成的私鑰進(jìn)行簽名
最后放入驗(yàn)證, 通過既是可以了