1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using Edge.Core.Parser.BinaryParser.Util;
- using ShellChina_EPS_Project_CarPlatePay_EpsClient_App.MessageEntity.Base;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ShellChina_EPS_Project_CarPlatePay_EpsClient_App.MessageEntity.Incoming
- {
- public class MembershipInquiryResponse : MembershipInquiryCommand
- {
- /// <summary>
- /// 消息长度 b2
- /// 消息类型 n4
- /// 主位图 b8
- /// </summary>
- private int ContentPrefixLength = 0;
- public MembershipInquiryResponse()
- {
- Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
- }
- public override int P_3_处理码 { get { this.ParseFromContent(); return base.P_3_处理码; } }
- public override string P_12_交易流水号 { get { this.ParseFromContent(); return base.P_12_交易流水号; } }
- public override string P_24_会员ID { get { this.ParseFromContent(); return base.P_24_会员ID; } }
- public override string P_34_车牌号码 { get { this.ParseFromContent(); return base.P_34_车牌号码; } }
- /// <summary>
- /// “00000”表示交易成功,“00001”表示交易失败
- /// </summary>
- public override string P_39_交易响应码 { get { this.ParseFromContent(); return base.P_39_交易响应码; } }
- public override string P_40_错误信息 { get { this.ParseFromContent(); return base.P_40_错误信息; } }
- public override string P_41_终端编号 { get { this.ParseFromContent(); return base.P_41_终端编号; } }
- private void ParseFromContent()
- {
- this.P_3_处理码 = base.Content.Skip(ContentPrefixLength).Take(3).GetBCD();
- var dynamicOffset = 3;
- if (base.BitMap.Determine(12))
- {
- this.P_12_交易流水号 = Encoding.ASCII.GetString(base.Content.Skip(ContentPrefixLength + dynamicOffset).Take(9).ToArray());
- dynamicOffset += 9;
- }
- if (base.BitMap.Determine(24))
- {
- this.P_24_会员ID = Encoding.ASCII.GetString(base.Content.Skip(ContentPrefixLength + dynamicOffset).Take(20).ToArray());
- dynamicOffset += 20;
- }
- //field 34 is LLLVAR
- if (base.BitMap.Determine(34))
- {
- int len = base.Content.Skip(ContentPrefixLength + dynamicOffset).Take(2).GetBCD();
- dynamicOffset += 2;
- this.P_34_车牌号码 = Encoding.GetEncoding("GBK").GetString(base.Content.Skip(ContentPrefixLength + dynamicOffset).Take(len).ToArray());
- dynamicOffset += len;
- }
- this.P_39_交易响应码 = Encoding.ASCII.GetString(base.Content.Skip(ContentPrefixLength + dynamicOffset).Take(5).ToArray());
- dynamicOffset += 5;
- //field 40 is LLLVAR
- if (base.BitMap.Determine(40))
- {
- int len = base.Content.Skip(ContentPrefixLength + dynamicOffset).Take(2).GetBCD();
- dynamicOffset += 2;
- this.P_40_错误信息 = Encoding.GetEncoding("GBK").GetString(base.Content.Skip(ContentPrefixLength + dynamicOffset).Take(len).ToArray());
- dynamicOffset += len;
- }
- if (base.BitMap.Determine(41))
- this.P_41_终端编号 = Encoding.ASCII.GetString(base.Content.Skip(ContentPrefixLength + dynamicOffset).Take(12).ToArray());
- }
- }
- }
|