Browse Source

2023年9月24日17:32:44

yxb
wq 1 year ago
parent
commit
fd92826ce5
2 changed files with 86 additions and 2 deletions
  1. 85
    1
      static/etc/WJBLE/WJDataEncode.js
  2. 1
    1
      static/etcUtil/index.js

+ 85
- 1
static/etc/WJBLE/WJDataEncode.js View File

@@ -1 +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};
"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
};

+ 1
- 1
static/etcUtil/index.js View File

@@ -124,7 +124,7 @@ function transCmd(cmdArr, type, func, callBack = null) {
switch (connectPrefixName) {
case "WJ":
// #ifdef MP-ALIPAY
wjApi.transCmd(cmdArr, type, '00',function(res) {
wjApi.transCmd(cmdArr, '00', type == '10' ? 'A3' : 'AC',function(res) {
if (res.code == 0) {
func(res.data);
} else {

Loading…
Cancel
Save