123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using Edge.Core.Parser.BinaryParser.Util;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ShellChina_EPS_Project_CarPlatePay_EpsClient_App.MessageEntity.Incoming
- {
- public class PaymentResponse : PaymentCommand
- {
- static PaymentResponse()
- {
- Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
- }
- private int ContentPrefixLength = 0;
- public override int P_3_处理码 { get { this.ParseFromContent(); return base.P_3_处理码; } }
- public override decimal P_4_交易金额 { get { this.ParseFromContent(); return base.P_4_交易金额; } }
- public override decimal P_5_实付金额 { get { this.ParseFromContent(); return base.P_5_实付金额; } }
- public override DateTime P_7_交易时间 { get { this.ParseFromContent(); return base.P_7_交易时间; } }
- public override string P_12_交易流水号 { get { this.ParseFromContent(); return base.P_12_交易流水号; } }
- public override string P_18_商户订单号 { get { this.ParseFromContent(); return base.P_18_商户订单号; } }
- /// <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(4))
- {
- this.P_4_交易金额 = (decimal)(base.Content.Skip(ContentPrefixLength).Skip(dynamicOffset).Take(6).GetBCD()) / 100;
- dynamicOffset += 6;
- }
- if (base.BitMap.Determine(5))
- {
- this.P_5_实付金额 = (decimal)(base.Content.Skip(ContentPrefixLength).Skip(dynamicOffset).Take(6).GetBCD()) / 100;
- dynamicOffset += 6;
- }
- if (base.BitMap.Determine(7))
- {
- this.P_7_交易时间 =
- new DateTime(
- base.Content.Skip(ContentPrefixLength).Skip(dynamicOffset).Take(2).GetBCD(),
- base.Content.Skip(ContentPrefixLength).Skip(dynamicOffset).Skip(2).Take(1).GetBCD(),
- base.Content.Skip(ContentPrefixLength).Skip(dynamicOffset).Skip(3).Take(1).GetBCD(),
- base.Content.Skip(ContentPrefixLength).Skip(dynamicOffset).Skip(4).Take(1).GetBCD(),
- base.Content.Skip(ContentPrefixLength).Skip(dynamicOffset).Skip(5).Take(1).GetBCD(),
- base.Content.Skip(ContentPrefixLength).Skip(dynamicOffset).Skip(6).Take(1).GetBCD()
- );
- //DateTime.Parse(
- //base.Content.Skip(ContentPrefixLength).Skip(dynamicOffset).Take(7).ToArray().GetBCDString());
- dynamicOffset += 7;
- }
- if (base.BitMap.Determine(12))
- {
- this.P_12_交易流水号 = Encoding.ASCII.GetString(base.Content.Skip(ContentPrefixLength + dynamicOffset).Take(9).ToArray());
- dynamicOffset += 9;
- }
- //field 18 is LLVAR
- if (base.BitMap.Determine(18))
- {
- int len = base.Content.Skip(ContentPrefixLength + dynamicOffset).Take(2).GetBCD();
- dynamicOffset += 2;
- this.P_18_商户订单号 = Encoding.ASCII.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("GB2312").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());
- }
- }
- }
|