/**
* 识别设备终端,获取app相关信息
*/
window.terminal = (function () {
var u = navigator.userAgent;//app = navigator.appVersion;
return {
//浏览器版本信息
trident: u.indexOf('Trident') > -1,
presto: u.indexOf('Presto') > -1,
webKit: u.indexOf('AppleWebKit') > -1,
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') > -1,
mobile: !!u.match(/AppleWebKit.*Mobile.*/),
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
iPhone: u.indexOf('iPhone') > -1,
iPad: u.indexOf('iPad') > -1,
webApp: u.indexOf('Safari') > -1,
weixin: u.indexOf('MicroMessenger') > -1 && u.replace(/.*(MicroMessenger\/[^\s]*).*/, "$1").replace("MicroMessenger/", "") || false,
appVersion: u.indexOf('bocapp(') > -1 ? u.match(/bocapp\(\S+\)/)[0].slice(7, -1) : '3.0.0'
};
})()
// *
// * APP版本号比较方法
// * @param (String) version1 版本号1,当前版本号
// * @param (String) version2 版本号2,要求最低版本号
// * @returns {Number} 判断版本号1是否高于版本号2,高于为1,等于为0,低于为-1
// APP当前版本号获取方法:window.terminal.appVersion
window.versionCompare = function (version1, version2) {
var v1 = version1.split('.');
var v2 = version2.split('.');
for (var i = 0; i < v1.length; i++) {
if (v1[i] * 1 > v2[i] * 1) {
return 1; // 当前版本号大于要求最低版本号
} else if (v1[i] * 1 < v2[i] * 1) {
return -1; // 当前版本号小于要求最低版本号
}
}
return 0; // 当前版本号等于要求最低版本号
}
/**
* 引入cordova
*/
var script = document.createElement('script')
var pth = "https://ebsnew.boc.cn/bocphone/BocMerchant/" // 生产环境
// 外网环境直接引用生产地址即可,若需新增cordova方法,另行提供DMZ区地址
if (window.terminal.iPhone) {
script.src = pth + 'paylib/ios.js'
} else if (window.terminal.android) {
script.src = pth + 'paylib/android.js'
} else {
alert('无法识别终端类型')
}
document.getElementsByTagName('head')[0].appendChild(script)
调取代码
//调起APP支付 res数据为后端返回
document.addEventListener('deviceready', function () {
var setting = {
// 下述数据仅为示例,实际数据上送格式请参考cordova接口文档的描述
merchantNo: res.data.pay_info.merchantNo, // 商户号
version: res.data.pay_info.version, // 版本号
messageId: res.data.pay_info.messageId, // 交易码
security: res.data.pay_info.security, // 签名方法
message: res.data.pay_info.message, // 请求报文明文信息
signature: res.data.pay_info.signature, // 请求报文签名信息
custBackFlag: "1"
};
window.c_plugins.merchantBridge.callPaymentControl(function (data) {
// 下述内容为点击左上角<后执行
if (data.isCancelPay === "1") {
// 客户取消了支付
payclose();
paycloseAjax(res.data.order_num)
// cancelPay(res.order_id);
} else if(data.orderStatus === "1") {
// 支付成功的回调方法,可写返回后逻辑
paysuccess()
}
else {
// 客户支付失败
payerror()
paycloseAjax(res.data.order_num)
// 支付失败的回调方法 ,可写返回后逻辑
}
},
function (err) {
console.log('网络错误')
}, setting)
});
以上就是中国银行app调取支付的方法,遇到坑,可参考。