技術點:jsbridge。
一: 參數及其意義(代碼意義結合支付項目)
二:主動請求原生參數與方法(sendapi)
參數1 判斷接口類型
參數2 傳遞給原生的數據
參數3 回調函數,responseData 接受原生傳遞的數據
(1)獲取原生的支付方法 (項目:點擊支付去調用原生,彈出原生支付框)
jsBridge.sendApi.choiceAppPay(jsBridge.sendType.choiceAppPayDefault, senData, function(responseData) {
console.log(responseData)
})
jsBridge.sendType.choiceAppPayDefault 判斷接口類型 支付
sedData 調用方法的同時傳遞給原生的數據
responseData 調用方法的同時接受原生的數據
(2) 獲取原生userid的方法 (進入首頁獲取用戶userid 方法)
jsBridge.sendApi.choiceWebGainAppData(jsBridge.sendType.userInfo, null,(responseData)=>{
jsBridge.sendType.userInfo 判斷接口的類型 獲取useid
null 沒有傳遞數據
responseData 獲取原生的數據
let data = getJson(responseData);
this.setUniqueIDMutations(data.userID);
this.parameterObj.uniqueID = data.userID;
this.listDate = [];
this.renderOrderList();
});
三: 提供給原生調用的方法及參數(recieveapi)
參1:jsBridge.recieveType.paystatus 判斷原生需要調用的類型
參2: jsonData是接收的數據
參數3:respponsecallback 給原生的數據
(如:在原生調用方法之后會傳遞來狀態碼 8000.... 前端根據狀態碼來進行下一步的操作)
參數說明 : window[jsBridge.recieveType.paystatus] 判斷給原生調用的是哪一個接口
window[jsBridge.recieveType.paystatus] = (jsonData,responseCallback)=> {
//收到狀態
console.log(jsonData);
//判斷狀態碼
let payStatusMessage ='';
switch(jsonData.payStatusCode){
case "9000":
payStatusMessage = '支付寶支付訂單支付成功';
break;
case "8000":
payStatusMessage = '支付寶支付正在處理中,支付結果未知(有可能已經支付成功),請查詢商戶訂單列表中訂單的支付狀態';
break;
case "4000":
payStatusMessage = '支付寶支付重復請求';
break;
case "5000":
payStatusMessage = '支付寶支付訂單支付失敗';
break;
case "6001":
payStatusMessage = '支付寶支付支付寶支付用戶中途取消';
break;
case "6002":
payStatusMessage = '支付寶支付網絡連接出錯';
break;
case "6004":
payStatusMessage = '支付寶支付支付結果未知(有可能已經支付成功),請查詢商戶訂單列表中訂單的支付狀態';
break;
case "0":
payStatusMessage = '微信支付成功';
break;
case "-1":
payStatusMessage = '微信支付錯誤:可能的原因:簽名錯誤、未注冊APPID、項目設置APPID不正確、注冊的APPID與設置的不匹配、其他異常等。';
break;
case "-2":
payStatusMessage = '微信支付取消';
break;
case "4001":
payStatusMessage = '用戶取消支付';
break;
default:
payStatusMessage = '其它支付錯誤';
break;
}
// let payLogSendInfo = {
// SESSIONID:"123",
// UNIQUEID:jsonData.userID,
// TEMAIL:'',
// PHONE:'',
// ORDERID:jsonData.orderId,
// LOGTYPE:2,
// MESSAGE:`代碼:${jsonData.payStatusCode},信息:${payStatusMessage}`
// }
// alert(JSON.stringify(payLogSendInfo))
//發送信息給后台
//請求成功
if(jsonData.payStatusCode === "9000" || jsonData.payStatusCode === "0" ) {
// alert('支付成功')
payLog("123",jsonData.userID,'','',jsonData.orderId,2,`代碼:${jsonData.payStatusCode},信息:${payStatusMessage}`).then(res =>{
console.log(res);
//跳轉訂單詳情頁
router.push({name: 'myOrderDetail', query: {orderID:jsonData.orderId }})
}).catch(err =>{
console.log(err);
})
}else { //請求失敗
// alert('支付失敗')
payLog("123",jsonData.userID,'','',jsonData.orderId,2,`代碼:${jsonData.payStatusCode},信息:${payStatusMessage}`).then(res =>{
console.log(res);
//跳轉訂單列表
router.push({name:'myOrder',
params:{
orderListActive:1,
}})
}).catch(err =>{
console.log(err);
})
}
//跳轉訂單詳情頁
//判斷狀態並處理
// if(jsonData.payStatusCode === 1){
// console.log('支付成功');
// getOrderDetail(jsonData.orderId).then(res =>{
// console.log(res.data.Data);
// if(res.data.Data.STATUS === 0 || res.data.Data.STATUS === 2){
// //支付成功但顯示待支付跳路由
// router.push({
// name:'myOrderDetail',
// params:{
// }
// })
// }else if(res.data.Data.STATUS === 1){
// //服務器也返回成功
// }else {
// //其他錯誤
// console.log(res.data.Message);
// }
// })
// }else{
// console.log('支付失敗');
// }
const responseData = jsonData;
responseCallback && responseCallback(responseData);
}