技术点: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. tensorflow 训练cifar10报错

    1.AttributeError: 'module' object has noattribute 'random_crop' 解决方案: 将distorted_image= tf.image.ran ...

  2. js基础-函数基础

    js 先对函数进行解析 然后在执行函数 定义一个函数 实现求两个数的乘 function mult(a,b){ return a*b; } mult(1,3) 计算1 - n 的和 封装成函数 fun ...

  3. Dao层向sql语句传递多个参数

    手动封装: serviceImpl层 Map<String, Object> params = new HashMap<String, Object>(2);params.pu ...

  4. SMB扫描

    server message block协议,Windows特有的一个协议,实现较复杂,windows应用最广的一个协议,也是安全问题最多的问题,smb协议windows默认开发,用于文件共享. sm ...

  5. MONGO的简单语法,新手实用

    window上启动方式:(简单略) mongod --dbpath E:\study_lib\mongodb\db --port=27000 show dababases; (创建配置文件的启动方式) ...

  6. Oracle中Null与空字符串' '的区别

    含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除 ...

  7. centos 6 KVM 网卡桥接配置

    一. 网卡桥接前准备 1.软件支持: # rpm -qa bridge-utils # yum install bridge-utils       确保软件包已安装 2. 关闭NetworkMana ...

  8. RedHat 更新CentOS Yum源(转)

    经测试,可用.转自:https://www.cnblogs.com/tangsen/p/5151994.html 一.随笔引言 1.1随笔内容: 1.RedHat 配置Centos yum源 2.yu ...

  9. HDU_1024.MaxSumPlusPlus(基础DP + 滚动数组优化讲解)

    这道题打破了我常规的做题思路,因为这是我刚开始训练DP,感觉这道题目好晕眼呀,emm其实就是感觉自己是真的菜...... 为什么说打破了我的做题思路呢,因为我平时看题解都是在已经AC或者完全不懂的情况 ...

  10. Mac上反编译Android apk安装包

    什么是反编译 我们知道,Android的程序打包后会生成一个APK文件,这个文件可以直接安装到任何Android手机上,因此,反编译就是对这个APK进行反编译.Android的反编译分成两个部分: 一 ...