原生和web交互jsbridge交互總結


 技術點: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);
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM