public static string Serialize(this AdditionalAmountInfoModel additionalAmountInfo)
 {
     return(string.Format("{0:00}{1}{2}",
                          additionalAmountInfo.AccountType, AsciiTable.FS,
                          additionalAmountInfo.AmountType, AsciiTable.FS,
                          additionalAmountInfo.CurrencyCode, AsciiTable.FS,
                          additionalAmountInfo.Sign, AsciiTable.FS,
                          additionalAmountInfo.Amount, AsciiTable.FS
                          ));
 }
        public static List <IGroupRecord> StandardGroup3Records(string cvv)
        {
            var g3records = new List <IGroupRecord>
            {
                new CommercialCardModel()
            };

            if (!string.IsNullOrEmpty(cvv))
            {
                g3records.Add(new CardVerificationCodeModel
                {
                    VerificationCode = VerificationCodeDesiredResponseTypeModel.EnhancedResponseRequested
                });
            }

            g3records.Add(DeveloperModel.Empty);

            var additionalAmounts = new AdditionalAmountsModel
            {
                AdditionalAmount1 = AdditionalAmountInfoModel.NewAdditionalAmountInfo(AdditionalAmountAccountTypeModel.CreditCardAccount, AdditionalAmountTypeModel.DepositAccountAvailableBalance, CurrencyCodeTypeModel.UnitedStatesUsDollar, AdditionalAmountSignTypeModel.PositiveBalance, 0),
                AdditionalAmount2 = AdditionalAmountInfoModel.NewAdditionalAmountInfo(AdditionalAmountAccountTypeModel.CreditCardAccount, AdditionalAmountTypeModel.DepositAccountAvailableBalance, CurrencyCodeTypeModel.UnitedStatesUsDollar, AdditionalAmountSignTypeModel.PositiveBalance, 0),
                AdditionalAmount3 = AdditionalAmountInfoModel.NewAdditionalAmountInfo(AdditionalAmountAccountTypeModel.CreditCardAccount, AdditionalAmountTypeModel.DepositAccountAvailableBalance, CurrencyCodeTypeModel.UnitedStatesUsDollar, AdditionalAmountSignTypeModel.PositiveBalance, 0),
                AdditionalAmount4 = AdditionalAmountInfoModel.NewAdditionalAmountInfo(AdditionalAmountAccountTypeModel.CreditCardAccount, AdditionalAmountTypeModel.DepositAccountAvailableBalance, CurrencyCodeTypeModel.UnitedStatesUsDollar, AdditionalAmountSignTypeModel.PositiveBalance, 0)
            };

            g3records.Add(additionalAmounts);

            g3records.Add(new ProductParticipationModel
            {
                ProductParticipationGroup = ProductParticipationGroupTypeModel.MerchandiseAndCashOverMustBeFullyApprovedOrDeclined
            });

            // if visa
            //if card.Visa == issuer && 0 < len(r.XID) && 0 < len(r.CAVV) {
            //    g3records = append(g3records, NewG3v017Visa3dSecurEcomVerificationRequest(r.XID, r.CAVV).String())
            //}

            // if mastercard
            //if card.Mastercard == issuer && 0 < len(r.UCAF) {
            //    g3records = append(g3records, NewG3v019MastercardUniversalCardholderAuthenticationRequest(UcafDataWasPopulated, r.UCAF).String())
            //}

            return(g3records);
        }