@@ -34,7 +34,6 @@ | |||
const imgURL = `${fileURL}image/`; | |||
const selectedUrl = "common/selected.png`"; | |||
const unSelectedUrl = "common/unselected.png`"; | |||
const wjApi = require("../../static/etc/WJAPI/wjBleAPI"); | |||
const jyApi = require("../../static/etc/JYAPI/GenvictBleUtil.js"); | |||
const jlQZApi = require("../../static/etc/JLQZAPI/JLObuSDK.js"); | |||
const atApi = require("../../static/etc/ATAPI/ArtcBleUtil.js"); | |||
@@ -48,10 +47,12 @@ | |||
const datas = require("../../static/etcUtil/datas.js"); | |||
const bluetoothUtil = require("../../static/etcUtil/index.js"); | |||
let jlApi = require("../../static/etc/JLAPI/JLObuSDK.js"); | |||
let jlApi = require("../../static/etc/JLAPI/JLObuSDK.js"); //聚力SDK | |||
let wjApi = require("../../static/etc/WJAPI/wjBleAPI"); | |||
// #ifdef MP-ALIPAY | |||
// 这部分代码将仅在支付宝小程序平台下执行 | |||
jlApi = require("../../static/etc/JLObuSDK/JLObuSDK.js"); | |||
wjApi = require("../../static/etc/WJBLE/WJBleAPI"); | |||
// 执行支付宝小程序的特定功能 | |||
// #endif | |||
@@ -366,9 +367,11 @@ | |||
wjApi.connectDevice( | |||
device, | |||
function (res) { | |||
console.log('WJ输出内容1',res) | |||
connectSuccess(res); | |||
}, | |||
function (res) { | |||
console.log('WJ输出内容2',res) | |||
listenStatus(res); | |||
} | |||
); |
@@ -13,7 +13,41 @@ | |||
}}</view> | |||
</view> | |||
</view> | |||
<!-- <view class="register-main"> | |||
<view class="title">请输入验证码</view> | |||
<view class="hint">验证码已发送至:{{ phone }}</view> | |||
<view class="input-code"> | |||
<verification-code-input v-model="code" ></verification-code-input> | |||
</view> | |||
<view class="hint2"> | |||
<view class="green">{{ codeDuration === 0 ? "" : codeDuration }}</view> | |||
<view class="grey" @click="sendRegisterCode">{{ | |||
codeDuration === 0 ? "重新发送验证码" : "秒后可重新发送验证码" | |||
}}</view> | |||
</view> | |||
</view> --> | |||
<u-form ref="myForm"> | |||
<view class="from"> | |||
<u-form-item prop="phone"> | |||
<view class="from_item" style="background-color: #f7f7f7"> | |||
<text><text style="color: red"></text>手机号:</text> | |||
<u-input v-model="phone" :disabled="true" class="input" /> | |||
</view> | |||
</u-form-item> | |||
<u-form-item prop="code"> | |||
<view class="from_item"> | |||
<text><text style="color: red"></text>验证码:</text> | |||
<u-input v-model="code" placeholder="请输入验证码" class="input" /> | |||
<view class="hint2"> | |||
<view class="green">{{ codeDuration === 0 ? "" : codeDuration }}</view> | |||
<view class="grey" @click="sendRegisterCode">{{ | |||
codeDuration === 0 ? "发送验证码" : "秒后可重发" | |||
}}</view> | |||
</view> | |||
</view> | |||
</u-form-item> | |||
</view> | |||
</u-form> | |||
<view class="btn"> | |||
<submit-button title="下一步" @submit="nextStep"></submit-button> | |||
</view> |
@@ -32,7 +32,7 @@ | |||
const imgURL = `${fileURL}image/`; | |||
const selectedUrl = "common/selected.png`"; | |||
const unSelectedUrl = "common/unselected.png`"; | |||
const wjApi = require("../../static/etc/WJAPI/wjBleAPI"); | |||
const jyApi = require("../../static/etc/JYAPI/GenvictBleUtil.js"); | |||
const jlQZApi = require("../../static/etc/JLQZAPI/JLObuSDK.js"); | |||
const atApi = require("../../static/etc/ATAPI/ArtcBleUtil.js"); | |||
@@ -46,9 +46,11 @@ | |||
const datas = require("../../static/etcUtil/datas.js"); | |||
const bluetoothUtil = require("../../static/etcUtil/index.js"); | |||
let jlApi = require("../../static/etc/JLAPI/JLObuSDK.js"); //聚力SDK | |||
let wjApi = require("../../static/etc/WJAPI/wjBleAPI"); | |||
// #ifdef MP-ALIPAY | |||
// 这部分代码将仅在支付宝小程序平台下执行 | |||
jlApi = require("../../static/etc/JLObuSDK/JLObuSDK.js"); | |||
wjApi = require("../../static/etc/WJBLE/WJBleAPI"); | |||
// 执行支付宝小程序的特定功能 | |||
// #endif | |||
@@ -348,6 +350,12 @@ | |||
connectPrefixName.value = item.prefixName; | |||
// delete device.prefixName | |||
// delete device._name | |||
// #ifdef MP-ALIPAY | |||
// 支付宝小程序代码 | |||
// #endif | |||
// #ifdef MP-WEIXIN | |||
// 微信小程序代码 | |||
// #endif | |||
console.log(item); | |||
@@ -355,6 +363,20 @@ | |||
console.info("连接的是" + prefixName); | |||
switch (prefixName) { | |||
case "WJ": | |||
// #ifdef MP-ALIPAY | |||
wjApi.connectDevice( | |||
function (res) { | |||
console.log('链接结果', res) | |||
connectSuccess(res); | |||
if (res.code == 0) { | |||
connectSuccess(res); | |||
} else { | |||
listenStatus(res); | |||
} | |||
} | |||
); | |||
// #endif | |||
// #ifdef MP-WEIXIN | |||
wjApi.connectDevice( | |||
device, | |||
function (res) { | |||
@@ -364,16 +386,17 @@ | |||
listenStatus(res); | |||
} | |||
); | |||
// #endif | |||
break; | |||
case "JL": | |||
jlApi.connectDevice( | |||
device, | |||
function (res) { | |||
console.log('设备链接1',res) | |||
console.log('设备链接1', res) | |||
connectSuccess(res); | |||
}, | |||
function (res) { | |||
console.log('设备链接2',res) | |||
console.log('设备链接2', res) | |||
listenStatus(res); | |||
} | |||
); |
@@ -253,7 +253,7 @@ const selectConfirm = (item: any) => { | |||
const rechargeAction = () => { | |||
state.fee = state.money * 100; //元换成分 | |||
wx.showModal({ | |||
uni.showModal({ | |||
title: '圈存确认', | |||
content: '您确定要充值圈存吗', | |||
success: function (res) { | |||
@@ -754,7 +754,7 @@ const selectConfirm = (item: any) => { | |||
const aliPayment = () => { | |||
// #ifdef MP-ALIPAY | |||
my.getAuthCode({ | |||
scopes: 'auth_user', | |||
scopes: 'auth_base', | |||
success: res => { | |||
const optionsUser = { | |||
type: 2, | |||
@@ -774,7 +774,7 @@ const selectConfirm = (item: any) => { | |||
wxOpenId: data.openId, | |||
cardId: state.cardId, | |||
orderNum: state.orderNum, | |||
payConfigId: wechatPayConfigId, | |||
payConfigId: "6a9a54123456578934edfre132b1234", | |||
body: "储值卡充值", | |||
}, | |||
method: "POST", | |||
@@ -784,7 +784,7 @@ const selectConfirm = (item: any) => { | |||
const data = stringToJson(res.bizContent); | |||
my.tradePay ({ | |||
// 调用统一收单交易创建接口(alipay.trade.create),获得返回字段支付宝交易号 trade_no | |||
tradeNO: data.prepayId, | |||
tradeNO: data.tranPackage, | |||
success: res => { | |||
console.log("支付成功", res); | |||
checkOrder(); |
@@ -1 +1 @@ | |||
var appVersion="1.0.0";export var area_config={protocol_version:1310,};export function ICCResetCmd(){switch(area_config.protocol_version){case 1310:return'A2';break;case 1320:return'A2';break;case 1312:return'A2';break;case 1330:return"A801";break}}export function ICCChannelCmd(){switch(area_config.protocol_version){case 1310:return'A3';break;case 1320:return'A3';break;case 1312:return'A3';break;case 1330:return"A3";break}}export function ESAMResetCmd(){switch(area_config.protocol_version){case 1310:return'AA';break;case 1320:return'A8';break;case 1312:return'A2';break;case 1330:return"A803";break}}export function ESAMChannelCmd(){switch(area_config.protocol_version){case 1310:return'AC';break;case 1320:return'A4';break;case 1312:return'A8';break;case 1330:return"A7";break}}export function ObuAuthCmd(){switch(area_config.protocol_version){case 1310:return'FF';break;case 1320:return'A9';break;case 1312:return'FF';break}}export function deviceInfo(){switch(area_config.protocol_version){case 1310:return'FF';break;case 1320:return'AA';break;case 1312:return'FF';break}}export function NewPipe(){switch(area_config.protocol_version){case 1310:return'FF';break;case 1320:return'AD';break;case 1312:return'FF';break}}export function ActState(){switch(area_config.protocol_version){case 1310:return'FF';break;case 1320:return'AC';break;case 1312:return'FF';break}}export function checkPower(){switch(area_config.protocol_version){case 1330:return'A5';break}}export function ResetFlag(){return'JLReset'}export function ChannelFlag(){return'JLChannel'}export function Auth(){return'JLAuth'}export function ActStateFlag(){return'JLActState'}export function NewPipFlag(){return'JLNewPip'}export function DeviceInfo(){return'JLDeviceInfo'}export function successCode(){return 0}export function errorCode(){return 10020}export function timeOutCode(){return 10102}export function cardNoExists(){return 10103}export function bleSuccessCode(){return 0}export function bleErrorCode(){return 10101}export function bleAvailableCode(){return 10104}export function cosErrorCode(){return 100100}export var message={api:'',status:'',sendCmd:[],reciveCmd:[]};export function DevResult(type,objc){var code='';var err_msg='';var res=null;var msg='';if(objc.code==successCode()){err_msg='执行成功';message.reciveCmd.push(objc.data);switch(type){case 0:{var data=objc.data;var sw=data.substr(data.length-4,4);if(sw=='9000'){message.status='00';code=successCode();data=objc.data.substr(0,data.length-4);err_msg='操作成功';msg=''}else{message.status='01';code=cosErrorCode();data=null;err_msg='COS指令错误';msg=sw}}break;case 1:{message.status='00';code=objc.code;err_msg=objc.msg;data=objc.data.substr(4,objc.data.length-4);msg=crsateMessage()}break;case 2:{message.status='00';console.log('判断obuInfo:'+objc.data);code=objc.code;err_msg=objc.msg;data=objc.data.substr(6,objc.data.length-6);msg=crsateMessage()}break;case 3:{message.status='00';console.log('认证数据:'+objc.data);code=objc.code;err_msg=objc.msg;data=objc.data.substr(8,2);msg=crsateMessage()}break;default:break}return{code:code,err_msg:err_msg,data:data,msg:crsateMessage()}}else{message.status='01';return{code:objc.code,err_msg:objc.msg,data:null,msg:crsateMessage()}}}function crsateMessage(){var messageInfo=message.api+"|"+message.sendCmd+"|"+message.status+"|"+message.reciveCmd;return messageInfo} | |||
var appVersion="1.0.2";export var area_config={protocol_version:1330,};export function ICCResetCmd(){switch(area_config.protocol_version){case 1310:return'A2';break;case 1320:return'A2';break;case 1312:return'A2';break;case 1330:return"A801";break}}export function ICCChannelCmd(){switch(area_config.protocol_version){case 1310:return'A3';break;case 1320:return'A3';break;case 1312:return'A3';break;case 1330:return"A3";break}}export function ESAMResetCmd(){switch(area_config.protocol_version){case 1310:return'AA';break;case 1320:return'A8';break;case 1312:return'A2';break;case 1330:return"A803";break}}export function ESAMChannelCmd(){switch(area_config.protocol_version){case 1310:return'AC';break;case 1320:return'A4';break;case 1312:return'A8';break;case 1330:return"A7";break}}export function ObuAuthCmd(){switch(area_config.protocol_version){case 1310:return'FF';break;case 1320:return'A9';break;case 1312:return'FF';break}}export function deviceInfo(){switch(area_config.protocol_version){case 1310:return'FF';break;case 1320:return'AA';break;case 1312:return'FF';break}}export function NewPipe(){switch(area_config.protocol_version){case 1310:return'FF';break;case 1320:return'AD';break;case 1312:return'FF';break}}export function ActState(){switch(area_config.protocol_version){case 1310:return'FF';break;case 1320:return'AC';break;case 1312:return'FF';break}}export function checkPower(){switch(area_config.protocol_version){case 1330:return'A5';break}}export function ResetFlag(){return'JLReset'}export function ChannelFlag(){return'JLChannel'}export function Auth(){return'JLAuth'}export function ActStateFlag(){return'JLActState'}export function NewPipFlag(){return'JLNewPip'}export function DeviceInfo(){return'JLDeviceInfo'}export function successCode(){return 0}export function errorCode(){return 10020}export function timeOutCode(){return 10102}export function cardNoExists(){return 10103}export function bleSuccessCode(){return 0}export function bleErrorCode(){return 10101}export function bleAvailableCode(){return 10104}export function cosErrorCode(){return 100100}export var message={api:'',status:'',sendCmd:[],reciveCmd:[]};export function DevResult(type,objc){var code='';var err_msg='';var res=null;var msg='';if(objc.code==successCode()){err_msg='执行成功';message.reciveCmd.push(objc.data);switch(type){case 0:{var data=objc.data;var sw=data.substr(data.length-4,4);if(sw=='9000'){message.status='00';code=successCode();data=objc.data.substr(0,data.length-4);err_msg='操作成功';msg=''}else{message.status='01';code=cosErrorCode();data=null;err_msg='COS指令错误';msg=sw}}break;case 1:{message.status='00';code=objc.code;err_msg=objc.msg;data=objc.data.substr(4,objc.data.length-4);msg=crsateMessage()}break;case 2:{message.status='00';console.log('判断obuInfo:'+objc.data);code=objc.code;err_msg=objc.msg;data=objc.data.substr(6,objc.data.length-6);msg=crsateMessage()}break;case 3:{message.status='00';console.log('认证数据:'+objc.data);code=objc.code;err_msg=objc.msg;data=objc.data.substr(8,2);msg=crsateMessage()}break;default:break}return{code:code,err_msg:err_msg,data:data,msg:crsateMessage()}}else{message.status='01';return{code:objc.code,err_msg:objc.msg,data:null,msg:crsateMessage()}}}function crsateMessage(){var messageInfo=message.api+"|"+message.sendCmd+"|"+message.status+"|"+message.reciveCmd;return messageInfo} |
@@ -48,7 +48,7 @@ export function connectDevice(device, callBack) { | |||
* 断开连接 | |||
* @param {回调} callBack | |||
*/ | |||
export function disconnectDevice(callBack) { | |||
export function disonnectDevice(callBack) { | |||
JLSDK.disConnectDevice((res) => { | |||
callBack.call(this, res); | |||
@@ -124,14 +124,14 @@ export function ICCChannelArray(cmdArray, callBack) { | |||
export function transCmd(cmdArray, cmdtype, callback) { | |||
if (cmdtype == '10') { | |||
JLSDK.ICCChannel_CmdArray(cmdArray, (res) => { | |||
console.log('卡:', res) | |||
callback.call(this, res); | |||
}) | |||
} | |||
if (cmdtype == '20') { | |||
JLSDK.ESAMChannel_CmdArray(cmdArray, (res) => { | |||
console.log('OBU:', res) | |||
callback.call(this, res); | |||
ESAMChannel('00A40000023F00', (res) => { | |||
JLSDK.ESAMChannel_CmdArray(cmdArray, (res) => { | |||
callback.call(this, res); | |||
}) | |||
}) | |||
} | |||
} |
@@ -1,99 +1 @@ | |||
! function(root, factory) { | |||
if (typeof module === 'object' && module.exports) module.exports = factory(); | |||
else root.onfire = factory() | |||
}(typeof window !== 'undefined' ? window : this, function() { | |||
var __onfireEvents = {}, | |||
__cnt = 0, | |||
string_str = 'string', | |||
function_str = 'function', | |||
hasOwnKey = Function.call.bind(Object.hasOwnProperty), | |||
slice = Function.call.bind(Array.prototype.slice); | |||
function _bind(eventName, callback, is_one, context) { | |||
if (typeof eventName !== string_str || typeof callback !== function_str) { | |||
throw new Error('args: ' + string_str + ', ' + function_str + ''); | |||
} | |||
if (!hasOwnKey(__onfireEvents, eventName)) { | |||
__onfireEvents[eventName] = {} | |||
} | |||
__onfireEvents[eventName][++__cnt] = [callback, is_one, context]; | |||
return [eventName, __cnt] | |||
} | |||
function _each(obj, callback) { | |||
for (var key in obj) { | |||
if (hasOwnKey(obj, key)) callback(key, obj[key]) | |||
} | |||
} | |||
function on(eventName, callback, context) { | |||
return _bind(eventName, callback, 0, context) | |||
} | |||
function one(eventName, callback, context) { | |||
return _bind(eventName, callback, 1, context) | |||
} | |||
function _fire_func(eventName, args) { | |||
if (hasOwnKey(__onfireEvents, eventName)) { | |||
_each(__onfireEvents[eventName], function(key, item) { | |||
item[0].apply(item[2], args); | |||
if (item[1]) delete __onfireEvents[eventName][key] | |||
}) | |||
} | |||
} | |||
function fire(eventName) { | |||
var args = slice(arguments, 1); | |||
setTimeout(function() { | |||
_fire_func(eventName, args) | |||
}) | |||
} | |||
function fireSync(eventName) { | |||
_fire_func(eventName, slice(arguments, 1)) | |||
} | |||
function un(event) { | |||
var eventName, key, r = false, | |||
type = typeof event; | |||
if (type === string_str) { | |||
if (hasOwnKey(__onfireEvents, event)) { | |||
delete __onfireEvents[event]; | |||
return true | |||
} | |||
return false | |||
} else if (type === 'object') { | |||
eventName = event[0]; | |||
key = event[1]; | |||
if (hasOwnKey(__onfireEvents, eventName) && hasOwnKey(__onfireEvents[eventName], key)) { | |||
delete __onfireEvents[eventName][key]; | |||
return true | |||
} | |||
return false | |||
} else if (type === function_str) { | |||
_each(__onfireEvents, function(key_1, item_1) { | |||
_each(item_1, function(key_2, item_2) { | |||
if (item_2[0] === event) { | |||
delete __onfireEvents[key_1][key_2]; | |||
r = true | |||
} | |||
}) | |||
}); | |||
return r | |||
} | |||
return true | |||
} | |||
function clear() { | |||
__onfireEvents = {} | |||
} | |||
return { | |||
on: on, | |||
one: one, | |||
un: un, | |||
fire: fire, | |||
fireSync: fireSync, | |||
clear: clear | |||
} | |||
}); | |||
!function(root,factory){if(typeof module==='object'&&module.exports)module.exports=factory();else root.onfire=factory()}(typeof window!=='undefined'?window:this,function(){var __onfireEvents={},__cnt=0,string_str='string',function_str='function',hasOwnKey=Function.call.bind(Object.hasOwnProperty),slice=Function.call.bind(Array.prototype.slice);function _bind(eventName,callback,is_one,context){if(typeof eventName!==string_str||typeof callback!==function_str){throw new Error('args: '+string_str+', '+function_str+'');}if(!hasOwnKey(__onfireEvents,eventName)){__onfireEvents[eventName]={}}__onfireEvents[eventName][++__cnt]=[callback,is_one,context];return[eventName,__cnt]}function _each(obj,callback){for(var key in obj){if(hasOwnKey(obj,key))callback(key,obj[key])}}function on(eventName,callback,context){return _bind(eventName,callback,0,context)}function one(eventName,callback,context){return _bind(eventName,callback,1,context)}function _fire_func(eventName,args){if(hasOwnKey(__onfireEvents,eventName)){_each(__onfireEvents[eventName],function(key,item){item[0].apply(item[2],args);if(item[1])delete __onfireEvents[eventName][key]})}}function fire(eventName){var args=slice(arguments,1);setTimeout(function(){_fire_func(eventName,args)})}function fireSync(eventName){_fire_func(eventName,slice(arguments,1))}function un(event){var eventName,key,r=false,type=typeof event;if(type===string_str){if(hasOwnKey(__onfireEvents,event)){delete __onfireEvents[event];return true}return false}else if(type==='object'){eventName=event[0];key=event[1];if(hasOwnKey(__onfireEvents,eventName)&&hasOwnKey(__onfireEvents[eventName],key)){delete __onfireEvents[eventName][key];return true}return false}else if(type===function_str){_each(__onfireEvents,function(key_1,item_1){_each(item_1,function(key_2,item_2){if(item_2[0]===event){delete __onfireEvents[key_1][key_2];r=true}})});return r}return true}function clear(){__onfireEvents={}}return{on:on,one:one,un:un,fire:fire,fireSync:fireSync,clear:clear}}); |
@@ -55,6 +55,8 @@ export function disconnectDevice(callBack) { | |||
} | |||
export function transCmd(cmdArray, cmdtype, callback) { | |||
console.log('输出内容',cmdArray) | |||
if (cmdtype == '10') { | |||
JLSDK.ICCChannel_CmdArray(cmdArray, (res) => { | |||
callback.call(this, res); |
@@ -0,0 +1,467 @@ | |||
const _0x92e0 = ['错误码:', 'FEE7', 'concat', 'sendDataToDevice->', 'data', '发送数据异常', 'code', 'toString', '发送蓝牙指令返回数据异常', | |||
'slice', '发送esam指令成功', 'connectTimeout', 'errorMessage', 'length', 'exports', 'resolveTLV', 'makeTLV', | |||
'offBLECharacteristicValueChange', '蓝牙数据发送:', 'Services->', 'log', 'deviceId', 'function', | |||
'getBLEDeviceServices', 'makeA8SendData', 'stringify', 'value', 'success', 'fail', 'push', '发送蓝牙指令超时', 'then', | |||
'bufferArrayToHexString', 'makeA5SendData', 'notifyBLECharacteristicValueChange', '监听数据失败', '读取不到Services', | |||
'services', '连接超时' | |||
]; | |||
const _0xf5c9 = function(_0x92e01f, _0xf5c941) { | |||
_0x92e01f = _0x92e01f - 0x0; | |||
let _0x50d73c = _0x92e0[_0x92e01f]; | |||
return _0x50d73c; | |||
}; | |||
const dataUtil = require('./DataUtil.js'); | |||
module[_0xf5c9('0xe')] = { | |||
'connectAndInit': connectDevice, | |||
'disConnect': disconnectDevice, | |||
'sendAndReceive': sendAndReceive, | |||
'sendA5Command': sendA5Command | |||
}; | |||
const FUNCTION = _0xf5c9('0x16'); | |||
var tagServiceUUID = ''; | |||
var tagWriteUUID = ''; | |||
var tagReadUUID = ''; | |||
const androidServiceUUID = '0000fee7-0000-1000-8000-00805f9b34fb'; | |||
const androidWriteUUID = '0000fec7-0000-1000-8000-00805f9b34fb'; | |||
const androidReadUUID = '0000fec8-0000-1000-8000-00805f9b34fb'; | |||
const iosServiceUUID = _0xf5c9('0x1'); | |||
const iosWriteUUID = 'FEC7'; | |||
const iosReadUUID = 'FEC8'; | |||
var connectDeviceId; | |||
var connectCallback; | |||
var connectTimer; | |||
var reconnectTimer; | |||
var transTimer; | |||
var read = ![]; | |||
var frame = ''; | |||
var frameLen = 0x0; | |||
var frames = new Array(); | |||
var framesLen = 0x0; | |||
var dataHandlerCallback; | |||
var sendBufferArray = new Array(); | |||
var cmds = new Array(); | |||
var sendIndex; | |||
var resendCount = 0x3; | |||
var reconnectCount = 0x0; | |||
function toObject(_0x163b31, _0x2cb0af, _0x2f910b) { | |||
return { | |||
'code': _0x163b31, | |||
'data': _0x2cb0af, | |||
'msg': _0x2f910b | |||
}; | |||
} | |||
const codeEnum = { | |||
'success': 0x3e8, | |||
'fail': 0xfa0, | |||
'timeout': 0x7d0, | |||
'connectTimeout': 0x7d2 | |||
}; | |||
function connectDevice(_0x51d9b3, _0x15c0b5, _0x297201) { | |||
my[_0xf5c9('0x11')](); | |||
setTimeout(() => { | |||
connectDeviceId = _0x51d9b3[_0xf5c9('0x15')]; | |||
connectCallback = _0x15c0b5; | |||
if (typeof connectTimer != undefined) { | |||
clearTimeout(connectTimer); | |||
} | |||
connectTimer = setTimeout(() => { | |||
typeof connectCallback['fail'] == FUNCTION && connectCallback['fail'](toObject(codeEnum[ | |||
_0xf5c9('0xb')], undefined, _0xf5c9('0x26'))); | |||
}, _0x297201); | |||
my['connectBLEDevice']({ | |||
'deviceId': connectDeviceId, | |||
'success': _0x1e99d7 => { | |||
getBLEDeviceServices(); | |||
}, | |||
'fail': _0x3ba55a => { | |||
if (typeof connectTimer != undefined) { | |||
clearTimeout(connectTimer); | |||
} | |||
typeof connectCallback[_0xf5c9('0x1c')] == FUNCTION && connectCallback[_0xf5c9( | |||
'0x1c')](toObject(codeEnum[_0xf5c9('0x1c')], undefined, '连接失败:' + JSON[ | |||
_0xf5c9('0x19')](_0x3ba55a))); | |||
} | |||
}); | |||
}, 0x96); | |||
} | |||
function disconnectDevice(_0x129f55) { | |||
my['disconnectBLEDevice']({ | |||
'deviceId': connectDeviceId, | |||
'success'(_0x4e659d) { | |||
typeof _0x129f55[_0xf5c9('0x1b')] == FUNCTION && _0x129f55['success'](toObject(codeEnum[_0xf5c9( | |||
'0x1b')], _0x4e659d, '断开连接成功')); | |||
}, | |||
'fail'(_0x22025a) { | |||
typeof _0x129f55[_0xf5c9('0x1c')] == FUNCTION && _0x129f55['fail'](toObject(codeEnum['fail'], | |||
_0x22025a, '断开连接失败')); | |||
} | |||
}); | |||
} | |||
function getBLEDeviceServices() { | |||
my[_0xf5c9('0x17')]({ | |||
'deviceId': connectDeviceId, | |||
'success': _0x4c2800 => { | |||
console[_0xf5c9('0x14')](_0xf5c9('0x13'), _0x4c2800); | |||
let _0x5ab723 = ![]; | |||
tagServiceUUID = ''; | |||
for (let _0x2af1b7 = 0x0; _0x2af1b7 < _0x4c2800[_0xf5c9('0x25')]['length']; _0x2af1b7++) { | |||
let _0x3a301e = _0x4c2800['services'][_0x2af1b7]['serviceId']; | |||
if (_0x3a301e == androidServiceUUID) { | |||
_0x5ab723 = !![]; | |||
tagServiceUUID = androidServiceUUID; | |||
break; | |||
} | |||
if (_0x3a301e == iosServiceUUID) { | |||
_0x5ab723 = !![]; | |||
tagServiceUUID = iosServiceUUID; | |||
break; | |||
} | |||
} | |||
if (_0x5ab723 == !![]) { | |||
getBLEDeviceCharacteristics(); | |||
} else { | |||
if (typeof connectTimer != undefined) { | |||
clearTimeout(connectTimer); | |||
} | |||
typeof connectCallback[_0xf5c9('0x1c')] == FUNCTION && connectCallback[_0xf5c9('0x1c')]( | |||
toObject(codeEnum['fail'], undefined, _0xf5c9('0x24'))); | |||
} | |||
}, | |||
'fail': _0x40d4c9 => { | |||
if (typeof connectTimer != undefined) { | |||
clearTimeout(connectTimer); | |||
} | |||
typeof connectCallback['fail'] == FUNCTION && connectCallback[_0xf5c9('0x1c')](toObject( | |||
codeEnum[_0xf5c9('0x1c')], undefined, '读取Services失败')); | |||
} | |||
}); | |||
} | |||
function getBLEDeviceCharacteristics() { | |||
my['getBLEDeviceCharacteristics']({ | |||
'deviceId': connectDeviceId, | |||
'serviceId': tagServiceUUID, | |||
'success': _0x32b130 => { | |||
let _0x28eee5 = ![]; | |||
let _0x17a958 = ![]; | |||
tagReadUUID = ''; | |||
tagWriteUUID = ''; | |||
console[_0xf5c9('0x14')]('Characteristics->', _0x32b130); | |||
for (let _0x1ca77b = 0x0; _0x1ca77b < _0x32b130['characteristics']['length']; _0x1ca77b++) { | |||
let _0x4abe38 = _0x32b130['characteristics'][_0x1ca77b]['characteristicId']; | |||
if (_0x4abe38 == androidReadUUID) { | |||
_0x28eee5 = !![]; | |||
tagReadUUID = androidReadUUID; | |||
} else if (_0x4abe38 == androidWriteUUID) { | |||
_0x17a958 = !![]; | |||
tagWriteUUID = androidWriteUUID; | |||
} else if (_0x4abe38 == iosReadUUID) { | |||
_0x28eee5 = !![]; | |||
tagReadUUID = iosReadUUID; | |||
} else if (_0x4abe38 == iosWriteUUID) { | |||
_0x17a958 = !![]; | |||
tagWriteUUID = iosWriteUUID; | |||
} | |||
if (_0x28eee5 == !![] && _0x17a958 == !![]) { | |||
break; | |||
} | |||
} | |||
if (_0x28eee5 == !![] && _0x17a958 == !![]) { | |||
notifyBLECharacteristicValueChange(); | |||
} else { | |||
if (typeof connectTimer != undefined) { | |||
clearTimeout(connectTimer); | |||
} | |||
typeof connectCallback[_0xf5c9('0x1c')] == FUNCTION && connectCallback['fail'](toObject( | |||
codeEnum['fail'], undefined, '读取不到Characteristics')); | |||
} | |||
}, | |||
'fail': _0x1aa5f4 => { | |||
if (typeof connectTimer != undefined) { | |||
clearTimeout(connectTimer); | |||
} | |||
typeof connectCallback[_0xf5c9('0x1c')] == FUNCTION && connectCallback['fail'](toObject( | |||
codeEnum['fail'], undefined, '读取Characteristics失败')); | |||
} | |||
}); | |||
} | |||
function notifyBLECharacteristicValueChange() { | |||
my[_0xf5c9('0x22')]({ | |||
'state': !![], | |||
'deviceId': connectDeviceId, | |||
'serviceId': tagServiceUUID, | |||
'characteristicId': tagReadUUID, | |||
'success': () => { | |||
if (typeof connectTimer != undefined) { | |||
clearTimeout(connectTimer); | |||
} | |||
setTimeout(() => { | |||
typeof connectCallback[_0xf5c9('0x1b')] == FUNCTION && connectCallback[_0xf5c9( | |||
'0x1b')](toObject(codeEnum['success'], undefined, '连接成功,握手成功')); | |||
}, 0x3e8); | |||
my['onBLECharacteristicValueChange']({ | |||
'success': _0x30bb4a => { | |||
if (read) { | |||
analyticData(_0x30bb4a[_0xf5c9('0x1a')]['toLowerCase']()); | |||
} | |||
} | |||
}); | |||
}, | |||
'fail': _0x5e6282 => { | |||
if (typeof connectTimer != undefined) { | |||
clearTimeout(connectTimer); | |||
} | |||
typeof connectCallback['fail'] == FUNCTION && connectCallback['fail'](toObject(codeEnum[_0xf5c9( | |||
'0x1c')], undefined, _0xf5c9('0x23'))); | |||
} | |||
}); | |||
} | |||
function offBLECharacteristicValueChange() { | |||
my['offBLECharacteristicValueChange'](); | |||
} | |||
function analyticData(_0x3e5a78) { | |||
console[_0xf5c9('0x14')]('蓝牙数据接收:' + _0x3e5a78); | |||
if (frame[_0xf5c9('0xd')] == 0x0) { | |||
frameLen = parseInt(_0x3e5a78['slice'](0x4, 0x8), 0x10) * 0x2; | |||
} | |||
frame += _0x3e5a78; | |||
if (frame[_0xf5c9('0x9')](0x0, 0x4) != 'fe01') { | |||
frame = ''; | |||
frameLen = 0x0; | |||
} else if (frame['length'] > frameLen) { | |||
frame = ''; | |||
frameLen = 0x0; | |||
typeof dataHandlerCallback == FUNCTION && dataHandlerCallback(toObject(codeEnum[_0xf5c9('0x1c')], '', | |||
'数据长度越界')); | |||
} else if (frame[_0xf5c9('0xd')] == frameLen) { | |||
let _0x4b2e97 = frame[_0xf5c9('0x9')](0x8, 0xc); | |||
if (_0x4b2e97 === '2712') { | |||
let _0x1453f8 = frame['slice'](0x10); | |||
let _0x206028 = _0x1453f8['slice'](0x8, -0x6); | |||
frame = ''; | |||
frameLen = 0x0; | |||
if (frames['length'] == 0x0) { | |||
let _0x15c5e1 = parseInt(_0x206028['slice'](0x4, 0x6), 0x10); | |||
framesLen = _0x15c5e1 - 0x80 + 0x1; | |||
} | |||
frames[_0xf5c9('0x1d')](_0x206028); | |||
if (frames['length'] == framesLen) { | |||
let _0x5e3a98 = !![]; | |||
for (let _0xab8645 = 0x0; _0xab8645 < frames[_0xf5c9('0xd')]; _0xab8645++) { | |||
let _0x40bd69 = frames[_0xab8645]; | |||
let _0x2c9f45 = 0x0; | |||
for (let _0x3a8918 = 0x1; _0x3a8918 < parseInt(_0x40bd69[_0xf5c9('0xd')] / 0x2) - | |||
0x1; _0x3a8918++) { | |||
let _0x1e2dcc = parseInt(_0x40bd69['slice'](_0x3a8918 * 0x2, (_0x3a8918 + 0x1) * 0x2), 0x10); | |||
_0x2c9f45 ^= _0x1e2dcc; | |||
} | |||
if (_0x2c9f45 != parseInt(_0x40bd69[_0xf5c9('0x9')](-0x2), 0x10)) { | |||
_0x5e3a98 = ![]; | |||
break; | |||
} | |||
} | |||
if (_0x5e3a98 == ![]) { | |||
frames = new Array(); | |||
framesLen = 0x0; | |||
typeof dataHandlerCallback == FUNCTION && dataHandlerCallback(toObject(codeEnum[_0xf5c9('0x1c')], | |||
'', 'bcc校验不通过')); | |||
} else { | |||
let _0x33b27d = ''; | |||
for (let _0x345bc5 = 0x0; _0x345bc5 < frames[_0xf5c9('0xd')]; _0x345bc5++) { | |||
let _0x49a282 = frames[_0x345bc5]; | |||
_0x33b27d += _0x49a282[_0xf5c9('0x9')](0x8, -0x2); | |||
} | |||
frames = new Array(); | |||
framesLen = 0x0; | |||
typeof dataHandlerCallback == FUNCTION && dataHandlerCallback(toObject(codeEnum['success'], | |||
_0x33b27d, '成功')); | |||
} | |||
} | |||
} else { | |||
frame = ''; | |||
frameLen = 0x0; | |||
} | |||
} | |||
} | |||
function sendAndReceive(_0x232938, _0x172387, _0x2383ba, _0x30b171) { | |||
if (_0x232938 != 0x0 && _0x232938 != 0x1) { | |||
typeof _0x2383ba[_0xf5c9('0x1c')] == FUNCTION && _0x2383ba['fail'](toObject(codeEnum['success'], undefined, | |||
'type\x20错误')); | |||
return; | |||
} | |||
if (typeof transTimer != undefined) { | |||
clearTimeout(transTimer); | |||
} | |||
transTimer = setTimeout(() => { | |||
typeof _0x2383ba['fail'] == FUNCTION && _0x2383ba[_0xf5c9('0x1c')](toObject(codeEnum['timeout'], | |||
undefined, _0x232938 == 0x0 ? '发送ICC指令超时' : '发送esam指令超时')); | |||
}, _0x30b171); | |||
cmds = _0x172387[_0xf5c9('0x9')](); | |||
var _0x3a5000 = promise(_0x172387, _0x232938); | |||
_0x3a5000 = _0x3a5000[_0xf5c9('0x1f')](_0x3e2371 => { | |||
if (typeof transTimer != undefined) { | |||
clearTimeout(transTimer); | |||
} | |||
if (_0x3e2371 === undefined) { | |||
return; | |||
} | |||
typeof _0x2383ba['success'] == FUNCTION && _0x2383ba['success'](toObject(codeEnum['success'], _0x3e2371, | |||
_0x232938 == 0x0 ? '发送ICC指令成功' : _0xf5c9('0xa'))); | |||
}, (_0x423b8f, _0x29d8d8) => { | |||
if (_0x423b8f != undefined) { | |||
if (typeof transTimer != undefined) { | |||
clearTimeout(transTimer); | |||
} | |||
typeof _0x2383ba['fail'] == FUNCTION && _0x2383ba['fail'](toObject(codeEnum[_0xf5c9('0x1c')], | |||
_0x29d8d8, _0x423b8f)); | |||
} | |||
}); | |||
} | |||
function promise(_0x468151, _0x4d2ff8) { | |||
return new Promise((_0x34c1f8, _0x2da9e1) => { | |||
if (_0x4d2ff8 === 0x0) { | |||
var _0x3b4904 = dataUtil['makeA3SendData']('00', dataUtil['makeTLV'](_0x468151)); | |||
} else { | |||
var _0x3b4904 = dataUtil[_0xf5c9('0x18')]('00', dataUtil[_0xf5c9('0x10')](_0x468151)); | |||
} | |||
sendDataToDevice(_0x3b4904, _0x26bfbd => { | |||
if (_0x26bfbd['code'] === codeEnum[_0xf5c9('0x1b')]) { | |||
if (_0x26bfbd['data'][_0xf5c9('0x9')](0x2, 0x4) === '00' || _0x26bfbd[_0xf5c9('0x4')][ | |||
'slice' | |||
](0x2, 0x4) === 'cf') { | |||
let _0xe05ae9 = _0x26bfbd['data']['slice'](0xa); | |||
let _0x209462 = dataUtil[_0xf5c9('0xf')](_0x26bfbd['data']['slice'](0xa)); | |||
_0x34c1f8(_0x209462); | |||
} else { | |||
console['log']('TLV指令集有指令执行失败'); | |||
let _0x295677 = _0x26bfbd['data']['slice'](0xa); | |||
let _0x41c368 = dataUtil[_0xf5c9('0xf')](_0x26bfbd[_0xf5c9('0x4')][_0xf5c9('0x9')]( | |||
0xa)); | |||
_0x2da9e1(_0xf5c9('0x0') + _0x41c368[_0x41c368['length'] - 0x1][_0xf5c9('0x9')](- | |||
0x4)); | |||
} | |||
} else { | |||
console['log'](_0xf5c9('0x5')); | |||
_0x2da9e1(_0x26bfbd['msg']); | |||
} | |||
}); | |||
}); | |||
} | |||
function sendDataToDevice(_0x11c220, _0xdbb603) { | |||
dataHandlerCallback = _0xdbb603; | |||
sendBufferArray = new Array()[_0xf5c9('0x2')](_0x11c220); | |||
sendIndex = 0x0; | |||
read = !![]; | |||
frame = ''; | |||
frameLen = 0x0; | |||
frames = new Array(); | |||
framesLen = 0x0; | |||
runningSendData(); | |||
} | |||
function runningSendData() { | |||
let _0x1cf6e5 = sendBufferArray[sendIndex]; | |||
let _0x32342d = dataUtil[_0xf5c9('0x20')](_0x1cf6e5); | |||
console[_0xf5c9('0x14')](_0xf5c9('0x12') + _0x32342d); | |||
my['writeBLECharacteristicValue']({ | |||
'deviceId': connectDeviceId, | |||
'serviceId': tagServiceUUID, | |||
'characteristicId': tagWriteUUID, | |||
'value': _0x1cf6e5, | |||
'success': function(_0x2fc6f) { | |||
sendIndex++; | |||
resendCount = 0x3; | |||
if (sendIndex < sendBufferArray[_0xf5c9('0xd')]) { | |||
runningSendData(); | |||
} | |||
}, | |||
'fail': function(_0x3d2851) { | |||
if (_0x3d2851[_0xf5c9('0xc')]['indexOf']('数据格式错误') != -0x1) { | |||
typeof dataHandlerCallback == FUNCTION && dataHandlerCallback(toObject(codeEnum[_0xf5c9( | |||
'0x1c')], '', '发送的数据格式错误:' + _0x32342d)); | |||
} else { | |||
typeof dataHandlerCallback == FUNCTION && dataHandlerCallback(toObject(codeEnum[_0xf5c9( | |||
'0x1c')], '', '发送数据失败:' + JSON['stringify'](_0x3d2851))); | |||
} | |||
} | |||
}); | |||
} | |||
function sendA5Command(_0x1fc32c, _0x2ce9f8, _0x1cd591) { | |||
var _0x3eaa69 = setTimeout(() => { | |||
typeof _0x2ce9f8['fail'] == FUNCTION && _0x2ce9f8[_0xf5c9('0x1c')](toObject(codeEnum['fail'], undefined, | |||
_0xf5c9('0x1e'))); | |||
}, _0x1cd591); | |||
var _0x1e98c4 = dataUtil['makeA5SendData'](_0x1fc32c['toUpperCase']()); | |||
sendDataToDevice(_0x1e98c4, _0xabe804 => { | |||
if (_0x3eaa69 != undefined) { | |||
clearTimeout(_0x3eaa69); | |||
} | |||
console['log'](_0xf5c9('0x3'), JSON['stringify'](_0xabe804)); | |||
if (_0xabe804[_0xf5c9('0x6')] === codeEnum['success']) { | |||
if (_0xabe804['data'][_0xf5c9('0x9')](0x0, 0x2) == 'b5' && _0xabe804['data']['slice'](0x2, 0x4) == | |||
'00') { | |||
let _0x3a72fc = parseInt(_0xabe804[_0xf5c9('0x4')][_0xf5c9('0x9')](0x4, 0x6), 0x10); | |||
typeof _0x2ce9f8[_0xf5c9('0x1b')] == FUNCTION && _0x2ce9f8['success'](toObject(codeEnum[ | |||
'success'], _0xabe804[_0xf5c9('0x4')][_0xf5c9('0x9')](0x6, 0x6 + _0x3a72fc * | |||
0x2), '成功')); | |||
} else { | |||
typeof _0x2ce9f8['fail'] == FUNCTION && _0x2ce9f8['fail'](toObject(codeEnum[_0xf5c9('0x1c')], | |||
_0xabe804['data'], _0xf5c9('0x8'))); | |||
} | |||
} else { | |||
typeof _0x2ce9f8['fail'] == FUNCTION && _0x2ce9f8[_0xf5c9('0x1c')](toObject(codeEnum[_0xf5c9( | |||
'0x1c')], undefined, 'A5指令发送数据失败')); | |||
} | |||
}); | |||
} | |||
function openOrCloseAerial(_0x53abde, _0x2bfc73, _0x557cdb) { | |||
if (_0x53abde == undefined || typeof _0x53abde != 'number' || _0x53abde != 0x0 && _0x53abde != 0x1) { | |||
typeof _0x2bfc73['fail'] == FUNCTION && _0x2bfc73['fail'](toObject(0xfa0, undefined, '无效参数')); | |||
} else { | |||
var _0x3aeea4 = setTimeout(() => { | |||
typeof _0x2bfc73[_0xf5c9('0x1c')] == FUNCTION && _0x2bfc73[_0xf5c9('0x1c')](toObject(0x7d0, | |||
undefined, '打开/关闭天线指令超时')); | |||
}, _0x557cdb); | |||
var _0x1299bc = 0x0; | |||
if (_0x53abde === 0x0) { | |||
_0x1299bc = 0x3; | |||
} else { | |||
_0x1299bc = 0x1; | |||
} | |||
let _0x483ee7 = 'C7' + parseInt(_0x1299bc)[_0xf5c9('0x7')](0x10)['padStart'](0x2, '0'); | |||
var _0xb5d3ff = dataUtil[_0xf5c9('0x21')](_0x483ee7); | |||
console[_0xf5c9('0x14')](_0xb5d3ff); | |||
sendDataToDevice(_0xb5d3ff, _0x50a3b1 => { | |||
if (_0x3aeea4 != undefined) { | |||
clearTimeout(_0x3aeea4); | |||
} | |||
if (_0x50a3b1['code'] === codeEnum['successCode']) { | |||
if (_0x50a3b1['data']['slice'](0x0, 0x2) == 'b5' && _0x50a3b1[_0xf5c9('0x4')]['slice'](0x2, | |||
0x4) == '00') { | |||
let _0x146e42 = parseInt(_0x50a3b1[_0xf5c9('0x4')]['slice'](0x4, 0x6), 0x10); | |||
typeof _0x2bfc73[_0xf5c9('0x1b')] == FUNCTION && _0x2bfc73['success'](toObject(codeEnum[ | |||
'successCode'], _0x50a3b1[_0xf5c9('0x4')][_0xf5c9('0x9')](0x6, 0x6 + | |||
_0x146e42 * 0x2), '成功')); | |||
} else { | |||
typeof _0x2bfc73['fail'] == FUNCTION && _0x2bfc73[_0xf5c9('0x1c')](toObject(0xfa0, | |||
_0x50a3b1['data'], _0xf5c9('0x8'))); | |||
} | |||
} else { | |||
typeof _0x2bfc73['fail'] == FUNCTION && _0x2bfc73['fail'](toObject(0xfa0, undefined, | |||
'打开/关闭天线失败')); | |||
} | |||
}); | |||
} | |||
} |
@@ -0,0 +1,170 @@ | |||
module['exports'] = { | |||
'numberToHexString': numberToHexString, | |||
'hexStringToBufferArray': hexStringToBufferArray, | |||
'bufferArrayToHexString': bufferArrayToHexString, | |||
'makeTLV': makeTLV, | |||
'resolveTLV': resolveTLV, | |||
'makeA3SendData': makeA3SendData, | |||
'makeA8SendData': makeA8SendData, | |||
'makeA5SendData': makeA5SendData | |||
}; | |||
const frameLen = (0x3d540 ^ 0x3d5d6) * (0x9c688 ^ 0x9c68a); | |||
const sendLen = (0x88300 ^ 0x88314) * (0x21722 ^ 0x21720); | |||
const ST = '33'; | |||
const preProto = '0a0012'; | |||
const endProto = '1800'; | |||
const bMagic = 'fe'; | |||
const bVer = '01'; | |||
const bCmdId = '7531'; | |||
var SEQ = 0xbe59a ^ 0xbe599; | |||
function makeFrame(_0x35bc96) { | |||
let _0x268129 = parseInt(_0x35bc96['length'] / frameLen); | |||
let _0xacf032 = _0x35bc96['length'] % frameLen; | |||
let _0x42ec4d = new Array(); | |||
for (let _0x198e24 = 0x87337 ^ 0x87337; _0x198e24 < _0x268129; _0x198e24++) { | |||
_0x42ec4d['push'](_0x35bc96['slice'](_0x198e24 * frameLen, (_0x198e24 + (0x19940 ^ 0x19941)) * frameLen)); | |||
} | |||
if (_0xacf032 > (0x4a2e1 ^ 0x4a2e1)) { | |||
_0x42ec4d['push'](_0x35bc96['slice'](-_0xacf032)); | |||
} | |||
let _0x9b32c4 = new Array(); | |||
for (let _0x245523 = 0x67993 ^ 0x67993; _0x245523 < _0x42ec4d['length']; _0x245523++) { | |||
let _0x428823 = _0x42ec4d[_0x245523]; | |||
let _0x207300 = numberToHexString(_0x245523 + (0xb00ff ^ 0xb00fe), 0x1, !![]); | |||
let _0x46166a = ''; | |||
if (_0x245523 == (0x65203 ^ 0x65203)) { | |||
_0x46166a = numberToHexString(0x80 + _0x42ec4d['length'] - 0x1, 0x9f2cd ^ 0x9f2cc, !![]); | |||
} else { | |||
_0x46166a = numberToHexString(_0x42ec4d['length'] - _0x245523 - 0x1, 0x1, !![]); | |||
} | |||
let _0x157c71 = numberToHexString(parseInt(_0x428823['length'] / 0x2), 0x1, !![]); | |||
let _0xb3f3ea = ST + _0x207300 + _0x46166a + _0x157c71 + _0x428823; | |||
let _0x1d5160 = 0x0; | |||
for (let _0x3c4255 = 0x1; _0x3c4255 < parseInt(_0xb3f3ea['length'] / 0x2); _0x3c4255++) { | |||
let _0x6674ef = parseInt(_0xb3f3ea['slice'](_0x3c4255 * 0x2, (_0x3c4255 + (0x33575 ^ 0x33574)) * 0x2), | |||
0xbd490 ^ 0xbd480); | |||
_0x1d5160 = _0x1d5160 ^ _0x6674ef; | |||
} | |||
_0xb3f3ea += numberToHexString(_0x1d5160, 0x1, !![]); | |||
_0x9b32c4['push'](_0xb3f3ea); | |||
} | |||
let _0x5f5d88 = new Array(); | |||
for (let _0x3a0ec9 = 0x1cc00 ^ 0x1cc00; _0x3a0ec9 < _0x9b32c4['length']; _0x3a0ec9++) { | |||
let _0x1f3035 = _0x9b32c4[_0x3a0ec9]; | |||
let _0x31b2a9 = numberToHexString(parseInt(_0x1f3035['length'] / (0x67658 ^ 0x6765a)), 0x43833 ^ 0x43832, !![]); | |||
let _0xb64a0c = preProto + _0x31b2a9 + _0x1f3035 + endProto; | |||
_0x5f5d88['push'](_0xb64a0c); | |||
} | |||
let _0x1e82ae = new Array(); | |||
for (let _0x543968 = 0xbcc79 ^ 0xbcc79; _0x543968 < _0x5f5d88['length']; _0x543968++) { | |||
let _0x59ccdb = _0x5f5d88[_0x543968]; | |||
let _0x1bb73b = numberToHexString(parseInt(_0x59ccdb['length'] / 0x2) + 0x8, 0x88553 ^ 0x88551, !![]); | |||
let _0x3d488f = numberToHexString(SEQ, 0x932b2 ^ 0x932b0, !![]); | |||
let _0x2fb921 = bMagic + bVer + _0x1bb73b + bCmdId + _0x3d488f + _0x59ccdb; | |||
_0x1e82ae['push'](_0x2fb921); | |||
} | |||
SEQ++; | |||
if (SEQ > (0x27c85 ^ 0x27c8a)) { | |||
SEQ = 0xd79d2 ^ 0xd79d3; | |||
} | |||
let _0x28fe81 = new Array(); | |||
for (let _0x35a7da = 0xe59b4 ^ 0xe59b4; _0x35a7da < _0x1e82ae['length']; _0x35a7da++) { | |||
let _0x434969 = _0x1e82ae[_0x35a7da]; | |||
let _0x162390 = parseInt(_0x434969['length'] / sendLen); | |||
let _0x199870 = _0x434969['length'] % sendLen; | |||
for (let _0x4a5a02 = 0x0; _0x4a5a02 < _0x162390; _0x4a5a02++) { | |||
let _0x15127c = _0x434969['slice'](_0x4a5a02 * sendLen, (_0x4a5a02 + (0x86b7e ^ 0x86b7f)) * sendLen); | |||
_0x28fe81['push'](hexStringToBufferArray(_0x15127c)); | |||
} | |||
if (_0x199870 > 0x0) { | |||
let _0x3bc1c1 = _0x434969['slice'](-_0x199870); | |||
_0x28fe81['push'](hexStringToBufferArray(_0x3bc1c1)); | |||
} | |||
} | |||
return _0x28fe81; | |||
} | |||
function makeA3SendData(_0xbfc508, _0x7891ad) { | |||
let _0x44971d = 'a3' + _0xbfc508; | |||
let _0x2651a0 = numberToHexString(parseInt(_0x7891ad['length'] / (0xe1b32 ^ 0xe1b30)), 0x2, ![]); | |||
_0x44971d += _0x2651a0; | |||
_0x44971d += _0x7891ad; | |||
return makeFrame(_0x44971d); | |||
} | |||
function makeA8SendData(_0xf08694, _0x7583ca) { | |||
let _0x429168 = 'a8' + _0xf08694; | |||
let _0x12e5be = numberToHexString(parseInt(_0x7583ca['length'] / 0x2), 0x2, ![]); | |||
_0x429168 += _0x12e5be; | |||
_0x429168 += _0x7583ca; | |||
return makeFrame(_0x429168); | |||
} | |||
function numberToHexString(_0xc38d55, _0x43704c, _0x35fbdc) { | |||
let _0x3fd1cd = _0xc38d55['toString'](0xa903a ^ 0xa902a); | |||
for (let _0x43c509 = _0x3fd1cd['length']; _0x43c509 < _0x43704c * 0x2; _0x43c509++) { | |||
_0x3fd1cd = '0' + _0x3fd1cd; | |||
} | |||
if (_0x3fd1cd['length'] > _0x43704c * 0x2) { | |||
_0x3fd1cd = _0x3fd1cd['substring'](_0x3fd1cd['length'] - _0x43704c * (0x56258 ^ 0x5625a)); | |||
} | |||
if (_0x35fbdc == ![]) { | |||
let _0x1eadfc = ''; | |||
for (let _0x1560e5 = _0x3fd1cd['length'] - 0x2; _0x1560e5 >= 0x0; _0x1560e5 -= 0x4a7b0 ^ 0x4a7b2) { | |||
_0x1eadfc = _0x1eadfc + _0x3fd1cd['substring'](_0x1560e5, _0x1560e5 + 0x2); | |||
} | |||
_0x3fd1cd = _0x1eadfc; | |||
} | |||
return _0x3fd1cd; | |||
} | |||
function hexStringToBufferArray(_0x34cce2) { | |||
let _0x498a85 = new Uint8Array(_0x34cce2['match'](/[0-9a-f]{2}/gi)['map'](function(_0x40572e) { | |||
return parseInt(_0x40572e, 0xa40de ^ 0xa40ce); | |||
})); | |||
return _0x498a85['buffer']; | |||
} | |||
function bufferArrayToHexString(_0x180899) { | |||
let _0x2ce7ed = Array['prototype']['map']['call'](new Uint8Array(_0x180899), _0x5ee1a1 => ('00' + _0x5ee1a1[ | |||
'toString'](0xb3099 ^ 0xb3089))['slice'](-0x2))['join'](''); | |||
return _0x2ce7ed; | |||
} | |||
function makeTLV(_0x457cbe) { | |||
let _0x20719f = ''; | |||
for (let _0x273d52 = 0x0; _0x273d52 < _0x457cbe['length']; _0x273d52++) { | |||
_0x20719f += (_0x273d52 + (0x4a99f ^ 0x4a99e))['toString'](0x10)['padStart'](0xbde89 ^ 0xbde8b, '0') + ( | |||
_0x457cbe[_0x273d52]['length'] / 0x2)['toString'](0x10)['padStart'](0x2, '0') + _0x457cbe[_0x273d52]; | |||
} | |||
return '80' + (_0x20719f['length'] / (0x740e5 ^ 0x740e7))['toString'](0x10)['padStart'](0x2, '0') + _0x20719f; | |||
} | |||
function resolveTLV(_0x56da10) { | |||
let _0x40fe65 = new Array(); | |||
let _0x30a0a3 = parseInt(_0x56da10['substring'](0x206b6 ^ 0x206b4, 0x4), 0xddd22 ^ 0xddd32); | |||
let _0x2a1587 = 0x4; | |||
if (_0x30a0a3 > 0x80) { | |||
_0x2a1587 = _0x2a1587 + (_0x30a0a3 - (0xc1f20 ^ 0xc1fa0)) * 0x2; | |||
} | |||
let _0x5e64a1 = 0x33dd2 ^ 0x33dd3; | |||
while (_0x2a1587 < _0x56da10['length']) { | |||
let _0x1bad89 = parseInt(_0x56da10['substring'](_0x2a1587, _0x2a1587 + 0x2), 0x10); | |||
_0x2a1587 += 0x2; | |||
let _0x24cc76 = parseInt(_0x56da10['substring'](_0x2a1587, _0x2a1587 + (0x8331e ^ 0x8331c)), 0x10); | |||
_0x2a1587 += 0x2; | |||
let _0x3197e6 = _0x56da10['substring'](_0x2a1587, _0x2a1587 + _0x24cc76 * 0x2); | |||
_0x40fe65['push'](_0x3197e6); | |||
_0x2a1587 += _0x24cc76 * 0x2; | |||
} | |||
return _0x40fe65; | |||
} | |||
function makeA5SendData(_0x168749) { | |||
let _0x3a8eb6 = 'a5'; | |||
let _0x1100cb = Number(parseInt(_0x168749['length'] / 0x2))['toString'](0x10)['padStart'](0x2, '0'); | |||
_0x3a8eb6 += _0x1100cb; | |||
_0x3a8eb6 += _0x168749; | |||
return makeFrame(_0x3a8eb6); | |||
} |
@@ -0,0 +1,324 @@ | |||
"use strict"; | |||
var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { | |||
return typeof e | |||
} : function(e) { | |||
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : | |||
typeof e | |||
}, | |||
_WJService = require("./WJService.js"), | |||
_WJService2 = _interopRequireDefault(_WJService), | |||
_WJDataEncode = require("./WJDataEncode.js"), | |||
_WJDataEncode2 = _interopRequireDefault(_WJDataEncode), | |||
_WJDataInteract = require("./WJDataInteract.js"), | |||
_WJDataInteract2 = _interopRequireDefault(_WJDataInteract), | |||
_WJUtils = require("./WJUtils.js"), | |||
_WJUtils2 = _interopRequireDefault(_WJUtils), | |||
_WJDataAnalysis = require("./WJDataAnalysis.js"), | |||
_WJDataAnalysis2 = _interopRequireDefault(_WJDataAnalysis); | |||
function _interopRequireDefault(e) { | |||
return e && e.__esModule ? e : { | |||
default: e | |||
} | |||
} | |||
var connectedDeviceId, TAG_FUNCTION = "function", | |||
SDK_VERSION = "WJ_BLESDK_ZFB_SD_V1.0.1_20230112"; | |||
function connectDevice(t) { | |||
_WJService2.default.reallyConnect(function(e) { | |||
console.log("连接结果:", e.err_msg), (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t(e) | |||
}) | |||
} | |||
function connectDevice2(e, t) { | |||
_WJService2.default._connectDevice(e, function(e) { | |||
console.log("连接结果:", e.err_msg), (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t(e) | |||
}) | |||
} | |||
function disconnectDevice(e, t) { | |||
_WJService2.default.reallyDisConnect(e, function(e) { | |||
console.log("断开结果:", e.err_msg), (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t(e) | |||
}) | |||
} | |||
function authOBU(e, t, a, d) { | |||
var i, s = {}, | |||
n = e.length; | |||
n == t && 8 == a.length ? (t = "c5" + _WJUtils2.default.byte2hexStr(4 + parseInt(n / 2)) + e + a, n = _WJUtils2 | |||
.default.getCMD_TYPE(), i = {}, e = "", 0 == n ? e = "84" : 1 == n && (e = "A2"), i = _WJDataEncode2.default | |||
.encode(t, "", e), _WJDataInteract2.default._StartSendData(i.serviceData.dataEncode, function(e) { | |||
0 == e.serviceCode ? (i = _WJDataAnalysis2.default.analysisAuthOBU(e.serviceData.dataBuff), s.code = | |||
i.serviceCode, s.err_msg = i.serviceInfo, s.data = i.serviceData.dataBuff) : s = e, ( | |||
void 0 === d ? "undefined" : _typeof(d)) == TAG_FUNCTION && d(s) | |||
})) : (s.serviceCode = -1, s.serviceInfo = "paramater is error!", (void 0 === d ? "undefined" : _typeof( | |||
d)) == TAG_FUNCTION && d(s)) | |||
} | |||
function getActState(t) { | |||
var a, d = {}, | |||
e = "", | |||
i = _WJUtils2.default.getCMD_TYPE(); | |||
0 == i ? e = "810100C6" : 1 == i && (e = "A501CB"), a = _WJDataEncode2.default.encode(e), _WJDataInteract2.default | |||
._StartSendData(a.serviceData.dataEncode, function(e) { | |||
0 == e.serviceCode ? (a = _WJDataAnalysis2.default.analysisGetActState(e.serviceData.dataBuff), d.code = | |||
a.serviceCode, d.err_msg = a.serviceInfo, d.data = a.serviceData.dataBuff) : d = e, (void 0 === | |||
t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t(d) | |||
}) | |||
} | |||
function lightAct(e, t, a) { | |||
var d, i = {}, | |||
s = "", | |||
n = "", | |||
o = _WJUtils2.default.getCMD_TYPE(); | |||
1 == e || 0 == e && 0 < t ? (t = _WJUtils2.default.byte2hexStr(t), n = 0 == e ? "C1" : "C2", d = {}, 0 == o ? s = | |||
"870200" + n + t : 1 == o && (s = "A2"), d = _WJDataEncode2.default.encode(s), _WJDataInteract2.default | |||
._StartSendData(d.serviceData.dataEncode, function(e) { | |||
0 == e.serviceCode ? (d = _WJDataAnalysis2.default.analysisLightAct(e.serviceData.dataBuff), i | |||
.code = d.serviceCode, i.err_msg = d.serviceInfo, i.data = d.serviceData.dataBuff) : i = e, | |||
(void 0 === a ? "undefined" : _typeof(a)) == TAG_FUNCTION && a(i) | |||
})) : (i.serviceCode = -1, i.serviceInfo = "paramater is error", (void 0 === a ? "undefined" : _typeof( | |||
a)) == TAG_FUNCTION && a(i)) | |||
} | |||
function upNewPipe(e, t) { | |||
var a, d = {}, | |||
i = "", | |||
s = _WJUtils2.default.getCMD_TYPE(); - 1 < e ? (e = _WJUtils2.default.byte2hexStr(e), a = {}, 0 == s ? i = | |||
"810200C7" + e : 1 == s && (i = "A2"), a = _WJDataEncode2.default.encode(i), _WJDataInteract2.default | |||
._StartSendData(a.serviceData.dataEncode, function(e) { | |||
0 == e.serviceCode ? (a = _WJDataAnalysis2.default.analysisUpNewPipe(e.serviceData.dataBuff), d | |||
.code = a.serviceCode, d.err_msg = a.serviceInfo, d.data = a.serviceData.dataBuff) : d = e, | |||
(void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t(d) | |||
})) : (d.serviceCode = -1, d.serviceInfo = "paramater is error", (void 0 === t ? "undefined" : _typeof( | |||
t)) == TAG_FUNCTION && t(d)) | |||
} | |||
function transCmd(e, t, a, d) { | |||
var i, s = {}; | |||
"10" == t || "20" == t || "30" == t || "00" == t ? (i = {}, i = _WJDataEncode2.default.encode(e, t, a), | |||
_WJDataInteract2.default._StartSendData(i.serviceData.dataEncode, function(e) { | |||
0 == e.serviceCode ? (_WJUtils2.default.showLog("APDU透传指令成功"), s.code = 0, s.err_msg = | |||
"transcmd success", s.data = e.serviceData.dataBuff) : (s.err_msg = e.serviceInfo, s.code = | |||
e.serviceCode), (void 0 === d ? "undefined" : _typeof(d)) == TAG_FUNCTION && d(s) | |||
})) : (s.code = -1, s.msg = "cmdtype参数错误!", (void 0 === d ? "undefined" : _typeof(d)) == TAG_FUNCTION && d( | |||
s)) | |||
} | |||
function initIC(t) { | |||
var a, d = {}, | |||
e = "", | |||
i = _WJUtils2.default.getCMD_TYPE(); | |||
0 == i ? e = "80" : 1 == i && (e = "A9"), a = _WJDataEncode2.default.encode(e), _WJDataInteract2.default | |||
._StartSendData(a.serviceData.dataEncode, function(e) { | |||
0 == e.serviceCode ? (a = _WJDataAnalysis2.default.analysisinitIC(e.serviceData.dataBuff), d.code = a | |||
.serviceCode, d.err_msg = a.serviceInfo, d.data = a.serviceData.dataBuff) : (d.code = e | |||
.serviceCode, d.err_msg = e.serviceInfo), (void 0 === t ? "undefined" : _typeof(t)) == | |||
TAG_FUNCTION && t(d) | |||
}) | |||
} | |||
function getDeviceInfo(e, t) { | |||
var a, d = {}, | |||
i = "", | |||
s = _WJUtils2.default.getCMD_TYPE(); | |||
0 == s ? i = "810100" + e : 1 == s && (i = "A501" + e), a = _WJDataEncode2.default.encode(i), _WJDataInteract2 | |||
.default._StartSendData(a.serviceData.dataEncode, function(e) { | |||
0 == e.serviceCode ? (_WJUtils2.default.showLog("获取设备信息成功"), a = _WJDataAnalysis2.default | |||
.analysisDeviceInfo(e.serviceData.dataBuff), d.err_msg = "获取设备信息成功", d.code = a.serviceCode, d | |||
.data = a.serviceData) : (d.code = e.serviceCode, d.err_msg = e.serviceInfo), (void 0 === t ? | |||
"undefined" : _typeof(t)) == TAG_FUNCTION && t(d) | |||
}) | |||
} | |||
function selectDir(t, e, a) { | |||
var d, i, s, n, o = {}; | |||
4 == t.length && "10" == e || "20" == e || "00" == e ? (i = "010700A4000002" + t, e = e, s = "", 1 == _WJUtils2 | |||
.default.getTRANSFER_TYPE() && (i = _WJUtils2.default.TPDU2APDU(i)), 0 == (n = _WJUtils2.default | |||
.getCMD_TYPE()) ? s = "82" : 1 == n && (s = "AC"), this.transCmd(i, e, s, function(e) { | |||
0 == e.code ? (console.log(e.data), _WJUtils2.default.showLog("transCmd success", e.data), d = | |||
_WJDataAnalysis2.default._analysisIs9000(e.data), console.log(d), o.code = d.serviceCode, | |||
0 == d.serviceCode ? (_WJUtils2.default.showLog("进 " + t + " 目录成功"), o.err_msg = "进" + t + | |||
"目录成功") : (_WJUtils2.default.showLog("进 " + t + " 目录失败"), o.err_msg = "进" + t + "目录失败") | |||
) : o = e, (void 0 === a ? "undefined" : _typeof(a)) == TAG_FUNCTION && a(o) | |||
})) : (o.code = -1, o.err_msg = "参数长度有误", (void 0 === a ? "undefined" : _typeof(a)) == TAG_FUNCTION && a(o)) | |||
} | |||
function getCardInfo(t) { | |||
var a, d = {}, | |||
e = "010500B095002B0205805C000204", | |||
i = "", | |||
s = "", | |||
n = (1 == _WJUtils2.default.getTRANSFER_TYPE() && (e = _WJUtils2.default.TPDU2APDU(e)), _WJUtils2.default | |||
.getCMD_TYPE()); | |||
0 == n ? (i = "10", s = "82") : 1 == n && (i = "00", s = "A3"), this.transCmd(e, i, s, function(e) { | |||
0 == e.code ? (_WJUtils2.default.showLog("transCmd success"), a = _WJDataAnalysis2.default | |||
.analysisCardInfo(e.data), d.code = a.serviceCode, d.err_msg = "获取卡片信息成功", d.data = a | |||
.serviceData) : d = e, (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t(d) | |||
}) | |||
} | |||
function readCardOwnerRecord(t) { | |||
var a, d = {}, | |||
e = "010500B0960037", | |||
i = "", | |||
s = "", | |||
n = (1 == _WJUtils2.default.getTRANSFER_TYPE() && (e = _WJUtils2.default.TPDU2APDU(e)), _WJUtils2.default | |||
.getCMD_TYPE()); | |||
0 == n ? (i = "10", s = "82") : 1 == n && (i = "00", s = "A3"), this.transCmd(e, i, s, function(e) { | |||
0 == e.code ? (_WJUtils2.default.showLog("transCmd success"), a = _WJDataAnalysis2.default | |||
.analysisCardOwnerRecord(e.data), d.code = a.serviceCode, d.err_msg = "获取持卡人信息成功", d.data = a | |||
.serviceData) : d = e, (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t(d) | |||
}) | |||
} | |||
function readCardTransactionRecord(e, t) { | |||
var a, d = {}, | |||
e = "010500B2" + _WJUtils2.default.byte2hexStr(e) + "C400", | |||
i = "", | |||
s = "", | |||
n = (1 == _WJUtils2.default.getTRANSFER_TYPE() && (e = _WJUtils2.default.TPDU2APDU(e)), _WJUtils2.default | |||
.getCMD_TYPE()); | |||
0 == n ? (i = "10", s = "82") : 1 == n && (i = "00", s = "A3"), this.transCmd(e, i, s, function(e) { | |||
0 == e.code ? (_WJUtils2.default.showLog("transCmd success"), a = _WJDataAnalysis2.default | |||
.analysisCardTransactionRecord(e.data), d.code = a.serviceCode, d.err_msg = "获取交易记录信息成功", d | |||
.data = a.serviceData) : d = e, (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t( | |||
d) | |||
}) | |||
} | |||
function authPIN(e, t) { | |||
var a, d, i, s, n = {}; | |||
e.length % 2 == 0 && 6 <= e.length && e.length <= 12 ? (d = _WJUtils2.default.byte2hexStr(parseInt(e.length / 2)), | |||
d = "01" + _WJUtils2.default.byte2hexStr(5 + parseInt(e.length / 2)) + "00200000" + d + e, i = e = "", 1 == | |||
_WJUtils2.default.getTRANSFER_TYPE() && (d = _WJUtils2.default.TPDU2APDU(d)), 0 == (s = _WJUtils2.default | |||
.getCMD_TYPE()) ? (e = "10", i = "82") : 1 == s && (e = "00", i = "A3"), this.transCmd(d, e, i, | |||
function(e) { | |||
0 == e.code ? (_WJUtils2.default.showLog("transCmd success"), a = _WJDataAnalysis2.default | |||
._analysisIs9000(e.data), n.code = a.serviceCode, 0 == n.code ? (_WJUtils2.default.showLog( | |||
"PIN认证成功"), n.err_msg = "PIN认证成功") : (_WJUtils2.default.showLog("PIN认证失败"), n.err_msg = | |||
"PIN认证失败")) : n = e, (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t(n) | |||
})) : (n.code = -1, n.err_msg = "参数长度有误", (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && | |||
t(n)) | |||
} | |||
function initLoadCreadit(e, t, a, d, i, s) { | |||
var n, o, r = {}; | |||
null != e && null != t && null != a && null != d && null != i ? 12 == a.length && 2 == d.length && 2 == i.length ? ( | |||
e = new ArrayBuffer(4), (o = new DataView(e)).setInt8(0, t >> 24 & 255), o.setInt8(1, t >> 16 & 255), o | |||
.setInt8(2, t >> 8 & 255), o.setInt8(3, t >> 0 & 255), o = "0110805000" + d + "0B" + i + _WJUtils2.default | |||
.byteArray2hexStr(e) + a, d = t = "", 1 == _WJUtils2.default.getTRANSFER_TYPE() && (o = _WJUtils2.default | |||
.TPDU2APDU(o)), 0 == (i = _WJUtils2.default.getCMD_TYPE()) ? (t = "10", d = "82") : 1 == i && (t = "00", | |||
d = "A3"), this.transCmd(o, t, d, function(e) { | |||
0 == e.code ? (_WJUtils2.default.showLog("transCmd success"), n = _WJDataAnalysis2.default | |||
.analysisInitInfo(e.data), r.code = n.serviceCode, r.err_msg = "圈存初始化成功", r.data = n | |||
.serviceData) : r = e, (void 0 === s ? "undefined" : _typeof(s)) == TAG_FUNCTION && s(r) | |||
})) : (r.code = -2, r.err_msg = "参数长度有误!", (void 0 === s ? "undefined" : _typeof(s)) == TAG_FUNCTION && s( | |||
r)) : (r.code = -1, r.err_msg = "参数有空!", (void 0 === s ? "undefined" : _typeof(s)) == TAG_FUNCTION && s(r)) | |||
} | |||
function loadCreadit(e, t) { | |||
var a, d, i, s, n = {}; | |||
null != e && 22 == e.length ? (e = "0111805200000B" + e + "04", i = d = "", 1 == _WJUtils2.default | |||
.getTRANSFER_TYPE() && (e = _WJUtils2.default.TPDU2APDU(e)), 0 == (s = _WJUtils2.default.getCMD_TYPE()) ? ( | |||
d = "10", i = "82") : 1 == s && (d = "00", i = "A3"), this.transCmd(e, d, i, function(e) { | |||
0 == e.code ? (_WJUtils2.default.showLog("transCmd success"), a = _WJDataAnalysis2.default | |||
.analysisLoadCreadit(e.data), n.code = a.serviceCode, n.err_msg = "圈存成功", n.data = a | |||
.serviceData) : n = e, (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t(n) | |||
})) : (n.code = -1, n.err_msg = "获取圈存指令失败:参数null或长度有误", (void 0 === t ? "undefined" : _typeof(t)) == | |||
TAG_FUNCTION && t(n)) | |||
} | |||
function getObuSysInfo(t) { | |||
var a, d = {}, | |||
e = "010500B081001B", | |||
i = "", | |||
s = "", | |||
n = (1 == _WJUtils2.default.getTRANSFER_TYPE() && (e = _WJUtils2.default.TPDU2APDU(e)), _WJUtils2.default | |||
.getCMD_TYPE()); | |||
0 == n ? (i = "20", s = "82") : 1 == n && (i = "00", s = "AC"), this.transCmd(e, i, s, function(e) { | |||
0 == e.code ? (_WJUtils2.default.showLog("transCmd success"), a = _WJDataAnalysis2.default | |||
.analysisgetObuSysInfo(e.data), d.code = a.serviceCode, d.err_msg = "获取系统信息成功", d.data = a | |||
.serviceData) : d = e, (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t(d) | |||
}) | |||
} | |||
function getRand(e, t) { | |||
var a, d = {}, | |||
i = "01050084000004", | |||
s = "", | |||
n = (1 == _WJUtils2.default.getTRANSFER_TYPE() && (i = _WJUtils2.default.TPDU2APDU(i)), _WJUtils2.default | |||
.getCMD_TYPE()); | |||
0 == n ? s = "82" : 1 == n && (s = "AC"), this.transCmd(i, e, s, function(e) { | |||
0 == e.code ? (_WJUtils2.default.showLog("transCmd success"), a = _WJDataAnalysis2.default | |||
.analysisGetRand(e.data), d.code = a.serviceCode, d.err_msg = "获取随机数成功", d.data = a.serviceData | |||
) : d = e, (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t(d) | |||
}) | |||
} | |||
function writeOBUInfo(e, t) { | |||
var a, d, i, s, n = {}; | |||
null != e && e.length % 2 == 0 ? (e = "01" + _WJUtils2.default.byte2hexStr(parseInt(e.length / 2)) + e, i = d = "", | |||
1 == _WJUtils2.default.getTRANSFER_TYPE() && (e = _WJUtils2.default.TPDU2APDU(e)), 0 == (s = _WJUtils2 | |||
.default.getCMD_TYPE()) ? (d = "20", i = "82") : 1 == s && (d = "00", i = "A0"), this.transCmd(e, d, i, | |||
function(e) { | |||
0 == e.serviceCode ? (a = _WJDataAnalysis2.default._analysisIs9000(e.data), n.code = a.serviceCode, | |||
0 == n.serviceCode ? (_WJUtils2.default.showLog("写OBU信息成功"), n.err_msg = "写OBU信息成功") : ( | |||
_WJUtils2.default.showLog("写OBU信息失败"), n.err_msg = "写OBU信息失败")) : n = e, (void 0 === t ? | |||
"undefined" : _typeof(t)) == TAG_FUNCTION && t(n) | |||
})) : (n.code = -1, n.err_msg = "参数错误", (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t( | |||
n)) | |||
} | |||
function writeObuIssueSpecial(t) { | |||
var a, d = {}, | |||
e = "01050059000001", | |||
i = "", | |||
s = "", | |||
n = (1 == _WJUtils2.default.getTRANSFER_TYPE() && (e = _WJUtils2.default.TPDU2APDU(e)), _WJUtils2.default | |||
.getCMD_TYPE()); | |||
0 == n ? (i = "20", s = "82") : 1 == n && (i = "00", s = "A0"), this.transCmd(e, i, s, function(e) { | |||
0 == e.code ? (a = _WJDataAnalysis2.default._analysisIs9000(e.data), d.code = a.serviceCode, 0 == d | |||
.serviceCode ? (_WJUtils2.default.showLog("写OBU信息成功"), d.err_msg = "写OBU信息成功") : (_WJUtils2 | |||
.default.showLog("写OBU信息失败"), d.err_msg = "写OBU信息失败")) : d = e, (void 0 === t ? | |||
"undefined" : _typeof(t)) == TAG_FUNCTION && t(d) | |||
}) | |||
} | |||
function writeICInfo(e, t) { | |||
var a, d, i, s, n = {}; | |||
null != e && e.length % 2 == 0 ? (e = "01" + _WJUtils2.default.byte2hexStr(parseInt(e.length / 2)) + e, i = d = "", | |||
1 == _WJUtils2.default.getTRANSFER_TYPE() && (e = _WJUtils2.default.TPDU2APDU(e)), 0 == (s = _WJUtils2 | |||
.default.getCMD_TYPE()) ? (d = "10", i = "82") : 1 == s && (d = "00", i = "A3"), this.transCmd(e, d, i, | |||
function(e) { | |||
0 == e.code ? (a = _WJDataAnalysis2.default._analysisIs9000(e.data), n.code = a.serviceCode, 0 == n | |||
.serviceCode ? (_WJUtils2.default.showLog("写IC信息成功"), n.err_msg = "写IC信息成功") : (_WJUtils2 | |||
.default.showLog("写IC信息失败"), n.err_msg = "写IC信息失败")) : n = e, (void 0 === t ? | |||
"undefined" : _typeof(t)) == TAG_FUNCTION && t(n) | |||
})) : (n.code = -1, n.err_msg = "参数错误", (void 0 === t ? "undefined" : _typeof(t)) == TAG_FUNCTION && t( | |||
n)) | |||
} | |||
module.exports = { | |||
connectDevice: connectDevice, | |||
connectDevice2: connectDevice2, | |||
disconnectDevice: disconnectDevice, | |||
transCmd: transCmd, | |||
getDeviceInfo: getDeviceInfo, | |||
getCardInfo: getCardInfo, | |||
selectDir: selectDir, | |||
getObuSysInfo: getObuSysInfo, | |||
getRand: getRand, | |||
authPIN: authPIN, | |||
initLoadCreadit: initLoadCreadit, | |||
loadCreadit: loadCreadit, | |||
writeOBUInfo: writeOBUInfo, | |||
writeICInfo: writeICInfo, | |||
readCardOwnerRecord: readCardOwnerRecord, | |||
readCardTransactionRecord: readCardTransactionRecord, | |||
initIC: initIC, | |||
authOBU: authOBU, | |||
upNewPipe: upNewPipe, | |||
lightAct: lightAct, | |||
getActState: getActState | |||
}; |
@@ -0,0 +1 @@ | |||
"use strict";var iPackageLen,_WJUtils=require("./WJUtils.js"),_WJUtils2=_interopRequireDefault(_WJUtils);function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}var bleCount,rxCount=0,strTemData="",strRxBuffer="",isPagFinish=!0;function decode_GB(t){var e=0,a={},t=_WJUtils2.default.byteArray2hexStr(t),r=(_WJUtils2.default.showLog("WJ当前接受包的数据:",t),_WJUtils2.default.hexStr2byteArray(t));if(1<r.byteLength&&80==r[0]&&1==isPagFinish?(isPagFinish=!1,iPackageLen=r[3],strTemData=t):strTemData+=t,strTemData.length/2>=iPackageLen+5){rxCount+=1,isPagFinish=!0;var s=_WJUtils2.default.hexStr2byteArray(strTemData);_WJUtils2.default.showLog("接受完第",rxCount,"包数据,内容 ",strTemData);for(var i=0;i<iPackageLen+4;i++)e^=s[i];if(s[strTemData.length/2-1]!=e)return _WJUtils2.default.showError("WJ第",rxCount," 包校验bcc:Error!"),a.serviceCode=-1,a.serviceInfo="校验错误。。。",a;128==(128&s[1])&&(bleCount=((127&s[1])<<8)+s[2],_WJUtils2.default.showLog("总共:",bleCount,"大包")),_WJUtils2.default.showLog("WJ第",rxCount," 包校验bcc:ok!"),strRxBuffer+=strTemData.substring(8,strTemData.length-2)}return bleCount<=rxCount?(a.serviceCode=0,a.serviceInfo="数据接收完成!",a.serviceData={},a.serviceData.strData=strRxBuffer):(a.serviceCode=1,a.serviceInfo="数据接收中。。。"),a}function decode_WX(t){var e=0,a={},t=_WJUtils2.default.byteArray2hexStr(t),r=(_WJUtils2.default.showLog("WJ当前接受包的数据:",t),_WJUtils2.default.hexStr2byteArray(t));if(1<r.byteLength&&254==r[0]&&1==r[1]&&1==isPagFinish?(isPagFinish=!1,iPackageLen=(255&r[2])<<8,iPackageLen+=255&r[3],strTemData=t):strTemData+=t,strTemData.length/2>=iPackageLen){_WJUtils2.default.showLog("大包长度:",iPackageLen,strTemData.length),isPagFinish=!0,rxCount+=1;var s=_WJUtils2.default.hexStr2byteArray(strTemData),r={},i=0,o=0,u=0;for(r.FixHead={},r.FixHead.MagicNumber=strTemData.substr(2*i,2),r.FixHead.Ver=strTemData.substring(2*++i,2),r.FixHead.Len=(s[++i]<<8)+s[i+1],r.FixHead.CmdId=(s[i+=2]<<8)+s[i+1],r.FixHead.Seq=(s[i+=2]<<8)+s[i+1],i+=2,r.ProtoBuf={},r.ProtoBuf.BaseRequest={},r.ProtoBuf.BaseRequest.Mark=strTemData.substr(2*i,2),i++,u=o=0;128==(128&s[i]);)o+=(127&s[i])<<7*u,i++,u++;for(o+=(127&s[i])<<7*u,r.ProtoBuf.BaseRequest.Data=strTemData.substr(2*++i,2*o),i+=o,r.ProtoBuf.Data={},r.ProtoBuf.Data.Mark=strTemData.substr(2*i,2),i++,u=o=0;128==(128&s[i]);)o+=(127&s[i])<<7*u,i++,u++;for(o+=(127&s[i])<<7*u,r.ProtoBuf.Data.Data=strTemData.substr(2*++i,2*o),i+=o,r.ProtoBuf.DataType={},r.ProtoBuf.DataType.Mark=strTemData.substr(2*i,2),i++,u=o=0;128==(128&s[i]);)o+=(127&s[i])<<7*u,i++,u++;o+=(127&s[i])<<7*u,i++,r.ProtoBuf.DataType.Varint=o;for(var n=_WJUtils2.default.hexStr2byteArray(r.ProtoBuf.Data.Data),f=1;f<n.byteLength-1;f++)e^=n[f];if(n[n.byteLength-1]!=e)return _WJUtils2.default.showError("WJ第",rxCount," 包校验bcc:Error!"),a.serviceCode=-1,a.serviceInfo="校验错误。。。",a;128==(128&n[2])&&(bleCount=1+(127&n[2]),_WJUtils2.default.showLog("总共:",bleCount,"大包")),strRxBuffer+=r.ProtoBuf.Data.Data.substr(8,2*n[3]),_WJUtils2.default.showLog("WJ第",rxCount," 包校验bcc:ok!"),_WJUtils2.default.showLog("接受完第",rxCount,"大包数据,内容 ",strTemData)}return bleCount<=rxCount?(a.serviceCode=0,a.serviceInfo="数据接收完成!",a.serviceData={},a.serviceData.strData=strRxBuffer):(a.serviceCode=1,a.serviceInfo="数据接收中。。。"),a}function init(){rxCount=iPackageLen=0,isPagFinish=!(strRxBuffer=strTemData="")}module.exports={decode_GB:decode_GB,decode_WX:decode_WX,init:init}; |
@@ -0,0 +1,85 @@ | |||
"use strict"; | |||
var _WJUtils = require("./WJUtils.js"), | |||
_WJUtils2 = _interopRequireDefault(_WJUtils); | |||
function _interopRequireDefault(e) { | |||
return e && e.__esModule ? e : { | |||
default: e | |||
} | |||
} | |||
function encode(e, t, a) { | |||
var r = _WJUtils2.default.getProtocolType(), | |||
e = getETCData(e, t, a), | |||
t = {}; | |||
return 0 == r ? t = encode_GB(e) : 1 == r && (t = encode_WX(e)), t | |||
} | |||
function getETCData(e, t, a) { | |||
var r = "", | |||
r = "A0" == a || "A3" == a || "A4" == a || "82" == a || "84" == a || "AC" == a || "A9" == a ? a + t + (r = | |||
getCommand(e)) : e; | |||
return _WJUtils2.default.showLog("组拼ETCData完毕:", r.length / 2, r), r | |||
} | |||
function getCommand(e) { | |||
var t, a = e, | |||
r = _WJUtils2.default.getDATA_TYPE(), | |||
e = e.length / 2, | |||
n = new ArrayBuffer(10), | |||
s = new DataView(n); | |||
return 0 == r ? (t = 256 < e ? (s.setInt8(0, 4 + e & 255), s.setInt8(1, 4 + e >> 8 & 255), s.setInt8(2, 128), s | |||
.setInt8(3, 130), s.setInt8(4, e >> 8 & 255), s.setInt8(5, 255 & e), n.slice(0, 6)) : 128 < e && e <= | |||
256 ? (s.setInt8(0, 3 + e & 255), s.setInt8(1, 3 + e >> 8 & 255), s.setInt8(2, 128), s.setInt8(3, 129), s | |||
.setInt8(4, e), n.slice(0, 5)) : (s.setInt8(0, 2 + e & 255), s.setInt8(1, 2 + e >> 8 & 255), s.setInt8( | |||
2, 128), s.setInt8(3, e), n.slice(0, 4)), a = _WJUtils2.default.byteArray2hexStr(t) + a) : 1 == r && (s | |||
.setInt8(0, 255 & e), s.setInt8(1, e >> 8 & 255), t = n.slice(0, 2), a = _WJUtils2.default.byteArray2hexStr( | |||
t) + a), a | |||
} | |||
function encode_GB(e) { | |||
var t = {}, | |||
a = _WJUtils2.default.getPagLenMax(), | |||
r = parseInt(e.length / 2 / a), | |||
n = (e.length / 2 % a != 0 && (r += 1), new ArrayBuffer(10)); | |||
new DataView(n); | |||
t.serviceCode = 0, t.serviceInfo = "encode ok", t.serviceData = {}, t.serviceData.dataEncode = new Array; | |||
for (var s = 0; s < r - 1; s++) t.serviceData.dataEncode[s] = e.substr(s * a * 2, 2 * a), t.serviceData.dataEncode[ | |||
s] = getGBFrame(t.serviceData.dataEncode[s], s, r); | |||
return t.serviceData.dataEncode[r - 1] = e.substring((r - 1) * a * 2), t.serviceData.dataEncode[r - 1] = getGBFrame( | |||
t.serviceData.dataEncode[r - 1], r - 1, r), t | |||
} | |||
function encode_WX(e) { | |||
for (var t = {}, a = _WJUtils2.default.getPagLenMax(), r = parseInt(e.length / 2 / a), n = (e.length / 2 % a != 0 && | |||
(r += 1), t.serviceCode = 0, t.serviceInfo = "encode ok", t.serviceData = {}, t.serviceData.dataEncode = | |||
new Array, 0), n = 0; n < r - 1; n++) t.serviceData.dataEncode[n] = e.substr(n * a * 2, 2 * a), t | |||
.serviceData.dataEncode[n] = getWXFrame(t.serviceData.dataEncode[n], n, r); | |||
return t.serviceData.dataEncode[r - 1] = e.substring((r - 1) * a * 2), t.serviceData.dataEncode[r - 1] = getWXFrame( | |||
t.serviceData.dataEncode[r - 1], r - 1, r), t | |||
} | |||
function getWXFrame(e, t, a) { | |||
for (var r = e, n = new ArrayBuffer(10), s = new DataView(n), i = "", d = 0, e = e.length / 2, l = (0 == t ? s | |||
.setInt8(0, 128 + (a - 1 - t & 255)) : s.setInt8(0, a - 1 - t & 255), r = "3301" + (i = _WJUtils2 | |||
.default.byteArray2hexStr(n).substring(0, 2)) + _WJUtils2.default.byte2hexStr(255 & e) + r, | |||
_WJUtils2.default.hexStr2byteArray(r)), c = 1; c < l.length; c++) d ^= l[c]; | |||
r += _WJUtils2.default.byte2hexStr(d); | |||
var u, a = _WJUtils2.default.hexStr2byteArray(r).length; | |||
return 127 < a ? (s.setInt8(0, 128 + (a % 128 & 255)), s.setInt8(1, a / 128 & 255), i = _WJUtils2.default | |||
.byteArray2hexStr(n).substring(0, 4), s.setInt8(0, (u = a + 8 + 4 + 3) >> 8 & 255)) : (s.setInt8(0, 255 & | |||
a), i = _WJUtils2.default.byteArray2hexStr(n).substring(0, 2), s.setInt8(0, (u = a + 8 + 4 + 2) >> 8 & 255) | |||
), s.setInt8(1, 255 & u), r = "FE01" + _WJUtils2.default.byteArray2hexStr(n).substring(0, 4) + | |||
"753100000A0012" + i + r + "1800" | |||
} | |||
function getGBFrame(e, t, a) { | |||
for (var r = e, n = new ArrayBuffer(10), s = new DataView(n), i = 0, e = e.length / 2, d = (0 == t ? (s.setInt8(0, | |||
128 + (a >> 8 & 255)), s.setInt8(1, 255 & a)) : (s.setInt8(0, t + 1 >> 8 & 255), s.setInt8(1, t + | |||
1 & 255)), s.setInt8(2, 255 & e), a = _WJUtils2.default.byteArray2hexStr(n).substring(0, 6), | |||
_WJUtils2.default.hexStr2byteArray(r = "50" + a + r)), l = 0; l < d.length; l++) i ^= d[l]; | |||
return r += _WJUtils2.default.byte2hexStr(i) | |||
} | |||
module.exports = { | |||
encode: encode | |||
}; |
@@ -0,0 +1 @@ | |||
"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_WJService=require("./WJService.js"),_WJService2=_interopRequireDefault(_WJService),_WJUtils=require("./WJUtils.js"),_WJUtils2=_interopRequireDefault(_WJUtils),_WJDataDecode=require("./WJDataDecode.js"),_WJDataDecode2=_interopRequireDefault(_WJDataDecode);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var TAG_FUNCTION="function",sendCallback=void 0,TimerID=null;function _StartSendData(a,e){var l={},r=0,i=0;null!=TimerID&&(clearTimeout(TimerID),TimerID=null),_WJDataDecode2.default.init(),TimerID=setTimeout(pro_timeout,1e4),_WJUtils2.default.showLog(TimerID,"开启时钟"),sendCallback=e,_WJService2.default.SetDataListenerCallBack(!0,datacallback),function t(){var e="";40*i>=a[r].length&&(r++,i=0);r<a.length&&(e=a[r].length>=40*(i+1)?a[r].substring(40*i,40*(i+1)):a[r].substring(40*i,a[r].length));""==e?_WJUtils2.default.showLog("数据发送完毕!"):(_WJUtils2.default.showLog("发送数据:",e),_WJService2.default.reallyWriteBLECharacteristicValue(e,function(e){0==e.code?(i++,t()):(_WJUtils2.default.showError(TimerID,"数据发送失败,取消时钟"),null!=TimerID&&(clearTimeout(TimerID),TimerID=null),_WJService2.default.SetDataListenerCallBack(!1),l.serviceCode=-2,l.serviceInfo="数据发送失败",(void 0===sendCallback?"undefined":_typeof(sendCallback))==TAG_FUNCTION&&sendCallback(l))}))}()}function datacallback(e){_WJService2.default.SetDataListenerCallBack(!0,datacallback),_ReceiveData(e)}function pro_timeout(){var e={};_WJUtils2.default.showError(TimerID,"数据接收超时,取消时钟"),null!=TimerID&&(clearTimeout(TimerID),TimerID=null),_WJService2.default.SetDataListenerCallBack(!1),e.serviceCode=-3,e.serviceInfo="数据接收超时",(void 0===sendCallback?"undefined":_typeof(sendCallback))==TAG_FUNCTION&&sendCallback(e)}function _ReceiveData(e){for(var t=_WJUtils2.default.hexStr2byteArray(e),e=new ArrayBuffer(t.byteLength),a=new DataView(e),l=0;l<t.byteLength;l++)a.setUint8(l,t[l]);var r,i={},o=_WJUtils2.default.getProtocolType();0==o?r=_WJDataDecode2.default.decode_GB(e):1==o&&(r=_WJDataDecode2.default.decode_WX(e)),0==r.serviceCode&&(null!=(o=PackageDecode(r.serviceData.strData))?(_WJUtils2.default.showLog(TimerID,"接收数据成功,取消时钟"),null!=TimerID&&(clearTimeout(TimerID),TimerID=null),_WJService2.default.SetDataListenerCallBack(!1),i.serviceCode=0,i.serviceInfo="数据接收成功",i.serviceData={},i.serviceData.dataBuff=o):(_WJUtils2.default.showError(TimerID,"数据解析失败,取消时钟"),null!=TimerID&&(clearTimeout(TimerID),TimerID=null),_WJService2.default.SetDataListenerCallBack(!1),i.serviceCode=-1,i.serviceInfo="数据解析失败"),(void 0===sendCallback?"undefined":_typeof(sendCallback))==TAG_FUNCTION)&&sendCallback(i)}function PackageDecode(e){var t=_WJUtils2.default.getDATA_TYPE(),a=_WJUtils2.default.hexStr2byteArray(e),l=0,r=a[1],i=a[0];if(_WJUtils2.default.showLog("WJPackageDecode:",e),0!=r)return _WJUtils2.default.showError("WJ结果码非00"),null;switch(i){case 146:case 176:case 179:case 180:case 188:case 185:return 0==t?(c=7,129==a[5]&&(129==a[6]?(l=255&a[7],c+=1):130==a[6]?(l=a[7]<<8,l+=255&a[8],c+=2):l=255&a[6]),c=a.slice(c,l+c),s=_WJUtils2.default.byteArray2hexStr(c)):1==t&&(c=a.slice(5),s=_WJUtils2.default.APDU2TPDU(_WJUtils2.default.byteArray2hexStr(c))),_WJUtils2.default.showLog("WJ有效数据长度:",s.length/2,s),_WJUtils2.default.showLog("操作类型ok",i),s;case 145:case 151:case 148:case 144:var o=(255&a[3])<<8,s=(o+=a[2],c=a.slice(4,o+4),_WJUtils2.default.byteArray2hexStr(c));return _WJUtils2.default.showLog("WJ有效数据长度:",o,_WJUtils2.default.byteArray2hexStr(c)),_WJUtils2.default.showLog("操作类型ok",i),s;case 181:var o=a[2],c=a.slice(3,o+3);return _WJUtils2.default.showLog("WJ有效数据长度:",o,_WJUtils2.default.byteArray2hexStr(c)),_WJUtils2.default.showLog("操作类型ok",i),_WJUtils2.default.byteArray2hexStr(c);default:return _WJUtils2.default.showError("WJ通道类型有误"),null}}module.exports={_StartSendData:_StartSendData,_ReceiveData:_ReceiveData}; |
@@ -0,0 +1 @@ | |||
"use strict";var PROTOCOL_TYPE=1,PAGLENMAX=205,TRANSFER_TYPE=0,DATA_TYPE=0,CMD_TYPE=1;function showLog(){if(!(arguments.length<1)){for(var r=arguments[0],t=1;t<arguments.length;t++)r+=" "+arguments[t];console.log(r)}}function showError(){if(!(arguments.length<1)){for(var r=arguments[0],t=1;t<arguments.length;t++)r+=" "+arguments[t];console.error(r)}}function byteArray2hexStr(r){return Array.prototype.map.call(new Uint8Array(r),function(r){return("00"+r.toString(16)).slice(-2)}).join("")}function hexStr2byteArray(r){return new Uint8Array(r.match(/[\da-f]{2}/gi).map(function(r){return parseInt(r,16)}))}function byte2hexStr(r){var t="0123456789abcdef",e="";return(e+=t.charAt(r>>4))+t.charAt(15&r)}function getProtocolType(){return PROTOCOL_TYPE}function getPagLenMax(){return PAGLENMAX}function getTRANSFER_TYPE(){return TRANSFER_TYPE}function getDATA_TYPE(){return DATA_TYPE}function getCMD_TYPE(){return CMD_TYPE}function APDU2TPDU(r){var t=hexStr2byteArray(r),e="";if("01"==r.substring(0,2))e=r;else{for(var n=new Array,o=0,a=0;a<t[0];a++){var h=o+2,T=o+2+t[o+1];o+=1+t[o+1],n[a]=r.substring(2*h,2*T)}for(a=0;a<t[0];a++){var A=n[a].length/2;e+=byte2hexStr(a+1&255)+byte2hexStr(255&A)+n[a]}}return e}function TPDU2APDU(r){for(var t=hexStr2byteArray(r),e="",n=new Array,o=0,a=t.byteLength;o<a;){var h=t[o++],T=t[o++];n[h-1]=r.substring(2*o,2*(o+T)),o+=T}for(var e=byte2hexStr(255&n.length),A=0;A<n.length;A++)e+=byte2hexStr(n[A].length/2&255)+n[A];return e}function hexCharCodeToStr(r){var t,r=r.trim(),e="0x"===r.substr(0,2).toLowerCase()?r.substr(2):r,n=e.length;if(n%2!=0)return"";for(var o=[],a=0;a<n;a+=2)t=parseInt(e.substr(a,2),16),o.push(String.fromCharCode(t));return o.join("")}module.exports={showLog:showLog,byteArray2hexStr:byteArray2hexStr,hexStr2byteArray:hexStr2byteArray,showError:showError,byte2hexStr:byte2hexStr,getProtocolType:getProtocolType,getPagLenMax:getPagLenMax,getTRANSFER_TYPE:getTRANSFER_TYPE,getDATA_TYPE:getDATA_TYPE,getCMD_TYPE:getCMD_TYPE,APDU2TPDU:APDU2TPDU,TPDU2APDU:TPDU2APDU,hexCharCodeToStr:hexCharCodeToStr}; |
@@ -1,5 +1,5 @@ | |||
/**obu蓝牙设备SDK */ | |||
const wjApi = require("../etc/WJAPI/wjBleAPI"); | |||
// const wjApi = require("../etc/WJAPI/wjBleAPI"); | |||
// import * as wjApi from '../../lib/etc/WJAPI/wjBleAPI' | |||
// const jlApi = require("../etc/JLAPI/JLObuSDK.js"); | |||
// import * as jlApi from '../../lib/etc/JLAPI/JLObuSDK.js' | |||
@@ -24,9 +24,11 @@ const datas = require("./datas.js"); | |||
// import * as datas from '../../../utils/common/datas.js'; | |||
const tools = require('./tools.js'); | |||
let jlApi = require("../../static/etc/JLAPI/JLObuSDK.js"); //聚力SDK | |||
let wjApi = require("../etc/WJAPI/wjBleAPI"); | |||
// #ifdef MP-ALIPAY | |||
// 这部分代码将仅在支付宝小程序平台下执行 | |||
jlApi = require("../../static/etc/JLObuSDK/JLObuSDK.js"); | |||
wjApi = require("../etc/WJBLE/WJBleAPI"); | |||
// 执行支付宝小程序的特定功能 | |||
// #endif | |||
@@ -121,6 +123,20 @@ function transCmd(cmdArr, type, func, callBack = null) { | |||
var connectPrefixName = datas.getData("connectPrefixName"); | |||
switch (connectPrefixName) { | |||
case "WJ": | |||
// #ifdef MP-ALIPAY | |||
wjApi.transCmd(cmdArr, '00', type == '10' ? 'A3' : 'AC',function(res) { | |||
if (res.code == 0) { | |||
func(res.data); | |||
} else { | |||
if (callBack != null) { | |||
callBack(res.msg); | |||
} else { | |||
alertF(res.msg); | |||
} | |||
} | |||
}); | |||
// #endif | |||
// #ifdef MP-WEIXIN | |||
wjApi.transCmd(cmdArr, type, function(res) { | |||
if (res.code == 0) { | |||
func(res.data); | |||
@@ -132,6 +148,7 @@ function transCmd(cmdArr, type, func, callBack = null) { | |||
} | |||
} | |||
}); | |||
// #endif | |||
break; | |||
case "JL": | |||
jlApi.transCmd(cmdArr, type, function(res) { |
@@ -234,9 +234,13 @@ | |||
console.log('======获取OBU号======') | |||
let cmdArray = [cmd.HOME_DIRECTORY, cmd.OBU_SYSTEM_FILE, cmd.RANDOM_NUMBER]; | |||
tools.showLoadingAlert("正在执行指令"); | |||
console.log('======cmdArray======',cmdArray) | |||
bluetoothUtil.transCmd(cmdArray, "20", function(res) { | |||
console.log('======cmdArray1======',cmdArray) | |||
tools.hideLoadingAlert(); | |||
console.log('======cmdArray2======',cmdArray) | |||
var status = res[1].substring(res[1].length - 4, res[1].length); | |||
console.log('获取OBU号执行结果' + status) | |||
//第一次获取随机数 | |||
if (status == "9000") { |
@@ -309,7 +309,8 @@ | |||
paySign: data.sign, | |||
success: function(e) { | |||
console.log("支付成功", e); | |||
checkOrder(); | |||
const dataaa = stringToJson(res.bizContent); | |||
checkOrder(dataaa.orderId); | |||
}, | |||
fail: function(err) { | |||
confirm(err, () => {}, "支付失败", false); | |||
@@ -317,61 +318,83 @@ | |||
}); | |||
}); | |||
// #endif | |||
// #ifdef MP-ALIPAY | |||
my.getAuthCode({ | |||
scopes: 'auth_user', | |||
success: res => { | |||
const optionsUser = { | |||
type: 2, | |||
data: { | |||
payConfigId: aliPayConfigId, | |||
code: res.authCode | |||
}, | |||
method: "POST", | |||
showLoading: true, | |||
}; | |||
console.log('支付宝用户编号请求:',optionsUser) | |||
request(obtainUserId, optionsUser).then((res) => { | |||
console.log('支付宝用户编号返回:',res) | |||
const data = stringToJson(res.bizContent); | |||
const optionsali = { | |||
type: 2, | |||
data: { | |||
openid: data.openId, | |||
suppleNoList: state.suppleNoList, | |||
totalFee: allPrice.value * 100, | |||
payConfigId: aliPayConfigId, | |||
}, | |||
method: "POST", | |||
showLoading: true, | |||
}; | |||
console.log('支付下单请求:',optionsali) | |||
request(CardBillPlaceOrder, optionsali).then((res) => { | |||
console.log('支付下单返回:',res) | |||
const data = stringToJson(res.bizContent); | |||
state.orderId = data.orderId | |||
my.tradePay ({ | |||
// 调用统一收单交易创建接口(alipay.trade.create),获得返回字段支付宝交易号 trade_no | |||
tradeNO: data.prepayId, | |||
success: res => { | |||
console.log("支付成功", res); | |||
checkOrder(); | |||
}, | |||
fail: res => { | |||
confirm(res, () => {}, "支付失败", false); | |||
}, | |||
}); | |||
// #ifdef MP-ALIPAY | |||
my.getAuthCode({ | |||
scopes: 'auth_base', | |||
success: res => { | |||
const optionsUser = { | |||
type: 2, | |||
data: { | |||
payConfigId: aliPayConfigId, | |||
code: res.authCode | |||
}, | |||
method: "POST", | |||
showLoading: true, | |||
}; | |||
console.log('支付宝用户编号请求:',optionsUser) | |||
request(obtainUserId, optionsUser).then((res) => { | |||
console.log('支付宝用户编号返回:',res) | |||
const data = stringToJson(res.bizContent); | |||
const optionsali = { | |||
type: 2, | |||
data: { | |||
openid: data.openId, | |||
suppleNoList: state.suppleNoList, | |||
totalFee: allPrice.value * 100, | |||
payConfigId: "6a9a54123456578934edfre132b1234", | |||
}, | |||
method: "POST", | |||
showLoading: true, | |||
}; | |||
console.log('支付下单请求:',optionsali) | |||
request(CardBillPlaceOrder, optionsali).then((res) => { | |||
console.log('支付下单返回:',res) | |||
const data = stringToJson(res.bizContent); | |||
my.tradePay ({ | |||
// 调用统一收单交易创建接口(alipay.trade.create),获得返回字段支付宝交易号 trade_no | |||
tradeNO: data.tranPackage, | |||
success: res => { | |||
console.log("支付成功", res); | |||
const dataaa = stringToJson(res.bizContent); | |||
allPrice.value = 0 | |||
}); | |||
}); | |||
}, | |||
fail: err => { | |||
console.log('my.getAuthCode 调用失败', err) | |||
} | |||
}); | |||
// #endif | |||
const options = { | |||
type: 2, | |||
data: { | |||
opId: getItem('openId') | |||
}, | |||
method: "POST", | |||
showLoading: true, | |||
}; | |||
request(CardBillQuery, options).then((res) => { | |||
const data = stringToJson(res.bizContent); | |||
console.log(data); | |||
data.data = data.data.map(val => { | |||
val.checked = false | |||
val.fee = val.fee / 100 | |||
val.totalFee = val.totalFee / 100 | |||
val.serviceFee = val.serviceFee / 100 | |||
return val | |||
}) | |||
state.list = data.data | |||
console.log(state.list, "我是处理后得列表"); | |||
}) | |||
}, | |||
fail: res => { | |||
console.log("支付失败", res); | |||
}, | |||
}); | |||
}); | |||
}); | |||
}, | |||
fail: err => { | |||
console.log('my.getAuthCode 调用失败', err) | |||
} | |||
}); | |||
// #endif | |||
} else { | |||
msg("未勾选补缴订单!") | |||
} | |||
@@ -381,11 +404,11 @@ | |||
//支付成功改变订单状态 | |||
const checkOrder = () => { | |||
const checkOrder = (orderId) => { | |||
const options = { | |||
type: 2, | |||
data: { | |||
orderId: state.orderId, | |||
orderId: orderId, | |||
}, | |||
method: "POST", | |||
showLoading: true, |
@@ -1,7 +1,7 @@ | |||
<template> | |||
<view class="content"> | |||
<view class="value"> | |||
尊敬的用户: 一旦注销九州ETC会员账号,您将无法通过九州ETC小程序、九州ETC公众号等会员登录渠道查看及找回账户相 | |||
尊敬的用户: 一旦注销九州ETC会员账号,您将无法通过九州ETC小程序、九州ETC公众号等会员登录渠道查看及找回账户 | |||
</view> | |||
<view class="subBtn"> | |||
<submit-button title="注销账户" form-type="submit" @submit="formSubmit"> |
@@ -16,7 +16,7 @@ | |||
<image v-if="!state.form.vehPosImgUrl" class="icon" :src="`${$imgUrl}applyCard/car-zhu.png`"> | |||
</image> | |||
<image v-else class="icon" :src="state.form.vehPosImgUrl"></image> | |||
<image v-else class="icon" :src="strReplace(state.form.vehPosImgUrl)"></image> | |||
</view> | |||
</view> | |||
<view class="picture-wrapper" @click="cardImageOcr('2')"> | |||
@@ -30,7 +30,7 @@ | |||
</view> | |||
<image v-if="!state.form.vehNegImgUrl" class="icon" :src="`${$imgUrl}applyCard/car-fu.png`"> | |||
</image> | |||
<image v-else class="icon" :src="state.form.vehNegImgUrl"></image> | |||
<image v-else class="icon" :src="strReplace(state.form.vehNegImgUrl)"></image> | |||
</view> | |||
</view> | |||
<view class="picture-wrapper" @click="cardFileImageUpdate()"> | |||
@@ -44,7 +44,7 @@ | |||
</view> | |||
<image v-if="!state.form.vehBodyUrl" class="icon" :src="`${$imgUrl}applyCard/chetou.png`"> | |||
</image> | |||
<image v-else class="icon" :src="state.form.vehBodyUrl"></image> | |||
<image v-else class="icon" :src="strReplace(state.form.vehBodyUrl)"></image> | |||
</view> | |||
</view> | |||
<view class="shibie-wrapper"> | |||
@@ -126,6 +126,7 @@ | |||
etcCarOcrCard, | |||
fileUpload, | |||
changeCarInfo, | |||
envs | |||
} from "@/utils/network/api.js"; | |||
import { | |||
request | |||
@@ -141,7 +142,11 @@ | |||
let cacachCarid='' | |||
const strReplace = (str : string) => { | |||
let imgUrl = str.replace("http://192.168.101.145:9000", envs[process.env.NODE_ENV].baseUrl); | |||
imgUrl = imgUrl.replace("http://100.64.2.113:9000", envs[process.env.NODE_ENV].baseUrl); | |||
return imgUrl; | |||
}; | |||
// 修改 | |||
const savaHandle = () => { | |||
state.form.vehicleId=cacachCarid |
@@ -11,32 +11,41 @@ | |||
<t-td>记账副卡当日开卡数</t-td> | |||
<t-td>记账卡累计发卡数</t-td> | |||
</t-tr> | |||
<t-tr v-for="(item,index) in dataAll.vehicleData.vehicleDataDetails" :key="index" fontSize="12"> | |||
<t-tr v-if="dataAll.vehicleData" v-for="(item,index) in dataAll.vehicleData.vehicleDataDetails" :key="index" fontSize="12"> | |||
<t-td>{{ item.vehicleType }}</t-td> | |||
<t-td>{{ item.dayCardCount }}</t-td> | |||
<t-td>{{ item.cardCount }}</t-td> | |||
</t-tr> | |||
<t-tr font-size="12"> | |||
<t-td>合计</t-td> | |||
<t-td>{{ dataAll.vehicleData.vehicleDataCount.dayCardCount }}</t-td> | |||
<t-td>{{ dataAll.vehicleData.vehicleDataCount.cardCount }}</t-td> | |||
<t-td>{{ dataAll.vehicleData? dataAll.vehicleData.vehicleDataCount.dayCardCount:null }}</t-td> | |||
<t-td>{{ dataAll.vehicleData? dataAll.vehicleData.vehicleDataCount.cardCount:null }}</t-td> | |||
</t-tr> | |||
</t-table> | |||
</view> | |||
<!-- 改变类型和时间 --> | |||
<view class="change_type"> | |||
<uni-data-select v-model="selectTypeValue" :localdata="typeRange" @change="changeType" | |||
<uni-data-select v-if="!isAli" v-model="selectTypeName" :localdata="typeRange" @change="changeType" | |||
:clear="false"></uni-data-select> | |||
<view class='time'> | |||
<uni-datetime-picker type="date" :clear-icon="false" v-model="dateTime" @change="change" | |||
<uni-datetime-picker v-if="!isAli" type="date" :clear-icon="false" v-model="dateTime" @change="change" | |||
@show="showTan" @close="closeTan" /> | |||
<!-- <button class="page-body-button" v-if="isAli" type="primary" @click="aliDate()">选择日期:yyyy-MM-dd</button> --> | |||
<view v-if="isAli" class="info_plate"> | |||
<text>日期</text> | |||
<u-input v-model="dateTime" @click="aliDate" class="input" disabled placeholder="请选择日期" /> | |||
<!-- <u-icon name="arrow-right" @click="aliDate" style="margin-left: 10px;display: flex;"></u-icon> --> | |||
</view> | |||
</view> | |||
</view> | |||
<view v-if="pieData !={} || chartData !={} || lineData !={} "> | |||
<view v-if=" isShow===0 "> | |||
<view class=" title title_pie"> | |||
<view class="choice_item1"><uni-data-select v-model="selectPieValue" :localdata="pieRange" | |||
@change="changePie" :clear="false"></uni-data-select></view> | |||
<view class="choice_item1"><uni-data-select v-if="!isAli" v-model="selectPieValue" :localdata="pieRange" | |||
@change="changePie" :clear="false"> | |||
</uni-data-select></view> | |||
</view> | |||
<view class="charts-box" v-if="hideCanvas"> | |||
<qiun type="pie" :opts="opts" :chartData="pieData" /> | |||
@@ -64,6 +73,7 @@ | |||
</view> | |||
<!-- <view v-else>暂无数据统计信息</view> --> | |||
<u-select v-model="selectTypeName" :list="typeRange" @confirm="selectConfirm"></u-select> | |||
</view> | |||
</template> | |||
@@ -92,9 +102,10 @@ | |||
export default { | |||
data() { | |||
return { | |||
isAli: false, | |||
hideCanvas: false, | |||
canvasShow: false, | |||
dateTime: Date.now(), //日期 | |||
dateTime: "", //日期 | |||
noDealDateTime: '', //没有处理过的时间,传给后端 | |||
dealDateTime: [], //处理过后的时间,前端展示 | |||
dataAll: '', //总的数据 | |||
@@ -200,7 +211,14 @@ | |||
qiun | |||
}, | |||
onLoad() { | |||
// #ifdef MP-ALIPAY | |||
this.isAli = true | |||
// #endif | |||
// #ifdef MP-WEIXIN | |||
this.isAli = false | |||
// #endif | |||
this.noDealDateTime = nowDate(new Date()); | |||
this.dateTime = nowDate(new Date()); | |||
// this.noDealDateTime='2023-04-17'; | |||
this.dealDateTime = nowDate(new Date()).split('-'); | |||
this.reqPie(); //饼状图数据请求 | |||
@@ -293,14 +311,18 @@ | |||
.then((res) => { | |||
tools.hideLoadingAlert(); | |||
this.dataAll = stringToJson(res.bizContent); | |||
if (this.dataAll.cardData) { | |||
console.log("this.dataAll", this.dataAll) | |||
this.dealPieData(stringToJson(res.bizContent)); //处理饼状图数据 | |||
this.getPieData(this.pieDataAll[0]); //饼状图展示 | |||
this.dealLineData(stringToJson(res.bizContent)); //处理折线图数据 | |||
this.getLineData(this.lineDataAll[0]); //折线图展示 | |||
this.dealColData(stringToJson(res.bizContent)) //处理柱状图数据 | |||
this.getColumnData(this.colData.xData, this.colData.yData[0]); //柱状图 | |||
try{ | |||
if (this.dataAll.cardData) { | |||
console.log("this.dataAll", this.dataAll) | |||
this.dealPieData(stringToJson(res.bizContent)); //处理饼状图数据 | |||
this.getPieData(this.pieDataAll[0]); //饼状图展示 | |||
this.dealLineData(stringToJson(res.bizContent)); //处理折线图数据 | |||
this.getLineData(this.lineDataAll[0]); //折线图展示 | |||
this.dealColData(stringToJson(res.bizContent)) //处理柱状图数据 | |||
this.getColumnData(this.colData.xData, this.colData.yData[0]); //柱状图 | |||
} | |||
}catch(error){ | |||
console.log(error.name + ":" + error.message ) | |||
} | |||
}) | |||
}, | |||
@@ -450,7 +472,23 @@ | |||
// this.canvasShow = getItem("show") | |||
}, | |||
} | |||
aliDate(){ | |||
my.datePicker({ | |||
success: (res) => { | |||
console.log("您选择的日期为:"+res.date) | |||
this.dateTime = res.date; | |||
console.log("您选择的日期为:"+ this.dateTime) | |||
this.dealDateTime = res.date.split('-'); | |||
console.log("您选择的日期为:"+ this.dealDateTime) | |||
this.noDealDateTime = res.date; | |||
console.log("您选择的日期为:"+ this.noDealDateTime) | |||
this.reqPie(); | |||
}, | |||
}); | |||
} | |||
}, | |||
}; | |||
</script> | |||
@@ -499,7 +537,15 @@ | |||
.uni-stat__select { | |||
width: 40% !important; | |||
} | |||
.info_plate { | |||
display: flex; | |||
flex-direction: row; | |||
width: 94%; | |||
height: 100rpx; | |||
margin: 0 auto; | |||
border-bottom: 2rpx solid #f2f2f2; | |||
} | |||
.title_pie { | |||
display: flex; | |||
justify-content: flex-end; | |||
@@ -527,6 +573,7 @@ | |||
width: 40%; | |||
} | |||
.title_name { | |||
width: 95%; | |||
font-weight: 600; |