
☞:官方文檔
☞:調用接口
alipay.trade.create(統一收單交易創建接口)
首先創建應用 步驟:螞蟻金服開放平台-->開發中心-->第三方應用


開發配置

添加功能(當面付,獲取會員信息,第三方應用授權)

首先:讓簽約商戶對第三方應用授權
API接口:https://docs.open.alipay.com/20160728150111277227/intro
授權成功之后拿到商戶ID 和 授權token
也可以調用接口換取:https://docs.open.alipay.com/api_9/alipay.open.auth.token.app/

支付步驟:
1.獲取支付寶用戶的唯一userId
2.獲取支付寶交易號
const AlipaySdk = require('alipay-sdk').default;
const AlipayFormData = require('alipay-sdk/lib/form').default;
// 支付寶支付
async aliPay(ctx) {
let privateKey = path.join(this.config.baseDir, 'app/alipayKey', 'private.pem');
let publicKey = path.join(this.config.baseDir, 'app/alipayKey','public.pem');
const alipaySdk = new AlipaySdk({
appId: zfbServiceAppId.par_content,
privateKey: fs.readFileSync(privateKey, 'ascii'), // 私鑰
alipayPublicKey: fs.readFileSync(publicKey, 'ascii'), // 支付寶公鑰
signType: 'RSA2',
charset: 'utf-8'
})
const formData = new AlipayFormData();
formData.setMethod('get');
formData.addField('notifyUrl', url+ '/api/h5/zfbPay/callBack');
formData.addField('appAuthToken', shop.sho_zfb_authToken); // 商戶授權token
formData.addField('bizContent', {
outTradeNo: out_trade_no, // 訂單號
totalAmount: money, // 支付金額
subject: '支付到賬',
body: 'rhmzf',
buyerId: buyer_id, // 支付用戶 userId
extend_params: {
sys_service_provider_id: shop.sho_zfb_pid // 商戶ID
}
});
try {
const result = await alipaySdk.exec(
'alipay.trade.create',
{},
{
formData: formData,
validateSign: true
},
);
/**
* 獲取支付寶交易號
*/
var oauth2Result = await ctx.curl(result, {
method: 'GET',
dataType: 'json',
});
params = oauth2Result;
} catch (err) {
console.log('報錯了 ' + JSON.stringify(err))
}
}
3.引入支付寶jsAPI (支付寶H5開發文檔)
通過支付寶交易號喚起支付
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.min.js"></script> </head> <body> <h1>點擊以下按鈕喚起收銀台支付</h1> <!-- 引入 --> <!-- 按鈕 --> <button id="J_btn" class="btn btn-default">支付</button> <script> // 觸發事件 var btn = document.querySelector('#J_btn'); btn.addEventListener('click', function () { ap.tradePay({ tradeNO: "<%-tradeNO%>" // 支付寶交易號 }, function (res) { ap.alert(res.resultCode); // 你支付成功后要處理的邏輯 }); }); </script> </body> </html>
