private YCTPaymentInfo GetPaymentInfoFromCPU(YCTPacket packet) { byte[] data = packet.Data; //86字节 if (data == null || data.Length == 0) { return(null); } try { YCTPaymentInfo payment = new YCTPaymentInfo(); payment.本次交易设备编号 = HexStringConverter.HexToString(Slice(data, 0, 6), string.Empty); payment.终端交易流水号 = BEBinaryConverter.BytesToInt(Slice(data, 6, 4)); payment.本次交易日期时间 = DateTime.ParseExact(HexStringConverter.HexToString(Slice(data, 10, 7), string.Empty), "yyyyMMddHHmmss", null); payment.逻辑卡号 = HexStringConverter.HexToString(Slice(data, 17, 8), string.Empty); payment.物理卡号 = HexStringConverter.HexToString(Slice(data, 25, 8), string.Empty); payment.交易金额 = BEBinaryConverter.BytesToInt(Slice(data, 33, 4)); payment.票价 = BEBinaryConverter.BytesToInt(Slice(data, 37, 4)); payment.本次余额 = BEBinaryConverter.BytesToInt(Slice(data, 41, 4)); payment.交易类型 = Slice(data, 45, 1)[0]; payment.附加交易类型 = Slice(data, 46, 1)[0]; payment.票卡充值交易计数 = BEBinaryConverter.BytesToInt(Slice(data, 47, 2)); payment.票卡消费交易计数 = BEBinaryConverter.BytesToInt(Slice(data, 49, 2)); payment.累计门槛月份 = HexStringConverter.HexToString(Slice(data, 51, 2), string.Empty); payment.公交门槛计数 = Slice(data, 53, 1)[0]; payment.地铁门槛计数 = Slice(data, 54, 1)[0]; payment.联乘门槛计数 = Slice(data, 55, 1)[0]; payment.本次交易入口设备编号 = HexStringConverter.HexToString(Slice(data, 56, 6), string.Empty); payment.本次交易入口日期时间 = HexStringConverter.HexToString(Slice(data, 62, 7), string.Empty); payment.次交易设备编号 = HexStringConverter.HexToString(Slice(data, 69, 6), string.Empty); payment.次交易日期时间 = HexStringConverter.HexToString(Slice(data, 75, 4), string.Empty); payment.区域代码 = HexStringConverter.HexToString(Slice(data, 79, 1), string.Empty); payment.区域卡类型 = HexStringConverter.HexToString(Slice(data, 80, 2), string.Empty); payment.区域子码 = HexStringConverter.HexToString(Slice(data, 82, 1), string.Empty); payment.交易认证码 = HexStringConverter.HexToString(Slice(data, 83, 4), string.Empty); return(payment); } catch (Exception ex) { Ralid.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex); } return(null); }
private YCTPaymentInfo GetPaymentInfoFromM1(YCTPacket packet) { byte[] data = packet.Data; //73个字节 if (data == null || data.Length == 0) { return(null); } try { YCTPaymentInfo payment = new YCTPaymentInfo(); payment.终端交易流水号 = BEBinaryConverter.BytesToInt(Slice(data, 0, 4)); payment.逻辑卡号 = HexStringConverter.HexToString(Slice(data, 4, 8), string.Empty); payment.物理卡号 = HexStringConverter.HexToString(Slice(data, 12, 4), string.Empty); payment.次交易设备编号 = HexStringConverter.HexToString(Slice(data, 16, 4), string.Empty); payment.次交易日期时间 = HexStringConverter.HexToString(Slice(data, 20, 7), string.Empty); payment.本次交易设备编号 = HexStringConverter.HexToString(Slice(data, 27, 4), string.Empty); payment.本次交易日期时间 = DateTime.ParseExact(HexStringConverter.HexToString(Slice(data, 31, 7), string.Empty), "yyyyMMddHHmmss", null); payment.交易金额 = BEBinaryConverter.BytesToInt(Slice(data, 38, 4)); payment.本次余额 = BEBinaryConverter.BytesToInt(Slice(data, 42, 4)); payment.票价 = BEBinaryConverter.BytesToInt(Slice(data, 46, 4)); payment.交易类型 = Slice(data, 50, 1)[0]; payment.票卡消费交易计数 = BEBinaryConverter.BytesToInt(Slice(data, 51, 2)); payment.累计门槛月份 = HexStringConverter.HexToString(Slice(data, 53, 2), string.Empty); payment.公交门槛计数 = Slice(data, 55, 1)[0]; payment.地铁门槛计数 = Slice(data, 56, 1)[0]; payment.联乘门槛计数 = Slice(data, 57, 1)[0]; payment.本次交易入口设备编号 = HexStringConverter.HexToString(Slice(data, 58, 4), string.Empty); payment.本次交易入口日期时间 = HexStringConverter.HexToString(Slice(data, 62, 7), string.Empty); payment.交易认证码 = HexStringConverter.HexToString(Slice(data, 69, 4), string.Empty); return(payment); } catch (Exception ex) { Ralid.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex); } return(null); }