using Edge.Core.Parser.BinaryParser.Attributes;
using HengshanPaymentTerminal.Support;
using System;
using System.Collections.Generic;
using System.Text;
namespace HengshanPaymentTerminal.MessageEntity.Incoming
{
///
/// IC terminal on pump requests card validation on system
/// 油机卡终端向后台发起验卡请求
/// Sample: FA010161001C1500000001000000000000100105536DCA9D06010103001800025EC8FF3258
/// Analysis: FA 01 01 61 001C 15 00000001 00000000000010010553 6DCA9D06 0101 030018 00025EC8 FF 3258
///
public class ValidateCardRequest : CardMessageBase
{
#region Constructor
public ValidateCardRequest() : base(Command.ValidateCardRequest)
{
}
#endregion
#region Properties
///
/// The ID of the IC card terminal.
/// 终端编号,类型:压缩BCD,4字节
///
[Format(4, EncodingType.BcdString, -90)]
public string TerminalID { get; set; }
///
/// Logical card number.
/// 逻辑卡号,类型:压缩BCD,10字节
///
[Format(10, EncodingType.BcdString, -89)]
public string Asn { get; set; }
///
/// The physical card number.
/// 物理卡号,HEX,4字节
///
[Format(4, EncodingType.ReverseHexString, -88)]
public string PhysicalCardNo { get; set; }
///
/// Fueling poing code, 1 byte nozzle number, 1 byte pump number.
/// 加油点编号,HEX,2字节,1字节油枪号,1字节泵编号
///
[Format(2, EncodingType.HexString, -87)]
public string FPCode { get; set; }
[Format(3, EncodingType.HexString, -86)]
public string CardInfo { get; set; }
///
/// Card balance.
/// 卡钱包余额,HEX,4字节
///
[Format(4, EncodingType.BIN, -85)]
public int Balance { get; set; }
//THIS FIELD WAS SPECIFIED BUT NOT USED.
///
/// Time stamp of the transaction.
/// 交易时间,压缩BCD,7字节
///
public DateTime DispenserTime { get; set; }
public FuelingPointCode FuelingPoint
{
get
{
return new FuelingPointCode
{
NozzleNo = FPCode.Substring(0, 2).ToByte(),
PumpNo = FPCode.Substring(2, 2).ToByte()
};
}
}
public CardInfo CurrentCardInfo
{
get
{
return new CardInfo
{
CardType = CardInfo.Substring(0, 2).ToByte(),
CardCtc = CardInfo.Substring(2, 4).ToUInt16()
};
}
}
#endregion
}
}