示例#1
0
        public void Test_019_MasterCard_Level3_Sale()
        {
            var commercialData = new CommercialData(TaxType.NOTUSED)
            {
                PoNumber = "9876543210"
            };

            commercialData.AddLineItems(
                new CommercialLineItem {
                CommodityCode = "030",
                Description   = "Misc Good",
                UPC           = "012345678901",
                Quantity      = 5.1m,
                UnitOfMeasure = "lbs",
                UnitCost      = 0.6m,
                //DiscountAmount = 0.61m,
                TotalAmount          = 0.62m,
                TaxAmount            = 0.63m,
                ExtendedAmount       = 0.64m,
                CreditDebitIndicator = CreditDebitIndicator.Credit,
                NetGrossIndicator    = NetGrossIndicator.Gross
            }
                );

            Transaction response = MasterCardManual.Charge(0.52m)
                                   .WithCurrency("USD")
                                   .WithCommercialData(commercialData)
                                   .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("00", response.ResponseCode);
        }
示例#2
0
        public void Sale_Level3()
        {
            var commercialData = new CommercialData(TaxType.SALESTAX, CommercialIndicator.Level_III)
            {
                Description            = "Misc Goods",
                DiscountAmount         = 1.01m,
                FreightAmount          = 1.02m,
                DutyAmount             = 1.03m,
                DestinationPostalCode  = "06033",
                DestinationCountryCode = "840",
                OriginPostalCode       = "01887",
                PoNumber  = "17801",
                TaxAmount = 0m
            };

            commercialData.AddLineItems(
                new CommercialLineItem {
                CommodityCode        = "030",
                Description          = "Misc Good",
                UPC                  = "012345678901",
                Quantity             = 5.1m,
                UnitOfMeasure        = "lbs",
                UnitCost             = 0.6m,
                DiscountAmount       = 0.61m,
                TotalAmount          = 0.62m,
                TaxAmount            = 0.63m,
                ExtendedAmount       = 0.64m,
                CreditDebitIndicator = CreditDebitIndicator.Credit,
                NetGrossIndicator    = NetGrossIndicator.Gross
            },
                new CommercialLineItem {
                CommodityCode        = "031",
                Description          = "Misc Good2",
                UPC                  = "012345678901",
                Quantity             = 5.1m,
                UnitOfMeasure        = "lbs",
                UnitCost             = 0.6m,
                DiscountAmount       = 0.61m,
                TotalAmount          = 0.62m,
                TaxAmount            = 0.63m,
                ExtendedAmount       = 0.64m,
                CreditDebitIndicator = CreditDebitIndicator.Credit,
                NetGrossIndicator    = NetGrossIndicator.Gross
            }
                );

            var response = card.Charge(1.05m)
                           .WithCurrency("USD")
                           .WithAddress(address)
                           .WithInvoiceNumber("1556")
                           .WithCommercialData(commercialData)
                           .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("00", response.ResponseCode);
        }
示例#3
0
        public void Test_019_MasterCard_Level3_Sale()
        {
            Logger.AppendText("\r\nTest_019_MasterCard_Level3_Sale");

            var commercialData = new CommercialData(TaxType.NOTUSED, CommercialIndicator.Level_III)
            {
                PoNumber               = "9876543210",
                TaxAmount              = 0.01m,
                DestinationPostalCode  = "85212",
                DestinationCountryCode = "USA",
                OriginPostalCode       = "22193",
                SummaryCommodityCode   = "SCC",
                CustomerVAT_Number     = "123456789",
                VAT_InvoiceNumber      = "UVATREF162",
                OrderDate              = DateTime.Now,
                FreightAmount          = 0.01m,
                DutyAmount             = 0.01m,
                AdditionalTaxDetails   = new AdditionalTaxDetails {
                    TaxType     = "VAT",
                    TaxAmount   = 0.01m,
                    TaxRate     = 0.04m,
                    TaxCategory = TaxCategory.VAT
                }
            };

            commercialData.AddLineItems(
                new CommercialLineItem {
                ProductCode          = "PRDCD1",
                Name                 = "PRDCD1NAME",
                UnitCost             = 0.01m,
                Quantity             = 1m,
                UnitOfMeasure        = "METER",
                Description          = "PRODUCT 1 NOTES",
                CommodityCode        = "12DIGIT ACCO",
                AlternateTaxId       = "1234567890",
                CreditDebitIndicator = CreditDebitIndicator.Credit,
                DiscountDetails      = new DiscountDetails {
                    DiscountName       = "Indep Sale 1",
                    DiscountAmount     = 0.50m,
                    DiscountPercentage = 0.10m,
                    DiscountType       = "SALE"
                }
            }
                );

            Response = MasterCardManual.Charge(0.53m)
                       .WithCurrency("USD")
                       .WithCommercialData(commercialData)
                       .WithClientTransactionId(ClientTransactionId)
                       .WithAddress(Address)
                       .Execute();
        }
示例#4
0
 public ManagementBuilder WithCommercialData(CommercialData data)
 {
     CommercialData = data;
     if (data.CommercialIndicator.Equals(CommercialIndicator.Level_II))
     {
         TransactionModifier = TransactionModifier.Level_II;
     }
     else
     {
         TransactionModifier = TransactionModifier.Level_III;
     }
     return(this);
 }
示例#5
0
        public void MasterCard_Level3_Sale()
        {
            var commercialData = new CommercialData(TaxType.SALESTAX, CommercialIndicator.Level_III)
            {
                PoNumber               = "9876543210",
                TaxAmount              = 0.01m,
                DestinationPostalCode  = "85212",
                DestinationCountryCode = "USA",
                OriginPostalCode       = "22193",
                SummaryCommodityCode   = "SCC",
                VAT_InvoiceNumber      = "UVATREF162",
                OrderDate              = DateTime.Now,
                FreightAmount          = 0.01m,
                DutyAmount             = 0.01m,
                AdditionalTaxDetails   = new AdditionalTaxDetails {
                    TaxAmount = 0.01m,
                    TaxRate   = 0.04m,
                }
            };

            commercialData.AddLineItems(
                new CommercialLineItem {
                ProductCode   = "PRDCD1",
                UnitCost      = 0.01m,
                Quantity      = 1m,
                UnitOfMeasure = "METER",
                Description   = "PRODUCT 1 NOTES",
                // CommodityCode = "12DIGIT ACCO",
                DiscountDetails = new DiscountDetails {
                    DiscountAmount = 0.50m
                }
            }
                );

            var response = MasterCardManual.Charge(0.53m)
                           .WithCurrency("USD")
                           .WithCommercialRequest(true)
                           .WithClientTransactionId(ClientTransactionId)
                           .WithAddress(Address)
                           .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("00", response.ResponseCode);

            var edit = response.Edit()
                       .WithCommercialData(commercialData)
                       .Execute();

            Assert.IsNotNull(edit);
            Assert.AreEqual("00", edit.ResponseCode);
        }
示例#6
0
        public void Test_001_Visa_Level_II_Sale()
        {
            var commercialData = new CommercialData(TaxType.NOTUSED)
            {
                PoNumber = "9876543210"
            };

            Transaction response = VisaManual.Charge(0.52m)
                                   .WithCurrency("USD")
                                   .WithCommercialData(commercialData)
                                   .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("00", response.ResponseCode);
        }
示例#7
0
        public void Test_002_MasterCard_Level_II_Sale()
        {
            var commercialData = new CommercialData(TaxType.SALESTAX)
            {
                TaxAmount = 0.02m,
                PoNumber  = "9876543210"
            };

            Transaction response = MasterCardManual.Charge(0.52m)
                                   .WithCurrency("USD")
                                   .WithCommercialData(commercialData)
                                   .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("00", response.ResponseCode);
        }
示例#8
0
        public void Test_002_MasterCard_Level_II_Sale()
        {
            Logger.AppendText("\r\nTest_002_MasterCard_Level_II_Sale");

            var commercialData = new CommercialData(TaxType.SALESTAX)
            {
                TaxAmount = 0.02m,
                PoNumber  = "9876543210"
            };

            Response = MasterCardManual.Charge(0.52m)
                       .WithCurrency("USD")
                       .WithCommercialData(commercialData)
                       .WithClientTransactionId(ClientTransactionId)
                       .WithAddress(Address)
                       .Execute();
        }
示例#9
0
        public void Test_003_Amex_Level_II_Sale()
        {
            var commercialData = new CommercialData(TaxType.NOTUSED)
            {
                SupplierReferenceNumber = "123456",
                CustomerReferenceId     = "987654",
                DestinationPostalCode   = "85284",
                Description             = "AMEX LEVEL 2 TEST CASE"
            };

            Transaction response = AmexManual.Charge(1.5m)
                                   .WithCurrency("USD")
                                   .WithCommercialData(commercialData)
                                   .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("00", response.ResponseCode);
        }
示例#10
0
        public void Test_001_Visa_Level_II_Sale()
        {
            Logger.AppendText("Test_001_Visa_Level_II_Sale");

            var commercialData = new CommercialData(TaxType.NOTUSED)
            {
                PoNumber  = "9876543210",
                TaxAmount = 0m
            };

            Response = VisaManual.Charge(0.52m)
                       .WithCurrency("USD")
                       .WithCommercialData(commercialData)
                       .WithAddress(Address)
                       .WithClientTransactionId(ClientTransactionId)
                       .WithDescription("Test_001_Visa_Level_II_Sale")
                       .Execute();
        }
示例#11
0
        public void Test_003_Amex_Level_II_Sale()
        {
            Logger.AppendText("\r\nTest_003_Amex_Level_II_Sale");

            var commercialData = new CommercialData(TaxType.NOTUSED)
            {
                SupplierReferenceNumber = "123456",
                CustomerReferenceId     = "987654",
                DestinationPostalCode   = "85284",
                Description             = "AMEX LEVEL 2 TEST CASE",
                TaxAmount = 0m
            };

            Response = AmexManual.Charge(1.5m)
                       .WithCurrency("USD")
                       .WithCommercialData(commercialData)
                       .WithClientTransactionId(ClientTransactionId)
                       .WithAddress(Address)
                       .Execute();
        }
示例#12
0
        public void CreditServiceCommercialEdit()
        {
            Transaction response = service.Charge(13m)
                                   .WithCurrency("USD")
                                   .WithPaymentMethod(card)
                                   .WithCommercialRequest(true)
                                   .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("00", response.ResponseCode);

            var commercialData = new CommercialData(TaxType.SALESTAX)
            {
                TaxAmount = 1m
            };

            Transaction editResponse = service.Edit(response.TransactionId)
                                       .WithCommercialData(commercialData)
                                       .Execute();

            Assert.IsNotNull(editResponse);
            Assert.AreEqual("00", editResponse.ResponseCode);
        }
示例#13
0
 public AuthorizationBuilder WithCommercialData(CommercialData value)
 {
     CommercialData = value;
     return(this);
 }
示例#14
0
        public Transaction ProcessAuthorization(AuthorizationBuilder builder)
        {
            ElementTree    et            = new ElementTree();
            IPaymentMethod paymentMethod = builder.PaymentMethod;

            var transaction = et.Element(MapRequestType(builder))
                              .Set("xmlns", "http://schemas.merchantwarehouse.com/merchantware/v45/");

            // Credentials
            var credentials = et.SubElement(transaction, "Credentials");

            et.SubElement(credentials, "MerchantName").Text(MerchantName);
            et.SubElement(credentials, "MerchantSiteId").Text(MerchantSiteId);
            et.SubElement(credentials, "MerchantKey").Text(MerchantKey);

            // Payment Data
            var paymentData = et.SubElement(transaction, "PaymentData");

            if (paymentMethod is CreditCardData)
            {
                CreditCardData card = paymentMethod as CreditCardData;
                if (card.Token != null)
                {
                    if (card.MobileType != null)
                    {
                        et.SubElement(paymentData, "Source").Text("Wallet");
                        et.SubElement(paymentData, "WalletId", MapWalletId(card.MobileType));
                        et.SubElement(paymentData, "EncryptedPaymentData", card.Token);
                    }
                    else
                    {
                        et.SubElement(paymentData, "Source").Text("Vault");
                        et.SubElement(paymentData, "VaultToken", card.Token);
                    }
                }
                else
                {
                    et.SubElement(paymentData, "Source").Text("Keyed");
                    et.SubElement(paymentData, "CardNumber", card.Number);
                    et.SubElement(paymentData, "ExpirationDate", card.ShortExpiry);
                    et.SubElement(paymentData, "CardHolder", card.CardHolderName);
                    et.SubElement(paymentData, "CardVerificationValue", card.Cvn);
                }
            }
            else if (paymentMethod is CreditTrackData)
            {
                et.SubElement(paymentData, "Source").Text("READER");

                CreditTrackData track = paymentMethod as CreditTrackData;
                et.SubElement(paymentData, "TrackData", track.Value);
            }

            // AVS
            et.SubElement(paymentData, "AvsStreetAddress", builder.BillingAddress?.StreetAddress1);
            et.SubElement(paymentData, "AvsZipCode", builder.BillingAddress?.PostalCode);

            // Request
            var request = et.SubElement(transaction, "Request");

            et.SubElement(request, "Amount", builder.Amount.ToCurrencyString());
            et.SubElement(request, "CashbackAmount", builder.CashBackAmount.ToCurrencyString());
            et.SubElement(request, "SurchargeAmount", builder.ConvenienceAmount.ToCurrencyString());
            //et.SubElement(request, "TaxAmount", builder..ToCurrencyString());
            et.SubElement(request, "AuthorizationCode", builder.OfflineAuthCode);

            if (builder.AutoSubstantiation != null)
            {
                var healthcare = et.SubElement(request, "HealthCareAmountDetails");

                AutoSubstantiation auto = builder.AutoSubstantiation;
                et.SubElement(healthcare, "CopayAmount", auto.CopaySubTotal.ToCurrencyString());
                et.SubElement(healthcare, "ClinicalAmount", auto.ClinicSubTotal.ToCurrencyString());
                et.SubElement(healthcare, "DentalAmount", auto.DentalSubTotal.ToCurrencyString());
                et.SubElement(healthcare, "HealthCareTotalAmount", auto.TotalHealthcareAmount.ToCurrencyString());
                et.SubElement(healthcare, "PrescriptionAmount", auto.PrescriptionSubTotal.ToCurrencyString());
                et.SubElement(healthcare, "VisionAmount", auto.VisionSubTotal.ToCurrencyString());
            }

            et.SubElement(request, "InvoiceNumber", builder.InvoiceNumber);
            et.SubElement(request, "RegisterNumber", RegisterNumber);
            et.SubElement(request, "MerchantTransactionId", builder.ClientTransactionId);
            et.SubElement(request, "CardAcceptorTerminalId", TerminalId);
            et.SubElement(request, "EnablePartialAuthorization", builder.AllowPartialAuth);
            et.SubElement(request, "ForceDuplicate", builder.AllowDuplicates);

            // Level III
            if (builder.CommercialData != null)
            {
                var invoice = et.SubElement(request, "Invoice");

                CommercialData cd = builder.CommercialData;
                et.SubElement(invoice, "TaxIndicator", MapTaxType(cd.TaxType));
                et.SubElement(invoice, "ProductDescription", cd.Description);
                et.SubElement(invoice, "DiscountAmount", cd.DiscountAmount);
                et.SubElement(invoice, "ShippingAmount", cd.FreightAmount);
                et.SubElement(invoice, "DutyAmount", cd.DutyAmount);
                et.SubElement(invoice, "DestinationPostalCode", cd.DestinationPostalCode);
                et.SubElement(invoice, "DestinationCountryCode", cd.DestinationCountryCode);
                et.SubElement(invoice, "ShipFromPostalCode", cd.OriginPostalCode);

                if (cd.LineItems.Count > 0)
                {
                    var lineItemsElement = et.SubElement(invoice, "LineItems");

                    foreach (var item in cd.LineItems)
                    {
                        var lineItem = et.SubElement(lineItemsElement, "LineItem");
                        et.SubElement(lineItem, "CommodityCode", item.CommodityCode);
                        et.SubElement(lineItem, "Description", item.Description);
                        et.SubElement(lineItem, "Upc", item.UPC);
                        et.SubElement(lineItem, "Quantity", item.Quantity);
                        et.SubElement(lineItem, "UnitOfMeasure", item.UnitOfMeasure);
                        et.SubElement(lineItem, "UnitCost", item.UnitCost);
                        et.SubElement(lineItem, "DiscountAmount", item.DiscountAmount);
                        et.SubElement(lineItem, "TotalAmount", item.TotalAmount);
                        et.SubElement(lineItem, "TaxAmount", item.TaxAmount);
                        et.SubElement(lineItem, "ExtendedAmount", item.ExtendedAmount);
                        et.SubElement(lineItem, "DebitOrCreditIndicator", item.CreditDebitIndicator.ToString());
                        et.SubElement(lineItem, "NetOrGrossIndicator", item.NetGrossIndicator.ToString());
                    }
                }
            }

            var response = DoTransaction(BuildEnvelope(et, transaction));

            return(MapResponse(builder, response));
        }