public void ecomm_003_PersonalSavings()
        {
            eCheck check = new eCheck {
                RoutingNumber        = "490000018",
                AccountNumber        = "24413815",
                AccountType          = AccountType.SAVINGS,
                CheckType            = CheckType.PERSONAL,
                SecCode              = SecCode.WEB,
                DriversLicenseNumber = "09876543210",
                DriversLicenseState  = "NJ",
                CheckHolderName      = "John Doe",
                PhoneNumber          = "5558675309"
            };

            Transaction response = check.Charge(21m)
                                   .WithCurrency("USD")
                                   .WithAddress(address)
                                   .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("00", response.ResponseCode, response.ResponseMessage);
            Debug.WriteLine("Test 3: " + response.TransactionId);

            Transaction voidResponse = response.Void().Execute();

            Assert.IsNotNull(voidResponse);
            Assert.AreEqual("00", voidResponse.ResponseCode);
            Debug.WriteLine("Test 5: " + voidResponse.TransactionId);
        }
Exemplo n.º 2
0
        public void SupportTestCase()
        {
            ServicesContainer.ConfigureService(new PorticoConfig {
                SecretApiKey  = "skapi_cert_MTyMAQBiHVEAewvIzXVFcmUd2UcyBge_eCpaASUp0A",
                Environment   = Environment.TEST,
                RequestLogger = new RequestFileLogger(@"C:\temp\portico\requestlog.txt")
            }
                                               );

            var check = new eCheck {
                AccountNumber   = "24413815",
                RoutingNumber   = "490000018",
                AccountType     = AccountType.CHECKING,
                CheckType       = CheckType.PERSONAL,
                EntryMode       = EntryMethod.Manual,
                SecCode         = SecCode.PPD,
                CheckHolderName = "John Doe"
            };

            var address = new Address {
                StreetAddress1 = "123 Main St.",
                City           = "Downtown",
                State          = "NJ",
                PostalCode     = "12345"
            };

            var response = check.Charge(10.00m)
                           .WithCurrency("USD")
                           .WithAddress(address)
                           .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("00", response.ResponseCode);
        }
Exemplo n.º 3
0
        public void Charge_UsingTokenizedACH_ReturnsSuccessfulTransaction()
        {
            var service       = new BillPayService();
            var result        = ach.Tokenize();
            var fee           = service.CalculateConvenienceAmount(ach, bill.Amount);
            var paymentMethod = new eCheck()
            {
                AccountType     = AccountType.CHECKING,
                CheckType       = CheckType.BUSINESS,
                SecCode         = "WEB",
                CheckHolderName = "Tester",
                Token           = result
            };

            Assert.IsFalse(string.IsNullOrWhiteSpace(result));

            RunAndValidateTransaction(() => {
                return(paymentMethod
                       .Charge(bill.Amount)
                       .WithBills(bill)
                       .WithConvenienceAmount(fee)
                       .WithCurrency("USD")
                       .WithAddress(address)
                       .Execute());
            });
        }
Exemplo n.º 4
0
        public void Init()
        {
            ServicesContainer.ConfigureService(new PorticoConfig {
                SecretApiKey = "skapi_cert_MTyMAQBiHVEAewvIzXVFcmUd2UcyBge_eCpaASUp0A"
            });

            check = new eCheck {
                AccountNumber        = "24413815",
                RoutingNumber        = "490000018",
                CheckType            = CheckType.PERSONAL,
                SecCode              = SecCode.PPD,
                AccountType          = AccountType.CHECKING,
                EntryMode            = EntryMethod.Manual,
                CheckHolderName      = "John Doe",
                DriversLicenseNumber = "09876543210",
                DriversLicenseState  = "TX",
                PhoneNumber          = "8003214567",
                BirthYear            = 1997,
                SsnLast4             = "4321"
            };

            address = new Address {
                StreetAddress1 = "123 Main St.",
                City           = "Downtown",
                State          = "NJ",
                PostalCode     = "12345"
            };
        }
Exemplo n.º 5
0
        public NWSCheckTests()
        {
            AcceptorConfig acceptorConfig = new AcceptorConfig
            {
                // data code values
                CardDataInputCapability            = CardDataInputCapability.ContactlessEmv_ContactEmv_MagStripe_KeyEntry,
                CardHolderAuthenticationCapability = CardHolderAuthenticationCapability.PIN,
                CardHolderAuthenticationEntity     = CardHolderAuthenticationEntity.ByMerchant,
                TerminalOutputCapability           = TerminalOutputCapability.Printing_Display,
                OperatingEnvironment = OperatingEnvironment.OnPremises_CardAcceptor_Unattended,

                // hardware software config values
                HardwareLevel = "34",
                SoftwareLevel = "21205710",

                // pos configuration values
                SupportsPartialApproval            = true,
                SupportsShutOffAmount              = true,
                SupportsReturnBalance              = true,
                SupportsDiscoverNetworkReferenceId = true,
                SupportsAvsCnvVoidReferrals        = true,
                SupportsEmvPin = true
            };

            // gateway config

            NetworkGatewayConfig config = new NetworkGatewayConfig(NetworkGatewayType.NWS)
            {
                ServiceUrl        = "test.txns-c.secureexchange.net",
                PrimaryPort       = 15031,
                SecondaryEndpoint = "test.txns-e.secureexchange.net",
                SecondaryPort     = 15031,
                CompanyId         = "SPSA",
                TerminalId        = "NWSDOTNET01",
                //UniqueDeviceId = "0001",
                AcceptorConfig = acceptorConfig,
                EnableLogging  = true,
                StanProvider   = StanGenerator.GetInstance(),
                BatchProvider  = BatchProvider.GetInstance()
            };

            ServicesContainer.ConfigureService(config);

            // with merchant type
            config.MerchantType = "5542";
            ServicesContainer.ConfigureService(config, "ICR");

            address = new Address
            {
                StreetAddress1 = "123 Main St.",
                City           = "Downtown",
                State          = "NJ",
                PostalCode     = "12345"
            };

            //check = new eCheck { AccountNumber = "0273771700", AccountType = AccountType.CHECKING, AchVerify = false };
            check = TestChecks.Certification();
        }
        void RebindGrid(eCheck Check = eCheck.None)
        {
            Int64 Top = 0;

            try { Top = Convert.ToInt64(this.Txt_Top.Text); }
            catch { }

            Int32 Page = 0;

            try { Page = Convert.ToInt32(this.Cbo_Page.SelectedValue); }
            catch { }

            string ViewState_DisplayFilterString = (string)this.ViewState[CnsDisplayFilterString];
            string ViewState_DisplayOrderString  = (string)this.ViewState[CnsDisplayOrderString];

            string ViewState_OrderString = (string)this.ViewState[CnsOrderString];

            QueryCondition Qc = null;

            try { Qc = (QueryCondition)this.ViewState[CnsObj_QueryCondition]; }
            catch { }

            if (Qc == null)
            {
                Qc = new QueryCondition();
            }

            this.Details_SetPaginator(Top, this.List_Count(Qc));

            try
            { this.Cbo_Page.SelectedValue = Page.ToString(); }
            catch
            {
                try
                { Page = Convert.ToInt32(this.Cbo_Page.SelectedValue); }
                catch { }
            }

            DataTable Dt;

            try
            { Dt = this.List(Qc, ViewState_OrderString, Top, Page); }
            catch
            {
                Dt = this.List(Qc, "", Top, Page);
                ViewState_OrderString                 = "";
                ViewState_DisplayOrderString          = "";
                this.ViewState[CnsOrderString]        = ViewState_OrderString;
                this.ViewState[CnsDisplayOrderString] = ViewState_DisplayOrderString;
            }

            this.BindGrid(Dt, Check);
        }
        //[-]

        List <ClsBindGridColumn_EO> BindGrid(
            DataTable Dt_List
            , eCheck Check = eCheck.None)
        {
            DataRow Dr_Bind = Do_Methods_Query.GetSystemBindDefinition(this.mSelectionName);
            List <ClsBindGridColumn_EO> List_Gc = Layer01_Methods_Web_EO.GetBindGridColumn_EO(this.mSelectionName);

            string Bind_TableKey = (string)Do_Methods.IsNull(Dr_Bind["TableKey"], "");

            string TableKey = (string)this.ViewState[CnsQuery_Selection_Key];

            if (TableKey != "")
            {
                Bind_TableKey = TableKey;
            }

            Dt_List.Columns.Add("IsSelect", typeof(bool));
            ClsBindGridColumn_EO Gc =
                new ClsBindGridColumn_EO(
                    "IsSelect"
                    , "Select?"
                    , 80
                    , ""
                    , Layer01_Common.Common.Layer01_Constants.eSystem_Lookup_FieldType.FieldType_Checkbox
                    , this.mIsMultipleSelect);

            List_Gc.Insert(0, Gc);

            if (Check == eCheck.None)
            {
                foreach (DataRow Dr in this.mDt_Selected.Rows)
                {
                    DataRow[] Inner_ArrDr = Dt_List.Select(Bind_TableKey + " = " + Convert.ToInt64(Dr["ID"]).ToString());
                    if (Inner_ArrDr.Length > 0)
                    {
                        Inner_ArrDr[0]["IsSelect"] = Do_Methods.IsNull(Dr["IsSelect"], false);
                    }
                }
            }
            else
            {
                bool Inner_IsSelect = Check == eCheck.CheckAll;
                foreach (DataRow Dr in Dt_List.Rows)
                {
                    Dr["IsSelect"] = Inner_IsSelect;
                }
            }

            this.EOGrid_Selection.FullRowMode = true;
            Layer01_Methods_Web_EO.BindEOGrid(ref this.EOGrid_Selection, Dt_List, List_Gc, Bind_TableKey, false, false);
            return(List_Gc);
        }
Exemplo n.º 8
0
        public CheckServiceTests()
        {
            service = new CheckService(new PorticoConfig {
                SecretApiKey = "skapi_cert_MTyMAQBiHVEAewvIzXVFcmUd2UcyBge_eCpaASUp0A"
            });

            check = TestData.TestChecks.Certification();

            address = new Address {
                StreetAddress1 = "123 Main St.",
                City           = "Downtown",
                State          = "NJ",
                PostalCode     = "12345"
            };
        }
Exemplo n.º 9
0
        public CheckServiceTests()
        {
            service = new CheckService(new GatewayConfig {
                SecretApiKey   = "skapi_cert_MTyMAQBiHVEAewvIzXVFcmUd2UcyBge_eCpaASUp0A",
                ServiceUrl     = "https://cert.api2.heartlandportico.com",
                OpenPathApiKey = "fteaWC5MYeVKdZ2EaQASDDgCtAS4Fh2zrzW4Yyds",
                OpenPathApiUrl = "http://localhost:35808/v1/globalpayments"
            });

            check = TestData.TestChecks.Certification();

            address = new Address {
                StreetAddress1 = "123 Main St.",
                City           = "Downtown",
                State          = "NJ",
                PostalCode     = "12345"
            };
        }
Exemplo n.º 10
0
        public void TestInitialize()
        {
            address = new Address {
                StreetAddress1 = "Apartment 852",
                StreetAddress2 = "Complex 741",
                StreetAddress3 = "no",
                City           = "Chicago",
                PostalCode     = "5001",
                State          = "IL",
                CountryCode    = "US"
            };

            var bankAddress = new Address {
                StreetAddress1 = "12000 Smoketown Rd",
                StreetAddress2 = "Apt 3B",
                StreetAddress3 = "no",
                City           = "Mesa",
                PostalCode     = "22192",
                State          = "AZ",
                CountryCode    = "US"
            };

            eCheck = new eCheck {
                AccountNumber   = "1234567890",
                RoutingNumber   = "122000030",
                AccountType     = AccountType.SAVINGS,
                SecCode         = SecCode.WEB,
                CheckReference  = "123",
                MerchantNotes   = "123",
                BankName        = "First Union",
                CheckHolderName = "Jane Doe",
                BankAddress     = bankAddress
            };

            customer = new Customer {
                Id          = "e193c21a-ce64-4820-b5b6-8f46715de931",
                FirstName   = "James",
                LastName    = "Mason",
                DateOfBirth = "1980-01-01",
                MobilePhone = "+35312345678",
                HomePhone   = "+11234589"
            };
        }
Exemplo n.º 11
0
        /// <summary>
        /// Builds the ACH Account section of the request
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="eCheck"></param>
        /// <param name="amountToCharge"></param>
        /// <param name="feeAmount"></param>
        protected void BuildACHAccount(Element parent, eCheck eCheck, decimal amountToCharge, decimal?feeAmount)
        {
            var achAccounts = et.SubElement(parent, "bdms:ACHAccountsToCharge");
            var achAccount  = et.SubElement(achAccounts, "bdms:ACHAccountToCharge");

            et.SubElement(achAccount, "bdms:Amount", amountToCharge);
            et.SubElement(achAccount, "bdms:ExpectedFeeAmount", feeAmount ?? 0M);
            // PLACEHOLDER: ACHReturnEmailAddress
            et.SubElement(achAccount, "bdms:ACHStandardEntryClass", eCheck.SecCode);
            et.SubElement(achAccount, "bdms:AccountNumber", eCheck.AccountNumber);
            et.SubElement(achAccount, "bdms:AccountType", GetDepositType(eCheck.CheckType.Value));
            et.SubElement(achAccount, "bdms:DepositType", GetACHAccountType(eCheck.AccountType.Value));
            // PLACEHOLDER: DocumentID
            // PLACEHOLDER: InternalAccountNumber
            et.SubElement(achAccount, "bdms:PayorName", eCheck.CheckHolderName);
            et.SubElement(achAccount, "bdms:RoutingNumber", eCheck.RoutingNumber);
            // PLACEHOLDER: SendEmailOnReturn
            // PLACEHOLDER: SubmitDate
            // PLACEHOLDER: TrackingNumber
        }
        public void ecomm_002_BusinessChecking()
        {
            eCheck check = new eCheck {
                RoutingNumber        = "490000018",
                AccountNumber        = "24413815",
                AccountType          = AccountType.CHECKING,
                CheckType            = CheckType.BUSINESS,
                SecCode              = SecCode.WEB,
                DriversLicenseNumber = "09876543210",
                DriversLicenseState  = "NJ",
                CheckHolderName      = "Acme Unlimited",
                PhoneNumber          = "5558675309"
            };

            Transaction response = check.Charge(20m)
                                   .WithCurrency("USD")
                                   .WithAddress(address)
                                   .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("00", response.ResponseCode, response.ResponseMessage);
            Debug.WriteLine("Test 2: " + response.TransactionId);
        }
Exemplo n.º 13
0
        public void CheckReauthorize()
        {
            var eCheckReauth = new eCheck {
                SecCode       = SecCode.PPD,
                AccountNumber = "051904524",
                RoutingNumber = "123456780",
            };

            var amount = 1.29m;

            var response = ReportingService.FindTransactionsPaged(1, 10)
                           .OrderBy(TransactionSortProperty.TimeCreated, SortDirection.Descending)
                           .Where(SearchCriteria.StartDate, DateTime.Now.AddYears(-1))
                           .And(SearchCriteria.EndDate, DateTime.Now.AddDays(-2))
                           .And(SearchCriteria.PaymentType, PaymentType.Sale)
                           .And(SearchCriteria.PaymentMethodName, PaymentMethodName.BankTransfer)
                           .And(DataServiceCriteria.Amount, amount)
                           .Execute();

            Assert.IsNotNull(response);
            Assert.IsNotNull(response.Results);
            var transactionSummary = response.Results.FirstOrDefault();

            Assert.IsNotNull(transactionSummary);
            Assert.AreEqual(amount, transactionSummary.Amount);
            var transaction = new Transaction {
                TransactionId     = transactionSummary.TransactionId,
                PaymentMethodType = PaymentMethodType.ACH
            };

            var resp = transaction.Reauthorize()
                       .WithDescription("Resubmitting " + transaction.ReferenceNumber)
                       .WithBankTransferDetails(eCheckReauth)
                       .Execute();

            assertResponse(resp, TransactionStatus.Captured);
        }
Exemplo n.º 14
0
        public void CheckSaleWithSingleUseToken()
        {
            var check = new eCheck {
                Token                = "supt_bUNE7MtGwN0hdDcElNijZ83A",
                CheckType            = CheckType.PERSONAL,
                SecCode              = SecCode.PPD,
                AccountType          = AccountType.CHECKING,
                EntryMode            = EntryMethod.Manual,
                CheckHolderName      = "John Doe",
                DriversLicenseNumber = "09876543210",
                DriversLicenseState  = "TX",
                PhoneNumber          = "8003214567",
                BirthYear            = 1997,
                SsnLast4             = "4321"
            };

            var response = check.Charge(11m)
                           .WithCurrency("USD")
                           .WithAddress(address)
                           .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("00", response.ResponseCode, response.ResponseMessage);
        }
Exemplo n.º 15
0
 /// <summary>
 /// Set the election check information
 /// </summary>
 /// <remarks>
 /// This value is sent during the authorization process and is displayed
 /// in the consumer's account.
 /// </remarks>
 /// <param name="value">eCheck</param>
 /// <returns>AuthorizationBuilder</returns>
 public ManagementBuilder WithBankTransferDetails(eCheck value)
 {
     BankTransferDetails = value;
     return(this);
 }
        internal static GpApiRequest BuildRequest(AuthorizationBuilder builder, GpApiConnector gateway)
        {
            var merchantUrl   = !string.IsNullOrEmpty(gateway.GpApiConfig.MerchantId) ? $"/merchants/{gateway.GpApiConfig.MerchantId}" : string.Empty;
            var paymentMethod = new JsonDoc()
                                .Set("entry_mode", GetEntryMode(builder, gateway.GpApiConfig.Channel)); // [MOTO, ECOM, IN_APP, CHIP, SWIPE, MANUAL, CONTACTLESS_CHIP, CONTACTLESS_SWIPE]

            paymentMethod.Set("narrative", !string.IsNullOrEmpty(builder.DynamicDescriptor) ? builder.DynamicDescriptor : null);
            if (builder.PaymentMethod is CreditCardData && (builder.TransactionModifier == TransactionModifier.EncryptedMobile || builder.TransactionModifier == TransactionModifier.DecryptedMobile))
            {
                var digitalWallet  = new JsonDoc();
                var creditCardData = (builder.PaymentMethod as CreditCardData);
                //Digital Wallet
                if (builder.TransactionModifier == TransactionModifier.EncryptedMobile)
                {
                    digitalWallet
                    .Set("payment_token", JsonDoc.Parse(creditCardData.Token));
                }
                else if (builder.TransactionModifier == TransactionModifier.DecryptedMobile)
                {
                    var tokenFormat = DigitalWalletTokenFormat.CARD_NUMBER;
                    digitalWallet
                    .Set("token", creditCardData.Token)
                    .Set("token_format", DigitalWalletTokenFormat.CARD_NUMBER)
                    .Set("expiry_month", creditCardData.ExpMonth.HasValue ? creditCardData.ExpMonth.ToString().PadLeft(2, '0') : null)
                    .Set("expiry_year", creditCardData.ExpYear.HasValue ? creditCardData.ExpYear.ToString().PadLeft(4, '0').Substring(2, 2) : null)
                    .Set("cryptogram", creditCardData.Cryptogram)
                    .Set("eci", creditCardData.Eci);
                }
                digitalWallet.Set("provider", (builder.PaymentMethod as CreditCardData).MobileType);
                paymentMethod.Set("digital_wallet", digitalWallet);
            }
            else
            {
                if (builder.PaymentMethod is ICardData)
                {
                    var cardData = builder.PaymentMethod as ICardData;

                    var card = new JsonDoc()
                               .Set("number", cardData.Number)
                               .Set("expiry_month", cardData.ExpMonth.HasValue ? cardData.ExpMonth.ToString().PadLeft(2, '0') : null)
                               .Set("expiry_year", cardData.ExpYear.HasValue ? cardData.ExpYear.ToString().PadLeft(4, '0').Substring(2, 2) : null)
                               //.Set("track", "")
                               .Set("tag", builder.TagData)
                               .Set("cvv", cardData.Cvn)
                               .Set("avs_address", builder.BillingAddress?.StreetAddress1)
                               .Set("avs_postal_code", builder.BillingAddress?.PostalCode)
                               .Set("authcode", builder.OfflineAuthCode)
                               .Set("brand_reference", builder.CardBrandTransactionId);

                    card.Set("chip_condition", EnumConverter.GetMapping(Target.GP_API, builder.EmvChipCondition)); // [PREV_SUCCESS, PREV_FAILED]

                    if (!(builder.TransactionType == TransactionType.Tokenize || builder.TransactionType == TransactionType.Verify))
                    {
                        card.Set("cvv_indicator", cardData.CvnPresenceIndicator != 0 ? EnumConverter.GetMapping(Target.GP_API, cardData.CvnPresenceIndicator) : null); // [ILLEGIBLE, NOT_PRESENT, PRESENT]
                        card.Set("funding", builder.PaymentMethod?.PaymentMethodType == PaymentMethodType.Debit ? "DEBIT" : "CREDIT");                                 // [DEBIT, CREDIT]
                    }

                    var hasToken = builder.PaymentMethod is ITokenizable tokenData && !string.IsNullOrEmpty(tokenData.Token);

                    if (!hasToken)
                    {
                        paymentMethod.Set("card", card);
                    }


                    if (builder.TransactionType == TransactionType.Tokenize)
                    {
                        var tokenizationData = new JsonDoc()
                                               .Set("account_name", gateway.GpApiConfig.AccessTokenInfo.TokenizationAccountName)
                                               .Set("reference", builder.ClientTransactionId ?? Guid.NewGuid().ToString())
                                               .Set("usage_mode", EnumConverter.GetMapping(Target.GP_API, builder.PaymentMethodUsageMode))
                                               .Set("card", card);

                        return(new GpApiRequest {
                            Verb = HttpMethod.Post,
                            Endpoint = $"{merchantUrl}/payment-methods",
                            RequestBody = tokenizationData.ToString(),
                        });
                    }
                    else if (builder.TransactionType == TransactionType.DccRateLookup)
                    {
                        // tokenized payment method
                        if (builder.PaymentMethod is ITokenizable)
                        {
                            string token = ((ITokenizable)builder.PaymentMethod).Token;
                            if (!string.IsNullOrEmpty(token))
                            {
                                paymentMethod.Set("id", token);
                            }
                        }

                        var RequestData = new JsonDoc()
                                          .Set("account_name", gateway.GpApiConfig.AccessTokenInfo.TransactionProcessingAccountName)
                                          .Set("channel", EnumConverter.GetMapping(Target.GP_API, gateway.GpApiConfig.Channel))
                                          .Set("reference", builder.ClientTransactionId ?? Guid.NewGuid().ToString())
                                          .Set("amount", builder.Amount.ToNumericCurrencyString())
                                          .Set("currency", builder.Currency)
                                          .Set("country", gateway.GpApiConfig.Country)
                                          .Set("payment_method", paymentMethod);

                        return(new GpApiRequest
                        {
                            Verb = HttpMethod.Post,
                            Endpoint = $"{merchantUrl}/currency-conversions",
                            RequestBody = RequestData.ToString(),
                        });
                    }
                    else if (builder.TransactionType == TransactionType.Verify)
                    {
                        if (builder.RequestMultiUseToken && string.IsNullOrEmpty((builder.PaymentMethod as ITokenizable).Token))
                        {
                            var tokenizationData = new JsonDoc()
                                                   .Set("account_name", gateway.GpApiConfig.AccessTokenInfo.TokenizationAccountName)
                                                   .Set("reference", builder.ClientTransactionId ?? Guid.NewGuid().ToString())
                                                   .Set("usage_mode", EnumConverter.GetMapping(Target.GP_API, builder.PaymentMethodUsageMode))
                                                   .Set("fingerprint_mode", builder.CustomerData?.DeviceFingerPrint ?? null)
                                                   .Set("card", card);

                            return(new GpApiRequest {
                                Verb = HttpMethod.Post,
                                Endpoint = $"{merchantUrl}/payment-methods",
                                RequestBody = tokenizationData.ToString(),
                            });
                        }
                        else
                        {
                            var verificationData = new JsonDoc()
                                                   .Set("account_name", gateway.GpApiConfig.AccessTokenInfo.TransactionProcessingAccountName)
                                                   .Set("channel", EnumConverter.GetMapping(Target.GP_API, gateway.GpApiConfig.Channel))
                                                   .Set("reference", builder.ClientTransactionId ?? Guid.NewGuid().ToString())
                                                   .Set("currency", builder.Currency)
                                                   .Set("country", gateway.GpApiConfig.Country)
                                                   .Set("payment_method", paymentMethod);

                            if (builder.PaymentMethod is ITokenizable && !string.IsNullOrEmpty((builder.PaymentMethod as ITokenizable).Token))
                            {
                                verificationData.Remove("payment_method");
                                verificationData.Set("payment_method", new JsonDoc()
                                                     .Set("entry_mode", GetEntryMode(builder, gateway.GpApiConfig.Channel))
                                                     .Set("id", (builder.PaymentMethod as ITokenizable).Token)
                                                     .Set("fingerprint_mode", builder.CustomerData?.DeviceFingerPrint ?? null)
                                                     );
                            }

                            return(new GpApiRequest {
                                Verb = HttpMethod.Post,
                                Endpoint = $"{merchantUrl}/verifications",
                                RequestBody = verificationData.ToString(),
                            });
                        }
                    }
                }
                else if (builder.PaymentMethod is ITrackData)
                {
                    var track = builder.PaymentMethod as ITrackData;

                    var card = new JsonDoc()
                               .Set("track", track.Value)
                               .Set("tag", builder.TagData)
                               .Set("avs_address", builder.BillingAddress?.StreetAddress1)
                               .Set("avs_postal_code", builder.BillingAddress?.PostalCode)
                               .Set("authcode", builder.OfflineAuthCode);

                    if (builder.TransactionType == TransactionType.Verify)
                    {
                        paymentMethod.Set("card", card);

                        var verificationData = new JsonDoc()
                                               .Set("account_name", gateway.GpApiConfig.AccessTokenInfo.TransactionProcessingAccountName)
                                               .Set("channel", EnumConverter.GetMapping(Target.GP_API, gateway.GpApiConfig.Channel))
                                               .Set("reference", builder.ClientTransactionId ?? Guid.NewGuid().ToString())
                                               .Set("currency", builder.Currency)
                                               .Set("country", gateway.GpApiConfig.Country)
                                               .Set("payment_method", paymentMethod)
                                               .Set("fingerprint_mode", builder.CustomerData?.DeviceFingerPrint ?? null);

                        return(new GpApiRequest {
                            Verb = HttpMethod.Post,
                            Endpoint = $"{merchantUrl}/verifications",
                            RequestBody = verificationData.ToString(),
                        });
                    }

                    if (builder.TransactionType == TransactionType.Sale || builder.TransactionType == TransactionType.Refund)
                    {
                        if (string.IsNullOrEmpty(track.Value))
                        {
                            card.Set("number", track.Pan);
                            card.Set("expiry_month", track.Expiry?.Substring(2, 2));
                            card.Set("expiry_year", track.Expiry?.Substring(0, 2));
                        }
                        if (string.IsNullOrEmpty(builder.TagData))
                        {
                            card.Set("chip_condition", EnumConverter.GetMapping(Target.GP_API, builder.EmvChipCondition)); // [PREV_SUCCESS, PREV_FAILED]
                        }
                    }

                    if (builder.TransactionType == TransactionType.Sale)
                    {
                        card.Set("funding", builder.PaymentMethod?.PaymentMethodType == PaymentMethodType.Debit ? "DEBIT" : "CREDIT"); // [DEBIT, CREDIT]
                    }

                    paymentMethod.Set("card", card);
                }

                // tokenized payment method
                if (builder.PaymentMethod is ITokenizable)
                {
                    string token = ((ITokenizable)builder.PaymentMethod).Token;
                    if (!string.IsNullOrEmpty(token))
                    {
                        paymentMethod.Set("id", token);
                    }
                }
            }
            // payment method storage mode
            if (builder.RequestMultiUseToken)
            {
                //ToDo: there might be a typo: should be storage_mode
                paymentMethod.Set("storage_mode", "ON_SUCCESS");
            }

            // pin block
            if (builder.PaymentMethod is IPinProtected)
            {
                paymentMethod.Get("card")?.Set("pin_block", ((IPinProtected)builder.PaymentMethod).PinBlock);
            }

            // authentication
            if (builder.PaymentMethod is CreditCardData)
            {
                paymentMethod.Set("name", (builder.PaymentMethod as CreditCardData).CardHolderName);

                var secureEcom = (builder.PaymentMethod as CreditCardData).ThreeDSecure;
                if (secureEcom != null)
                {
                    var authentication = new JsonDoc().Set("id", secureEcom.ServerTransactionId);

                    paymentMethod.Set("authentication", authentication);
                }

                paymentMethod.Set("fingerprint_mode", builder.CustomerData?.DeviceFingerPrint ?? null);
            }

            if (builder.PaymentMethod is EBT)
            {
                paymentMethod.Set("name", (builder.PaymentMethod as EBT).CardHolderName);
            }

            if (builder.PaymentMethod is eCheck)
            {
                eCheck check = (builder.PaymentMethod as eCheck);
                paymentMethod.Set("name", check.CheckHolderName);

                var bankTransfer = new JsonDoc()
                                   .Set("account_number", check.AccountNumber)
                                   .Set("account_type", (check.AccountType != null) ? EnumConverter.GetMapping(Target.GP_API, check.AccountType) : null)
                                   .Set("check_reference", check.CheckReference)
                                   .Set("sec_code", check.SecCode)
                                   .Set("narrative", check.MerchantNotes);

                var bank = new JsonDoc()
                           .Set("code", check.RoutingNumber)
                           .Set("name", check.BankName);

                var address = new JsonDoc()
                              .Set("line_1", check.BankAddress?.StreetAddress1)
                              .Set("line_2", check.BankAddress?.StreetAddress2)
                              .Set("line_3", check.BankAddress?.StreetAddress3)
                              .Set("city", check.BankAddress?.City)
                              .Set("postal_code", check.BankAddress?.PostalCode)
                              .Set("state", check.BankAddress?.State)
                              .Set("country", check.BankAddress?.CountryCode);

                bank.Set("address", address);

                bankTransfer.Set("bank", bank);

                paymentMethod.Set("bank_transfer", bankTransfer);
            }

            if (builder.PaymentMethod is AlternativePaymentMethod)
            {
                var alternatepaymentMethod = (AlternativePaymentMethod)builder.PaymentMethod;

                paymentMethod.Set("name", alternatepaymentMethod.AccountHolderName);

                var apm = new JsonDoc()
                          .Set("provider", alternatepaymentMethod.AlternativePaymentMethodType?.ToString()?.ToLower())
                          .Set("address_override_mode", alternatepaymentMethod.AddressOverrideMode);
                paymentMethod.Set("apm", apm);
            }

            // encryption
            if (builder.PaymentMethod is IEncryptable)
            {
                var encryptionData = ((IEncryptable)builder.PaymentMethod).EncryptionData;

                if (encryptionData != null)
                {
                    var encryption = new JsonDoc()
                                     .Set("version", encryptionData.Version);

                    if (!string.IsNullOrEmpty(encryptionData.KTB))
                    {
                        encryption.Set("method", "KTB");
                        encryption.Set("info", encryptionData.KTB);
                    }
                    else if (!string.IsNullOrEmpty(encryptionData.KSN))
                    {
                        encryption.Set("method", "KSN");
                        encryption.Set("info", encryptionData.KSN);
                    }

                    if (encryption.Has("info"))
                    {
                        paymentMethod.Set("encryption", encryption);
                    }
                }
            }

            if (builder.TransactionType == TransactionType.Create && builder.PayLinkData is PayLinkData)
            {
                var payLinkData = builder.PayLinkData;
                var requestData = new JsonDoc()
                                  .Set("usage_limit", payLinkData.UsageLimit.ToString())
                                  .Set("usage_mode", EnumConverter.GetMapping(Target.GP_API, payLinkData.UsageMode))
                                  .Set("images", payLinkData.Images)
                                  .Set("description", builder.Description ?? null)
                                  .Set("type", payLinkData.Type?.ToString())
                                  .Set("expiration_date", payLinkData.ExpirationDate ?? null);

                var transaction = new JsonDoc()
                                  .Set("country", gateway.GpApiConfig.Country)
                                  .Set("amount", builder.Amount.ToNumericCurrencyString())
                                  .Set("channel", EnumConverter.GetMapping(Target.GP_API, gateway.GpApiConfig.Channel))
                                  .Set("currency", builder.Currency)
                                  .Set("allowed_payment_methods", GetAllowedPaymentMethod(payLinkData.AllowedPaymentMethods));

                requestData.Set("transactions", transaction)
                .Set("reference", builder.ClientTransactionId ?? Guid.NewGuid().ToString())
                .Set("shipping_amount", payLinkData.ShippingAmount.ToNumericCurrencyString())
                .Set("shippable", payLinkData.IsShippable?.ToString() ?? false.ToString())
                .Set("account_name", gateway.GpApiConfig.AccessTokenInfo.TransactionProcessingAccountName)
                .Set("name", payLinkData.Name ?? null);

                var notification = new JsonDoc()
                                   .Set("cancel_url", payLinkData.CancelUrl)
                                   .Set("return_url", payLinkData.ReturnUrl)
                                   .Set("status_url", payLinkData.StatusUpdateUrl);

                requestData.Set("notifications", notification)
                .Set("status", payLinkData.Status.ToString());

                return(new GpApiRequest
                {
                    Verb = HttpMethod.Post,
                    Endpoint = $"{merchantUrl}/links",
                    RequestBody = requestData.ToString(),
                });
            }

            var data = new JsonDoc()
                       .Set("account_name", gateway.GpApiConfig.AccessTokenInfo.TransactionProcessingAccountName)
                       .Set("type", builder.TransactionType == TransactionType.Refund ? "REFUND" : "SALE")   // [SALE, REFUND]
                       .Set("channel", EnumConverter.GetMapping(Target.GP_API, gateway.GpApiConfig.Channel)) // [CP, CNP]
                       .Set("capture_mode", GetCaptureMode(builder))                                         // [AUTO, LATER, MULTIPLE]
                                                                                                             //.Set("remaining_capture_count", "") //Pending Russell
                       .Set("authorization_mode", builder.AllowPartialAuth ? "PARTIAL" : null)
                       .Set("amount", builder.Amount.ToNumericCurrencyString())
                       .Set("currency", builder.Currency)
                       .Set("reference", builder.ClientTransactionId ?? Guid.NewGuid().ToString())
                       .Set("description", builder.Description)
                       //.Set("order_reference", builder.OrderId)
                       .Set("gratuity_amount", builder.Gratuity.ToNumericCurrencyString())
                       .Set("cashback_amount", builder.CashBackAmount.ToNumericCurrencyString())
                       .Set("surcharge_amount", builder.SurchargeAmount.ToNumericCurrencyString())
                       .Set("convenience_amount", builder.ConvenienceAmount.ToNumericCurrencyString())
                       .Set("country", gateway.GpApiConfig.Country)
                       //.Set("language", EnumConverter.GetMapping(Target.GP_API, Language))
                       .Set("ip_address", builder.CustomerIpAddress)
                       //.Set("site_reference", "") //
                       .Set("currency_conversion", !string.IsNullOrEmpty(builder.DccRateData?.DccId) ? new JsonDoc().Set("id", builder.DccRateData.DccId) : null)
                       .Set("payment_method", paymentMethod)
                       .Set("link", !string.IsNullOrEmpty(builder.PaymentLinkId) ? new JsonDoc()
                            .Set("id", builder.PaymentLinkId) : null);

            if (builder.PaymentMethod is eCheck || builder.PaymentMethod is AlternativePaymentMethod)
            {
                data.Set("payer", SetPayerInformation(builder));
            }

            // set order reference
            if (!string.IsNullOrEmpty(builder.OrderId))
            {
                var order = new JsonDoc()
                            .Set("reference", builder.OrderId);

                data.Set("order", order);
            }

            if (builder.PaymentMethod is AlternativePaymentMethod)
            {
                setOrderInformation(builder, ref data);

                var alternatepaymentMethod = (AlternativePaymentMethod)builder.PaymentMethod;

                var notifications = new JsonDoc()
                                    .Set("return_url", alternatepaymentMethod?.ReturnUrl)
                                    .Set("status_url", alternatepaymentMethod?.StatusUpdateUrl)
                                    .Set("cancel_url", alternatepaymentMethod?.CancelUrl);

                data.Set("notifications", notifications);
            }

            // stored credential
            if (builder.StoredCredential != null)
            {
                data.Set("initiator", EnumConverter.GetMapping(Target.GP_API, builder.StoredCredential.Initiator));
                var storedCredential = new JsonDoc()
                                       .Set("model", EnumConverter.GetMapping(Target.GP_API, builder.StoredCredential.Type))
                                       .Set("reason", EnumConverter.GetMapping(Target.GP_API, builder.StoredCredential.Reason))
                                       .Set("sequence", EnumConverter.GetMapping(Target.GP_API, builder.StoredCredential.Sequence));
                data.Set("stored_credential", storedCredential);
            }

            return(new GpApiRequest {
                Verb = HttpMethod.Post,
                Endpoint = $"{merchantUrl}/transactions",
                RequestBody = data.ToString(),
            });
        }
        //[-]
        List<ClsBindGridColumn_EO> BindGrid(
            DataTable Dt_List
            , eCheck Check = eCheck.None)
        {
            DataRow Dr_Bind = Do_Methods_Query.GetSystemBindDefinition(this.mSelectionName);
            List<ClsBindGridColumn_EO> List_Gc = Layer01_Methods_Web_EO.GetBindGridColumn_EO(this.mSelectionName);

            string Bind_TableKey = (string)Do_Methods.IsNull(Dr_Bind["TableKey"], "");

            string TableKey = (string)this.ViewState[CnsQuery_Selection_Key];
            if (TableKey != "")
            { Bind_TableKey = TableKey; }

            Dt_List.Columns.Add("IsSelect", typeof(bool));
            ClsBindGridColumn_EO Gc =
                new ClsBindGridColumn_EO(
                    "IsSelect"
                    , "Select?"
                    , 80
                    , ""
                    , Layer01_Common.Common.Layer01_Constants.eSystem_Lookup_FieldType.FieldType_Checkbox
                    , this.mIsMultipleSelect);
            List_Gc.Insert(0, Gc);

            if (Check == eCheck.None)
            {
                foreach (DataRow Dr in this.mDt_Selected.Rows)
                {
                    DataRow[] Inner_ArrDr = Dt_List.Select(Bind_TableKey + " = " + Convert.ToInt64(Dr["ID"]).ToString());
                    if (Inner_ArrDr.Length > 0)
                    { Inner_ArrDr[0]["IsSelect"] = Do_Methods.IsNull(Dr["IsSelect"], false); }
                }
            }
            else
            {
                bool Inner_IsSelect = Check == eCheck.CheckAll;
                foreach (DataRow Dr in Dt_List.Rows)
                { Dr["IsSelect"] = Inner_IsSelect; }
            }

            this.EOGrid_Selection.FullRowMode = true;
            Layer01_Methods_Web_EO.BindEOGrid(ref this.EOGrid_Selection, Dt_List, List_Gc, Bind_TableKey, false, false);
            return List_Gc;
        }
        void RebindGrid(eCheck Check = eCheck.None)
        {
            Int64 Top = 0;
            try { Top = Convert.ToInt64(this.Txt_Top.Text); }
            catch { }

            Int32 Page = 0;
            try { Page = Convert.ToInt32(this.Cbo_Page.SelectedValue); }
            catch { }

            string ViewState_DisplayFilterString = (string)this.ViewState[CnsDisplayFilterString];
            string ViewState_DisplayOrderString = (string)this.ViewState[CnsDisplayOrderString];

            string ViewState_OrderString = (string)this.ViewState[CnsOrderString];

            QueryCondition Qc = null;
            try { Qc = (QueryCondition)this.ViewState[CnsObj_QueryCondition]; }
            catch { }

            if (Qc == null)
            { Qc = new QueryCondition(); }

            this.Details_SetPaginator(Top, this.List_Count(Qc));

            try
            { this.Cbo_Page.SelectedValue = Page.ToString(); }
            catch
            {
                try
                { Page = Convert.ToInt32(this.Cbo_Page.SelectedValue); }
                catch { }
            }

            DataTable Dt;
            try
            { Dt = this.List(Qc, ViewState_OrderString, Top, Page); }
            catch
            {
                Dt = this.List(Qc, "", Top, Page);
                ViewState_OrderString = "";
                ViewState_DisplayOrderString = "";
                this.ViewState[CnsOrderString] = ViewState_OrderString;
                this.ViewState[CnsDisplayOrderString] = ViewState_DisplayOrderString;
            }

            this.BindGrid(Dt, Check);
        }
Exemplo n.º 19
0
        public void Init()
        {
            ServicesContainer.ConfigureService(new BillPayConfig {
                MerchantName = "IntegrationTesting",
                Username     = "******",
                Password     = "******",
                ServiceUrl   = ServiceEndpoints.BILLPAY_CERTIFICATION
            });

            ServicesContainer.ConfigureService(new BillPayConfig {
                MerchantName = "IntegrationTestingBillUpload",
                Username     = "******",
                Password     = "******",
                ServiceUrl   = ServiceEndpoints.BILLPAY_CERTIFICATION
            }, "billload");

            ach = new eCheck()
            {
                AccountNumber   = "12345",
                RoutingNumber   = "064000017",
                AccountType     = AccountType.CHECKING,
                CheckType       = CheckType.BUSINESS,
                SecCode         = "WEB",
                CheckHolderName = "Tester",
                BankName        = "Regions"
            };

            clearTextCredit = new CreditCardData()
            {
                Number         = "4444444444444448",
                ExpMonth       = DateTime.Now.Month,
                ExpYear        = DateTime.Now.Year,
                Cvn            = "123",
                CardHolderName = "Test Tester"
            };

            address = new Address()
            {
                StreetAddress1 = "1234 Test St",
                StreetAddress2 = "Apt 201",
                City           = "Auburn",
                State          = "AL",
                Country        = "US",
                PostalCode     = "12345"
            };

            customer = new Customer()
            {
                Address   = address,
                Email     = "*****@*****.**",
                FirstName = "Test",
                LastName  = "Tester",
                HomePhone = "555-555-4444",
            };

            bill = new Bill()
            {
                Amount      = 50M,
                Identifier1 = "12345"
            };

            bills = new Bill[] {
                new Bill()
                {
                    BillType    = "Tax Payments",
                    Identifier1 = "123",
                    Amount      = 10M
                },
                new Bill()
                {
                    BillType    = "Tax Payments",
                    Identifier1 = "321",
                    Amount      = 10M
                }
            };

            billLoad = new Bill()
            {
                Amount          = 50M,
                BillType        = "Tax Payments",
                Identifier1     = "12345",
                Identifier2     = "23456",
                BillPresentment = BillPresentment.Full,
                DueDate         = DateTime.Now.AddDays(3),
                Customer        = customer
            };

            blindBill = new Bill()
            {
                Amount          = 50M,
                BillType        = "Tax Payments",
                Identifier1     = "12345",
                Identifier2     = "23456",
                BillPresentment = BillPresentment.Full,
                DueDate         = DateTime.Now.AddDays(1),
                Customer        = customer
            };
        }
Exemplo n.º 20
0
        public void Init()
        {
            ServicesContainer.ConfigureService(new GatewayConfig {
                SecretApiKey = "skapi_cert_MTYcAgCxWWEAp8AlBkChNfvTSWWkjf-nkAw2cdoijg",
                ServiceUrl   = "https://cert.api2.heartlandportico.com",
                // OpenPathApiKey = "fteaWC5MYeVKdZ2EaQASDDgCtAS4Fh2zrzW4Yyds",
                OpenPathApiUrl = "http://localhost:35808/v1/globalpayments"
            });

            activateCard1 = new eCheck
            {
                CheckHolderName = "First Last",
                RoutingNumber   = "122000030",
                AccountNumber   = "1357902468",
                EntryMode       = EntryMethod.Manual,
                SecCode         = "WEB",
                AccountType     = AccountType.CHECKING,
                CheckType       = CheckType.PERSONAL,
            };

            activateCard2 = new eCheck
            {
                CheckHolderName = "First Last",
                RoutingNumber   = "122000030",
                AccountNumber   = "1357902468",
                EntryMode       = EntryMethod.Manual,
                SecCode         = "WEB",
                AccountType     = AccountType.SAVINGS,
                CheckType       = CheckType.PERSONAL,
            };


            activateCard3 = new eCheck
            {
                CheckHolderName = "First Last",
                RoutingNumber   = "122000030",
                AccountNumber   = "1357902468",
                EntryMode       = EntryMethod.Manual,
                SecCode         = "WEB",
                AccountType     = AccountType.SAVINGS,
                CheckType       = CheckType.BUSINESS,
                CheckName       = "First Last"
            };

            check = new eCheck {
                AccountNumber        = "24413815",
                RoutingNumber        = "490000018",
                CheckType            = CheckType.PERSONAL,
                SecCode              = SecCode.PPD,
                AccountType          = AccountType.CHECKING,
                EntryMode            = EntryMethod.Manual,
                CheckHolderName      = "John Doe",
                DriversLicenseNumber = "09876543210",
                DriversLicenseState  = "TX",
                PhoneNumber          = "8003214567",
                BirthYear            = 1997,
                SsnLast4             = "4321",
                CheckName            = ""
            };

            address = new Address {
                StreetAddress1 = "123 Main St.",
                City           = "Downtown",
                State          = "NJ",
                PostalCode     = "12345"
            };
        }
        void EOCb_Search_Execute(object sender, EO.Web.CallbackEventArgs e)
        {
            eCheck Check = eCheck.None;

            if (e.Parameter == this.Btn_NewSearch.ID)
            {
                this.Selection_ClearFilters();
                this.Selection_AddFilter();
            }
            else if (e.Parameter == this.Btn_AddSearch.ID)
            {
                this.Selection_AddFilter();
            }
            else if (e.Parameter == this.Btn_SortAsc.ID)
            {
                this.Selection_AddSort(true);
            }
            else if (e.Parameter == this.Btn_SortDesc.ID)
            {
                this.Selection_AddSort(false);
            }
            else if (e.Parameter == this.Btn_Clear.ID)
            {
                this.Selection_ClearFilters();
            }
            else if (e.Parameter == this.Btn_CheckAll.ID)
            {
                Check = eCheck.CheckAll;
            }
            else if (e.Parameter == this.Btn_UncheckAll.ID)
            {
                Check = eCheck.UncheckAll;
            }

            if (Check == eCheck.None)
            {
                this.PostGrid_Selected();
            }

            this.RebindGrid(Check);

            string ViewState_DisplayFilterString = (string)this.ViewState[CnsDisplayFilterString];
            string ViewState_DisplayOrderString  = (string)this.ViewState[CnsDisplayOrderString];

            string Desc_Count  = "";
            string Desc_Filter = "";
            string Desc_Sort   = "";

            Desc_Count = this.Details_ItemsCount() + @"<br /><br />";

            if (ViewState_DisplayFilterString != "")
            {
                Desc_Filter = "Filtered By: " + ViewState_DisplayFilterString + @"<br /><br />";
            }

            if (ViewState_DisplayOrderString != "")
            {
                Desc_Sort = "Sorted By: " + ViewState_DisplayOrderString + @"<br /><br />";
            }

            this.Lbl_AppliedFilters.Text = Desc_Count + Desc_Filter + Desc_Sort;

            try
            {
                this.EOCbp_EOGrid_Selection.Update();
                this.EOCbp_Applied.Update();
                this.EOCb_Cbo_Page.Update();
            }
            catch { }
        }