public static string Serialize(CardPaymentInfo payment)
        {
            string text = string.Format("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}|{10}|{11}|{12}|{13}|{14}|{15}|{16}",
                                        payment.ChargeDateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                                        payment.CardID,
                                        payment.EnterDateTime != null ? payment.EnterDateTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : string.Empty,
                                        payment.CarPlate,
                                        payment.CardType,
                                        payment.CarType,
                                        (byte)payment.TariffType,
                                        payment.LastTotalPaid,
                                        payment.Accounts,
                                        payment.Paid,
                                        payment.Discount,
                                        (byte)payment.PaymentMode,
                                        (byte)payment.PaymentCode,
                                        payment.IsCenterCharge,
                                        payment.Operator,
                                        payment.StationID,
                                        payment.Memo);

            byte[] data    = System.Text.UTF8Encoding.UTF8.GetBytes(text);
            string hex     = HexStringConverter.HexToString(data, string.Empty);
            string encript = (new DTEncrypt()).Encrypt(hex);

            return(encript);
        }
        public static CardPaymentInfo Deserialize(string value)
        {
            CardPaymentInfo item = null;
            string          hex  = (new DTEncrypt()).DSEncrypt(value);

            byte[] data = HexStringConverter.StringToHex(hex);
            string text = System.Text.UTF8Encoding.UTF8.GetString(data, 0, data.Length);

            string[] temp = text.Split('|');
            if (temp != null && temp.Length > 0)
            {
                try
                {
                    item = new CardPaymentInfo();
                    item.ChargeDateTime = DateTime.Parse(temp[0]);
                    item.CardID         = temp[1];
                    if (string.IsNullOrEmpty(temp[2]))
                    {
                        item.EnterDateTime = null;
                    }
                    else
                    {
                        item.EnterDateTime = DateTime.Parse(temp[2]);
                    }
                    item.CarPlate       = temp[3];
                    item.CardType       = byte.Parse(temp[4]);
                    item.CarType        = byte.Parse(temp[5]);
                    item.TariffType     = (TariffType)(byte.Parse(temp[6]));
                    item.LastTotalPaid  = decimal.Parse(temp[7]);
                    item.Accounts       = decimal.Parse(temp[8]);
                    item.Paid           = decimal.Parse(temp[9]);
                    item.Discount       = decimal.Parse(temp[10]);
                    item.PaymentMode    = (PaymentMode)(byte.Parse(temp[11]));
                    item.PaymentCode    = (PaymentCode)(byte.Parse(temp[12]));
                    item.IsCenterCharge = bool.Parse(temp[13]);
                    item.Operator       = temp[14];
                    item.StationID      = temp[15];
                    item.Memo           = temp[16];
                }
                catch (Exception ex)
                {
                    Ralid.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex);
                    item = null;
                }
            }
            return(item);
        }