技术点: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);
}

  

 

原生和web交互jsbridge交互总结的更多相关文章

  1. WebView JS交互 JSBridge 案例 原理 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. 1.PHP与Web页面的交互

    一.概览: PHP是一种专门用于Web开发的服务器端脚本语言.从这个描述可以知道,PHP要打交道的对象主要有服务器(Server),和基于Web的HTML(超文本标识语言).使用PHP处理Web应用时 ...

  3. WEB的数据交互具体流程

    前一段时间小小的总结了一下,web的前后交互的各种方式可能没写全,后期再写,话不多说 前端传递数据到servlet,servlet获取数据后操作DAO修改数据库,然后servlet将某些参数返回到前端 ...

  4. iOS原生和React-Native之间的交互1

    今天,记录一下iOS原生和React-Native之间的交互.如果第一次接触最好先移步至 http://www.cnblogs.com/shaoting/p/6388502.html 先看一下怎么在i ...

  5. 使用 Drag and Drop 给Web应用提升交互体验

    什么是 Drag and Drop (拖放)? 简单来说,HTML5 提供了 Drag and Drop API,允许用户用鼠标选中一个可拖动元素,移动鼠标拖放到一个可放置到元素的过程. 我相信每个人 ...

  6. web前后端交互,nodejs

    手机赚钱怎么赚,给大家推荐一个手机赚钱APP汇总平台:手指乐(http://www.szhile.com/),辛苦搬砖之余用闲余时间动动手指,就可以日赚数百元 web前后端交互 前后端交互可以采用混合 ...

  7. web实现数据交互的几种常见方式

    前言 在当今社会,作为一名前端程序猿,并不是一昧的去制作静态页面就可以满足滴:你说你会制作网页,好吧,只能说你算是一个前端程序猿.但这是你作为一个程序猿最基本的能力,并不会为你进行加分: 我们都明白, ...

  8. 创意十足的web布局及交互设计

    富有灵感和创意的设计与一般设计的区别在于,它不那么容易被想到和实现,一旦它被实现,一个非常有趣并且迷人的网站就诞生了. 网站几乎每天都能见到,但是不是每一个网站你都会说“真希望我也能想到过!” 设计者 ...

  9. iOS原生APP与H5+JS交互////////////////////zzzz

    原生代码中直接加载页面 1.    具体案例 加载本地/网络HTML5作为功能介绍页 2.    代码示例 //本地 -(void)loadLocalPage:(UIWebView*)webView ...

随机推荐

  1. linux软连接(转)

    这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接. 这个命令最常用的参数是-s,具体用法是:sudo l ...

  2. OCR技术浅探(转)

    网址:https://spaces.ac.cn/archives/3785 OCR技术浅探 作为OCR系统的第一步,特征提取是希望找出图像中候选的文字区域特征,以便我们在第二步进行文字定位和第三步进行 ...

  3. express返回html文件

    [express返回html文件] app.engine(ext, callback) 方法即可创建一个你自己的模板引擎.其中,ext 指的是文件扩展名.callback 是模板引擎的主函数,接受文件 ...

  4. cdnbest补充api

    1.应用防火墙---防CC 添加|修改 请求地址: {api_dir}/firewall/anticc 请求方式: PUT 请求参数: frcquency string 触发频率 例:low(低) | ...

  5. Mysql 单表操作、增删查改(基础4)

    新建一个表,往里面插入数据. #新建一个表 mysql> create table test( -> id int, -> name varchar(20) -> );Quer ...

  6. TP3.23 与Laypage 结合进行分页

    demo地址:http://tp.ytlwin.top 控制器 <?php namespace Home\Controller; use Think\Controller; class Inde ...

  7. Error:stray '\243' in program

    c++ 程序出现 Error:stray '\243' in program 错误 错误情况: 错误原因: 有不标准的 ASCII 字符出现,一般是中英文问题,比如 :or ;     , or ,等 ...

  8. as3.0两点之间简单的运动,斜着运动,任意两点

    import flash.utils.Timer;import flash.events.TimerEvent;//fixed结束点//sprite初始点var fixedX:Number = fix ...

  9. pta l2-5(集合相似度)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805070149828608 题意:求两个集合的相同的不同元素的 ...

  10. random 模块 时间模块(time) sys模块 os模块

    random  模块 1.随机小数 random.random()  0-1内的随机小数 random.uniform(1,5)  1-5范围内的随机小数 2.随机整数 random.randint( ...