原生和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);
}
原生和web交互jsbridge交互总结的更多相关文章
- WebView JS交互 JSBridge 案例 原理 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 1.PHP与Web页面的交互
一.概览: PHP是一种专门用于Web开发的服务器端脚本语言.从这个描述可以知道,PHP要打交道的对象主要有服务器(Server),和基于Web的HTML(超文本标识语言).使用PHP处理Web应用时 ...
- WEB的数据交互具体流程
前一段时间小小的总结了一下,web的前后交互的各种方式可能没写全,后期再写,话不多说 前端传递数据到servlet,servlet获取数据后操作DAO修改数据库,然后servlet将某些参数返回到前端 ...
- iOS原生和React-Native之间的交互1
今天,记录一下iOS原生和React-Native之间的交互.如果第一次接触最好先移步至 http://www.cnblogs.com/shaoting/p/6388502.html 先看一下怎么在i ...
- 使用 Drag and Drop 给Web应用提升交互体验
什么是 Drag and Drop (拖放)? 简单来说,HTML5 提供了 Drag and Drop API,允许用户用鼠标选中一个可拖动元素,移动鼠标拖放到一个可放置到元素的过程. 我相信每个人 ...
- web前后端交互,nodejs
手机赚钱怎么赚,给大家推荐一个手机赚钱APP汇总平台:手指乐(http://www.szhile.com/),辛苦搬砖之余用闲余时间动动手指,就可以日赚数百元 web前后端交互 前后端交互可以采用混合 ...
- web实现数据交互的几种常见方式
前言 在当今社会,作为一名前端程序猿,并不是一昧的去制作静态页面就可以满足滴:你说你会制作网页,好吧,只能说你算是一个前端程序猿.但这是你作为一个程序猿最基本的能力,并不会为你进行加分: 我们都明白, ...
- 创意十足的web布局及交互设计
富有灵感和创意的设计与一般设计的区别在于,它不那么容易被想到和实现,一旦它被实现,一个非常有趣并且迷人的网站就诞生了. 网站几乎每天都能见到,但是不是每一个网站你都会说“真希望我也能想到过!” 设计者 ...
- iOS原生APP与H5+JS交互////////////////////zzzz
原生代码中直接加载页面 1. 具体案例 加载本地/网络HTML5作为功能介绍页 2. 代码示例 //本地 -(void)loadLocalPage:(UIWebView*)webView ...
随机推荐
- SVN 报错“Previous operation has not finished; run 'cleanup' if it was interrupted” 原因及解决方案
今天遇到的问题 svn无论是执行checkout,commit,update的时候提示需要cleap up,但 svn执行clean up命令时报错“Previous operation has no ...
- java 开学第四周
package english; import java.io.File; import java.util.Scanner; import java.io.FileNotFoundException ...
- sass 的安装 http://blog.csdn.net/weixin_38362146/article/details/78035971?locationNum=10&fps=1
http://blog.csdn.net/weixin_38362146/article/details/78035971?locationNum=10&fps=1
- WPF双向绑定
需求: 思想批量保存数据. 思路: 看了一下MVVM.发现只需要实现前台和后台数据的同步即可.也就是前台的文本框内容变化时后台的对象的属性也要变化就可以了. 参考: http://www.cnblog ...
- 二:python 对象类型概述
1,为什么使用内置类型: a)内置对象使程序更容易编写 b)内置对象是扩展的组件 c)内置对象往往比定制的数据结构更加高效 d)内置对象是语言的标准的一部分 2,python 的主要内置对象 对象类 ...
- UNITY3D 2D物流流体插件下载|Liquid Physics 2D
制作类似<鳄鱼小顽皮爱洗澡>游戏的必备插件 下载地址: https://item.taobao.com/item.htm?spm=0.7095261.0.0.47411debZFbEUn& ...
- word 2016 加载 mathtype
1.加载wold: 首先打开word,选择选项-------加载项------管理(A),选择word加载项,点击转到 这儿显示的是我已经添加过的所以显示的有. 2.点击添加,找到你的mathtype ...
- HDU 1166 敌兵布阵(线段树单点更新,区间查询)
描述 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况 ...
- PAT L3-001 凑零钱(01背包dp记录路径)
韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有104枚来自各个星球的硬币,需要请你帮她盘算一下,是 ...
- f5售后查询
登录: https://secure.f5.com/validate/validate.jsp http://boochem.blog.51cto.com/628505/633907