W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
調(diào)起字節(jié)跳動(dòng)小程序收銀臺(tái)支付,或者微信、支付寶 API 支付。詳細(xì)接入文檔見(jiàn):小程序收銀臺(tái)(pay)接入文檔
支持支付方式:微信支付、支付寶收銀臺(tái)支付支持版本:今日頭條(iOS / Android)7.2.7+版本,抖音(Android)7.1.0+版本/(iOS)8.6.0+版本API 支付支持版本:今日頭條(iOS / Android)7.4.3+版本
object 類型,屬性如下:
屬性 | 類型 | 默認(rèn)值 | 必填 | 說(shuō)明 | 最低支持版本 |
---|---|---|---|---|---|
success | function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) | 1.19.0 | |
complete | function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行) | 1.19.0 | |
fail | function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) | 1.19.0 | |
orderInfo | object | 是 | 調(diào)起小程序支付收銀臺(tái)的簽名訂單信息。 該對(duì)象由開(kāi)發(fā)者服務(wù)端產(chǎn)生并經(jīng)過(guò) 服務(wù)端簽名 加上 sign 字段后返回;返回后小程序端 請(qǐng)不要修改 orderInfo 上的字段,否則將會(huì)導(dǎo)致簽名驗(yàn)證失敗 | 1.19.0 | |
service | number | 是 | 固定值:1 (拉起小程序收銀臺(tái)) 開(kāi)發(fā)者如果不希望使用頭條小程序收銀臺(tái),service 設(shè)置為 3/4 時(shí),可以直接拉起微信/支付寶進(jìn)行支付: service=3: 微信 API 支付,不拉起小程序收銀臺(tái); service=4: 支付寶 API 支付,不拉起小程序收銀臺(tái)。==其中 service=3、4,僅在 1.35.0.1+基礎(chǔ)庫(kù)(頭條 743+)支持== | 1.19.0 | |
getOrderStatus | function | 是 | 商戶前端實(shí)現(xiàn)的查詢支付訂單狀態(tài)方法(該方法需要返回個(gè) Promise 對(duì)象), service=3、4 時(shí)不需要傳 | 1.19.0 | |
_debug | number | 0 | 否 | 僅限調(diào)試用,上線前去掉該參數(shù)。_debug=1 時(shí),微信支付期間可以看到中間報(bào)錯(cuò)信息,方便調(diào)試 | 1.19.0 |
orderInfo 屬性如下:
屬性 | 類型 | 必填 | 是否參與簽名 | 說(shuō)明 |
---|---|---|---|---|
merchant_id | string | 是 | 是 | 頭條支付分配給商戶的商戶號(hào) |
app_id | string | 是 | 是 | 頭條支付分配給商戶 app_id ,用于獲取加簽秘鑰信息。 |
sign_type | string | 是 | 是 | 固定值:MD5 。商戶生成簽名的算法類型 |
timestamp | string | 是 | 是 | 發(fā)送請(qǐng)求的時(shí)間戳,精確到秒 |
version | string | 是 | 是 | 固定值:2.0 |
trade_type | string | 是 | 是 | 固定值:H5 |
sign | string | 是 | 否 | 簽名,具體簽名方案見(jiàn) 服務(wù)端簽名 |
product_code | string | 是 | 是 | 固定值:pay |
payment_type | string | 是 | 是 | 固定值:direct |
out_order_no | string | 是 | 是 | 商戶訂單號(hào) |
uid | string | 是 | 是 | 用戶在商戶側(cè)唯一標(biāo)志,長(zhǎng)度:32 位 |
total_amount | number | 是 | 是 | 金額,整型,單位:分(不能有小數(shù)) |
currency | string | 是 | 是 | 固定值: CNY。幣種 |
subject | string | 是 | 是 | 商戶訂單名稱;如果是測(cè)試接入,請(qǐng)務(wù)必填寫:xxx 業(yè)務(wù)xx 活動(dòng)測(cè)試,例如,懂車帝xx 活動(dòng)測(cè)試 |
body | string | 是 | 是 | 商戶訂單詳情 |
trade_time | string | 是 | 是 | 下單時(shí)間戳,精確到秒 |
valid_time | string | 是 | 是 | 訂單有效時(shí)間(單位 秒) |
notify_url | string | 是 | 是 | 填任意非空 URL 即可(該字段含義為:銀行卡支付的回調(diào)地址,未開(kāi)通銀行卡支付的開(kāi)發(fā)者,該字段值填非空 URL 地址) |
alipay_url | string | 否 | 是 | 調(diào)用支付寶 App 支付所需的支付請(qǐng)求參數(shù)(形如 'app_id=xxx&biz_content=xxx...' ),詳見(jiàn)支付寶 App 支付請(qǐng)求參數(shù)說(shuō)明。service=1 時(shí),如不傳則不展示支付寶支付; service=4 時(shí)必傳。 |
wx_url | string | 否 | 是 | 調(diào)用微信 H5 支付統(tǒng)一下單接口 返回的 mweb_url 字段值(請(qǐng)注意不要進(jìn)行 urlencode)。 service=1 時(shí),如不傳則不展示微信支付; service=3 時(shí)必傳。 |
wx_type | string | 否 | 是 | wx_url 非空時(shí)傳 'MWEB' 。wx_url 為空時(shí),該字段不傳 |
risk_info | string | 是 | 否 | 支付風(fēng)控參數(shù)。序列化后的 JSON 結(jié)構(gòu)字符串,JSON 結(jié)構(gòu)如下:{ip: '用戶外網(wǎng)IP', device_id: '用戶設(shè)備唯一標(biāo)識(shí)'} |
說(shuō)明:service=3|4 時(shí),merchant_id, app_id, sign_type, sign, wx_url, alipay_url, wx_type 字段值必須是真實(shí)信息;其他字段傳非空、符合格式要求內(nèi)容即可,不強(qiáng)制要求是真實(shí)訂單信息
由于開(kāi)發(fā)者不能將微信和支付寶的密鑰交付給字節(jié)跳動(dòng),無(wú)法代為發(fā)起交易,所以從小程序發(fā)起支付跳轉(zhuǎn)微信之后,微信支付訂單可能處于支付成功,取消等狀態(tài);此時(shí)用戶回到小程序后需要商戶通知微信支付的結(jié)果用于處理收銀臺(tái)后續(xù)交互
該函數(shù)需要開(kāi)發(fā)者自己實(shí)現(xiàn),該函數(shù)功能是:開(kāi)發(fā)者前端通過(guò)商戶訂單號(hào)(out_order_no),向開(kāi)發(fā)者后端查詢微信訂單的支付狀態(tài),將該訂單支付狀態(tài)返回給收銀臺(tái)。
該函數(shù)需要返回 Promise 對(duì)象,實(shí)現(xiàn)方案參考 代碼示例。
請(qǐng)注意:只有商戶后端查詢到微信支付訂單明確的終態(tài)(0,1,2,3)時(shí)才傳這幾個(gè)訂單狀態(tài),收銀臺(tái)在接收到這幾個(gè)狀態(tài)后,會(huì)自動(dòng)關(guān)閉收銀臺(tái);如果訂單狀態(tài)未明確(例如跳轉(zhuǎn)微信未支付返回)則傳 9,收銀臺(tái)接收到這個(gè)狀態(tài)后不會(huì)關(guān)閉收銀臺(tái),用戶可以繼續(xù)發(fā)起確認(rèn)支付操作。
屬性 | 類型 | 說(shuō)明 |
---|---|---|
code | number | 0:支付成功 1:支付超時(shí) 2:支付失敗 3:支付關(guān)閉 4:支付取消 9:訂單狀態(tài)開(kāi)發(fā)者自行獲取。只要調(diào)起收銀臺(tái)成功,支付狀態(tài)都會(huì)回調(diào)success 返回,開(kāi)發(fā)者依據(jù)返回的 code 值,進(jìn)行后續(xù)業(yè)務(wù)邏輯處理 |
object 類型,屬性如下:
屬性 | 類型 | 說(shuō)明 |
---|---|---|
errMsg | string | API 支付錯(cuò)誤碼:10000- 支付失敗,10001- 調(diào)起微信失敗,10002- 微信未安裝 |
tt.pay({
orderInfo: {
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"}'
},
service: 1,
getOrderStatus(res) {
let { out_order_no } = res;
return new Promise(function(resolve, reject) {
// 商戶前端根據(jù) out_order_no 請(qǐ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);
}
});
});
},
success(res) {
if (res.code == 0) {
// 支付成功處理邏輯,只有res.code=0時(shí),才表示支付成功
// 但是最終狀態(tài)要以商戶后端結(jié)果為準(zhǔn)
}
},
fail(res) {
// 調(diào)起收銀臺(tái)失敗處理邏輯
}
});
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)系方式:
更多建議: