W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
該服務(wù)端 DEMO 幫助開(kāi)發(fā)者生成調(diào)用 tt.pay 接口的參數(shù),通過(guò)參數(shù) AppletVersion 來(lái)控制生成的結(jié)果,AppletVersion 為固定值 '3.0'
服務(wù)端 DEMO 生成訂單信息 orderInfo 如下(參數(shù)值僅供參考):
{
app_id: "800000040005",
sign_type: "MD5",
out_order_no: "MicroApp7075638135",
merchant_id: "1300000004",
timestamp: "1566720681",
product_code: "pay",
payment_type: "direct",
total_amount: 1,
trade_type: "H5",
uid: "2019012211",
version: "2.0",
currency: "CNY",
subject: "microapp test",
body: "microapp test",
trade_time: "1566720681",
valid_time: "300",
notify_url: "https://tp-pay.snssdk.com/cashdesk/test/paycallback",
wx_url:
"https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx25161122572189727ea14cfd1832451500&package=2746219290",
wx_type: "MWEB",
alipay_url:
"alipay_sdk=alipay-sdk-java-3.4.27.ALL&app_id=2018061460417275&biz_content=%7B%22body%22%3A%22%E6%B5%8B%E8%AF%95%E8%AE%A2%E5%8D%95%22%2C%22extend_params%22%3A%7B%7D%2C%22out_trade_no%22%3A%2211908250000028453790%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22seller_id%22%3A%222088721387102560%22%2C%22subject%22%3A%22%E6%B5%8B%E8%AF%95%E8%AE%A2%E5%8D%95%22%2C%22timeout_express%22%3A%22599m%22%2C%22total_amount%22%3A%220.01%22%7D&charset=utf-8&format=json&method=alipay.trade.app.pay¬ify_url=http%3A%2F%2Fapi-test-pcs.snssdk.com%2Fgateway%2Fpayment%2Fcallback%2Falipay%2Fnotify%2Fpay&sign=D2A6ua51os2aIzIH907ppK7Bd9Q2Kk5h7AtKPdudP%2Be%2BNTtAkp0Lfojtgl4BMOIQ3Z7cWyYMx6nk4qbntSx7aZnBhWAcImLbVVr1cmaYAedmrmJG%2B3f8G5TfAZu53ESzUgk02%2FhU1XV0iXRyE8TdEJ97ufmxwsUEc7K0EvwEFDIBCJg73meQtyCRFgCqYRWvmxetQgL7pwfKXpFXjAYsvFrRBas2YGYt689XpBS321g%2BZ8SZ0JOtLPWqhROzEs3dnAtWBW15y3NzRiSNi5rPzah4cWd4SgT0LZHmNf3eDQEHEcPmofoWfnA4ao75JmP95aLUxerMumzo9OwqhiYOUw%3D%3D&sign_type=RSA2×tamp=2019-08-25+16%3A11%3A22&version=1.0",
sign: "15aa99cd80878661a4d442b7540bdf96",
risk_info: '{"ip":"127.0.0.1","device_id":"485737374363263"}'
}
服務(wù)端 DEMO 提供 Go、Java、Node 語(yǔ)言版本:
參考 tt.pay
(1)下單
在使用前,請(qǐng)先在商戶后端完成業(yè)務(wù)訂單創(chuàng)建,然后調(diào)用 Server SDK (參考服務(wù)端接入)方法,生成調(diào)起小程序收銀臺(tái)的訂單信息參數(shù) orderInfo:
{
app_id: "800000040005",
sign_type: "MD5",
out_order_no: "xxxx",
merchant_id: "1300000004",
...
}
商戶前端拿到 orderInfo參數(shù)后,使用 tt.pay 發(fā)起支付流程
tt.pay({
orderInfo: orderInfo,
...
})
(2)查詢微信支付結(jié)果
由于開(kāi)發(fā)者未將微信和支付寶的密鑰交付給字節(jié)跳動(dòng),無(wú)法代為發(fā)起交易,所以從小程序發(fā)起支付跳轉(zhuǎn)微信之后,微信支付訂單可能處于支付成功,取消等狀態(tài);此時(shí)需要商戶前端實(shí)現(xiàn) getOrderStatus 方法,用于在商戶側(cè)查詢訂單的支付狀態(tài),getOrderStatus 需開(kāi)發(fā)者自行實(shí)現(xiàn):
tt.pay({
...
getOrderStatus(res) {
let { out_order_no } = res;
return new Promise(function (resolve, reject) {
// 商戶前端根據(jù) out_order_no 請(qǐng)求商戶后端,查詢當(dāng)前訂單的支付狀態(tài)
tt.request({
url: "<your-backend-url>",
success(res) {
// 商戶后端查詢的訂單支付狀態(tài),返回小程序收銀臺(tái)支付結(jié)果
resolve({ code: 0 | 1 | 2 | 3 | 9 });
},
fail(err) {
reject(err);
}
});
});
},
...
})
resolve 的參數(shù)為一個(gè)對(duì)象,其中 code 是一個(gè) number:
(3)支付結(jié)果
參考 tt.pay
支付結(jié)果返回后有以下兩個(gè)注意點(diǎn):
// 這只是一個(gè)輪詢查單的示例,請(qǐng)根據(jù)實(shí)際情況實(shí)現(xiàn)輪詢查單
tt.pay({
...
success(res) {
if (res.code == 0) {
// 支付成功處理邏輯,只有res.code=0時(shí),才表示支付成功
// 但是最終狀態(tài)要以商戶后端結(jié)果為準(zhǔn)
let count = 0
let timer = setTimeout(() => {
// 自行選擇輪詢次數(shù)
if (count > 3) {
clearTimeout(timer)
// 商戶根據(jù)自身需求處理輪詢完未成功的狀態(tài)
return
}
// 商戶前端根據(jù) out_order_no 請(qǐng)求商戶后端查詢微信/支付寶支付訂單狀態(tài)
tt.request({
url: "<your-backend-url>",
success(res) {
// 商戶后端查詢到的微信/支付寶訂單狀態(tài)
},
fail(err) {
// 處理請(qǐng)求失敗
}
});
count++
}, 500)
}
}
...
})
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: