Ejemplo n.º 1
0
 public AchSaleRequest(string id, string key, string originatorId, Ach ach, decimal amount)
     : base(id, key, "VIRTUAL_CHECK_PPD_SALE")
 {
     Data["C_ORIGINATOR_ID"] = originatorId;
     ach.SetAchData(Data);
     Data["T_AMT"] = amount.ToString("n2");
 }
Ejemplo n.º 2
0
 public AchCharge(bool isTesting, string apiKey, string ach_id, Ach ach,
                  Payer payer, decimal amt, string tranId, string tranDesc, string peopleId)
     : base(isTesting, apiKey, ach_id, paymentTypeAch, amt, tranId, tranId, payer)
 {
     Data["params[0][ach_acct_num]"]    = ach.AchAccNum;
     Data["params[0][ach_routing_num]"] = ach.AchRoutingNum;
 }
Ejemplo n.º 3
0
 public AchSaleRequest(string userName, string password, Ach ach, decimal amount)
     : base(userName, password)
 {
     Data["type"]    = "sale";
     Data["payment"] = "check";
     ach.SetAchData(Data);
     Data["amount"] = amount.ToString("0.00");
 }
 public CreateAchVaultRequest(string userName, string password, Ach ach)
     : base(userName, password)
 {
     Data["customer_vault"] = "add_customer";
     Data["method"]         = "check";
     Data["sec_code"]       = "WEB";
     ach.SetAchData(Data);
 }
Ejemplo n.º 5
0
        public async Task <Ach> UpdateAchAccountAsync(Ach account)
        {
            var result = await accountService.UpdateAchAccountAsync(account);

            if (result != null)
            {
                DumpObject("UpdateAchAccountAsync", result);
            }

            return(result);
        }
Ejemplo n.º 6
0
        public TransactionResponse PayWithCheck(int peopleId, decimal amt, string routing, string acct,
                                                string description, int tranid, string email, string first, string middle, string last, string suffix,
                                                string addr, string addr2, string city, string state, string country, string zip, string phone)
        {
            var type = AchType(peopleId);
            var ach  = new Ach
            {
                NameOnAccount  = $"{first} {last}",
                AccountNumber  = acct,
                RoutingNumber  = routing,
                Type           = type,
                BillingAddress = new BillingAddress
                {
                    FirstName = first,
                    LastName  = last,
                    Address1  = addr,
                    Address2  = addr2,
                    City      = city,
                    State     = state,
                    Country   = country,
                    Zip       = zip,
                    Email     = email,
                    Phone     = phone
                }
            };
            var achSaleRequest = new AchSaleRequest(
                _userName,
                _password,
                ach,
                amt,
                tranid.ToString(CultureInfo.InvariantCulture),
                description,
                peopleId.ToString(CultureInfo.InvariantCulture));

            var response = achSaleRequest.Execute();

            if (type == "savings")
            {
                var s = JsonConvert.SerializeObject(ach, Formatting.Indented).Replace("\r\n", "\n");
                var c = db.Content("AchSavingsLog", "-", ContentTypeCode.TypeText);
                c.Body = $"--------------------------\n{DateTime.Now:g}\ntranid={response.TransactionId}\n\n{s}\n{c.Body}";
                db.SubmitChanges();
            }

            return(new TransactionResponse
            {
                Approved = response.ResponseStatus == ResponseStatus.Approved,
                AuthCode = response.AuthCode,
                Message = response.ResponseText,
                TransactionId = response.TransactionId
            });
        }
Ejemplo n.º 7
0
        public void AccountNumber_Is_One_Digit_Generates_Error()
        {
            // Arrange
            var validator = new AchValidator();
            var account   = new Ach {
                AccountNumber = "1"
            };

            // Act
            var result = validator.Validate(account);

            // Assert
            Assert.True(result.Errors.Any(e => e.ErrorMessage == "AccountNumber must be numeric string and must be between 4 and 100 digits"));
        }
Ejemplo n.º 8
0
        public void RoutingNumber_Has_Alpha_Generates_Error()
        {
            // Arrange
            var validator = new AchValidator();
            var account   = new Ach {
                RoutingNumber = "12345678A"
            };

            // Act
            var result = validator.Validate(account);

            // Assert
            Assert.True(result.Errors.Any(e => e.ErrorMessage == "RoutingNumber must be a 9 digit number"));
        }
Ejemplo n.º 9
0
        public void BankName_Is_Empty_Generates_Error()
        {
            // Arrange
            var validator = new AchValidator();
            var account   = new Ach {
                BankName = ""
            };

            // Act
            var result = validator.Validate(account);

            // Assert
            Assert.True(result.Errors.Any(e => e.ErrorMessage == "BankName is required"));
        }
Ejemplo n.º 10
0
        public void BankName_Is_100_Characters_Is_Valid()
        {
            // Arrange
            var validator = new AchValidator();
            var account   = new Ach {
                BankName = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
            };

            // Act
            var result = validator.Validate(account);

            // Assert
            Assert.False(result.Errors.Any(e => e.ErrorMessage == "BankName cannot exceed 100 characters"));
        }
Ejemplo n.º 11
0
        public void RoutingNumber_Has_9_Digits_Is_Valid()
        {
            // Arrange
            var validator = new AchValidator();
            var account   = new Ach {
                RoutingNumber = "123456789"
            };

            // Act
            var result = validator.Validate(account);

            // Assert
            Assert.False(result.Errors.Any(e => e.ErrorMessage == "RoutingNumber must be a 9 digit number"));
        }
Ejemplo n.º 12
0
        public void AccountNumber_Ninety_Four_Asterisk_Four_Numbers_Is_Valid()
        {
            // Arrange
            var validator = new AchValidator();
            var account   = new Ach {
                AccountNumber = "************************************************************************************************1111"
            };

            // Act
            var result = validator.Validate(account);

            // Assert
            Assert.False(result.Errors.Any(e => e.ErrorMessage == "AccountNumber must be numeric string and must be between 4 and 100 digits"));
        }
        public async Task CreateAchAccountAsync_Verify_ValidationService_Validate()
        {
            // Arrange
            webServiceRequest.Setup(m => m.PostDeserializedAsync <Ach, Result <Ach> >(It.IsAny <Uri>(), It.IsAny <Ach>())).ReturnsAsync(new Result <Ach> {
                Response = new Ach()
            });
            var ach = new Ach();

            // Act
            await service.CreateAchAccountAsync(ach);

            // Assert
            validationService.Verify(m => m.Validate(It.IsAny <Ach>()));
        }
        public async Task UpdateAchAccountAsync_Verify_WebServiceRequest_PutDeserializedAsync()
        {
            // Arrange
            webServiceRequest.Setup(m => m.PutDeserializedAsync <Ach, Result <Ach> >(It.IsAny <Uri>(), It.IsAny <Ach>())).ReturnsAsync(new Result <Ach> {
                Response = new Ach()
            });
            var ach = new Ach();

            // Act
            await service.UpdateAchAccountAsync(ach);

            // Assert
            webServiceRequest.Verify(m => m.PutDeserializedAsync <Ach, Result <Ach> >(It.IsAny <Uri>(), It.IsAny <Ach>()));
        }
        public async Task CreateAchAccountAsync_Uses_Correct_Endpoint()
        {
            // Arrange
            var ach      = new Ach();
            Uri endpoint = null;

            webServiceRequest.Setup(m => m.PostDeserializedAsync <Ach, Result <Ach> >(It.IsAny <Uri>(), It.IsAny <Ach>()))
            .Callback((Uri a, Ach b) => endpoint = a)
            .ReturnsAsync(new Result <Ach>());

            // Act
            await service.CreateAchAccountAsync(ach);

            // Assert
            Assert.Equal(string.Format("{0}/v4/account/ach", settings.BaseUrl), endpoint.AbsoluteUri);
        }
Ejemplo n.º 16
0
 public AchSaleRequest(string userName, string password, Ach ach, decimal amount, string orderId, string orderDescription)
     : this(userName, password, ach, amount, orderId)
 {
     Data["orderdescription"] = orderDescription;
 }
Ejemplo n.º 17
0
        public StorePayerRequest(bool isTesting, string apiKey, Payer payer, CreditCard creditCard, Ach ach)
            : base(isTesting, apiKey, action)
        {
            string expMonth = string.IsNullOrEmpty(creditCard.CardExpiration) ? string.Empty : creditCard.CardExpiration.Substring(0, 2);
            string expYear  = string.IsNullOrEmpty(creditCard.CardExpiration) ? string.Empty : creditCard.CardExpiration.Substring(2, 2);

            Data["params[0][payer_email]"]     = payer.Email;
            Data["params[0][payer_fname]"]     = payer.FirstName;
            Data["params[0][payer_lname]"]     = payer.LastName;
            Data["params[0][payer_address]"]   = payer.Address;
            Data["params[0][payer_address2]"]  = payer.Address2;
            Data["params[0][payer_city]"]      = payer.City;
            Data["params[0][payer_state]"]     = payer.State;
            Data["params[0][payer_country]"]   = payer.Country;
            Data["params[0][payer_zip]"]       = payer.Zip;
            Data["params[0][payer_phone]"]     = payer.Phone;
            Data["params[0][cc_num]"]          = creditCard.CardNum;
            Data["params[0][cc_exp_mo]"]       = expMonth;
            Data["params[0][cc_exp_yr]"]       = expYear;
            Data["params[0][ach_acct_num]"]    = ach.AchAccNum;
            Data["params[0][ach_routing_num]"] = ach.AchRoutingNum;
        }
Ejemplo n.º 18
0
        public async Task <AccountList> AccountCertification(int customerId)
        {
            var accounts = new AccountList();

            try
            {
                // Create an ACH account
                var ach = new Ach
                {
                    CustomerId    = customerId,
                    RoutingNumber = "307075259",
                    AccountNumber = "751111111",
                    BankName      = "PaySimple Bank"
                };

                var createAchResult = await CreateAchAccountAsync(ach);

                // Add for payments certification
                accounts.AchAccounts = new List <Ach> {
                    createAchResult
                };

                // Sample Error: Attempt to create the same ACH account
                var recreateAchResult = await CreateAchAccountAsync(ach);
            }
            catch (PaySimpleException ex)
            {
                DumpObject("PaySimpleException", ex.ValidationErrors);
            }
            catch (PaySimpleEndpointException ex)
            {
                // 400 Bad Request - Account Already Exists
                DumpObject("PaySimpleEndpointException", ex.EndpointErrors);
            }

            try
            {
                // Create an CreditCard account
                var creditCard = new CreditCard
                {
                    CustomerId       = customerId,
                    CreditCardNumber = "371449635398456",
                    ExpirationDate   = "12/2021",
                    Issuer           = Issuer.Amex
                };

                var createCCResult = await CreateCreditCardAccountAsync(creditCard);

                // Add for payments certification
                accounts.CreditCardAccounts = new List <CreditCard> {
                    createCCResult
                };

                var invalidCreditCard = new CreditCard
                {
                    CustomerId       = customerId,
                    CreditCardNumber = "1111111111111111",
                    ExpirationDate   = "12/2021",
                    Issuer           = Issuer.Amex
                };

                // Sample Error: Attempt to create the same CreditCard account
                var invalidCCResult = await CreateCreditCardAccountAsync(invalidCreditCard);
            }
            catch (PaySimpleException ex)
            {
                DumpObject("PaySimpleException", ex.ValidationErrors);
            }
            catch (PaySimpleEndpointException ex)
            {
                // 400 Bad Request - Account Already Exists
                DumpObject("PaySimpleEndpointException", ex.EndpointErrors);
            }

            return(accounts);
        }
Ejemplo n.º 19
0
        // This method is intended to run all immediately available operations
        // (e.g. operations that can run without waiting for long running system
        // actions like the ability to Refund a Settled payment).
        // WILL YOUR PAYMENT SURVIVE?
        public async Task RunTheGauntlet()
        {
            var warrior = new Customer
            {
                FirstName = "Red",
                LastName  = "Warrior",
                Email     = "*****@*****.**"
            };

            var valkyrie = new Customer
            {
                FirstName = "Blue",
                LastName  = "Valkyrie",
                Email     = "*****@*****.**"
            };

            var wizard = new Customer
            {
                FirstName = "Yellow",
                LastName  = "Wizard",
                Email     = "*****@*****.**"
            };

            var elf = new Customer
            {
                FirstName = "Green",
                LastName  = "Elf",
                Email     = "*****@*****.**"
            };

            // Create Customer
            warrior = await CreateCustomerAsync(warrior);

            valkyrie = await CreateCustomerAsync(valkyrie);

            wizard = await CreateCustomerAsync(wizard);

            elf = await CreateCustomerAsync(elf);

            if (warrior == null || valkyrie == null || wizard == null || elf == null)
            {
                Console.WriteLine("Failed to create customer");
                return;
            }

            // Update Customer
            warrior.Website = "http://www.gauntlet.com";
            warrior.ShippingSameAsBilling = true;
            warrior = await UpdateCustomerAsync(warrior);

            if (warrior.Website != "http://www.gauntlet.com")
            {
                Console.WriteLine("Failed to update customer");
                return;
            }

            // Get Customer
            var getCustomer = await GetCustomerAsync(warrior.Id);

            if (getCustomer == null)
            {
                Console.WriteLine("Failed to get customer");
                return;
            }

            // Get Customers
            var customers = await GetCustomersAsync();

            if (customers == null || customers.Items == null)
            {
                Console.WriteLine("Failed to get customers");
                return;
            }

            // Create ACH Account
            var ach = new Ach
            {
                CustomerId    = warrior.Id,
                RoutingNumber = "131111114",
                AccountNumber = "751111111",
                BankName      = "PaySimple Bank"
            };

            ach = await CreateAchAccountAsync(ach);

            if (ach == null)
            {
                Console.WriteLine("Failed to create ACH account");
                return;
            }

            // Create Credit Card Account
            var visa = new CreditCard
            {
                CustomerId       = warrior.Id,
                CreditCardNumber = "4111111111111111",
                ExpirationDate   = "12/2021",
                Issuer           = Issuer.Visa,
                BillingZipCode   = "11111"
            };

            visa = await CreateCreditCardAccountAsync(visa);

            if (visa == null)
            {
                Console.WriteLine("Failed to create Credit Card account");
                return;
            }

            // Update Ach Account
            ach.AccountNumber     = "751111111";
            ach.IsCheckingAccount = true;
            ach = await UpdateAchAccountAsync(ach);

            if (ach == null)
            {
                Console.WriteLine("Failed to update ACH account");
                return;
            }

            // Update Credit Card Account
            visa.CreditCardNumber = "4111111111111111";
            visa.ExpirationDate   = "12/2022";
            visa = await UpdateCreditCardAccountAsync(visa);

            if (visa == null)
            {
                Console.WriteLine("Failed to update Credit Card account");
                return;
            }

            // Get Ach Account
            ach = await GetAchAccountAsync(ach.Id);

            if (ach == null)
            {
                Console.WriteLine("Failed to get ACH account");
                return;
            }

            // Get Credit Card Account
            visa = await GetCreditCardAccountAsync(visa.Id);

            if (visa == null)
            {
                Console.WriteLine("Failed to get Credit Card account");
                return;
            }

            // Get All Customer Accounts
            var customerAccounts = await GetAllAccountsAsync(warrior.Id);

            if (customerAccounts == null)
            {
                Console.WriteLine("Failed to get customer accounts");
                return;
            }

            // Get Customer Ach Accounts
            var achAccounts = await GetAchAccountsAsync(warrior.Id);

            if (achAccounts == null)
            {
                Console.WriteLine("Failed to get customer ACH accounts");
                return;
            }

            // Get Customer Credit Card Accounts
            var creditCardAccounts = await GetAchAccountsAsync(warrior.Id);

            if (creditCardAccounts == null)
            {
                Console.WriteLine("Failed to get customer Credit Card accounts");
                return;
            }

            // Get Customer Default Ach Account
            var defaultAchAccount = await GetDefaultAchAccountAsync(warrior.Id);

            if (defaultAchAccount == null)
            {
                Console.WriteLine("Failed to get customer default ACH account");
                return;
            }

            // Get Customer Default Credit Card Account
            var defaultCreditCardAccount = await GetDefaultCreditCardAccountAsync(warrior.Id);

            if (defaultCreditCardAccount == null)
            {
                Console.WriteLine("Failed to get customer default Credit Card account");
                return;
            }

            // Set Customer Default Account
            await SetDefaultAccountAsync(warrior.Id, visa.Id);

            // Create Payments
            var achPayment = new Payment
            {
                AccountId = ach.Id,
                Amount    = 5.00M
            };

            achPayment = await CreatePaymentAsync(achPayment);

            if (achPayment == null)
            {
                Console.WriteLine("Failed to create ACH payment");
                return;
            }

            var creditCardPayment = new Payment
            {
                AccountId = visa.Id,
                Amount    = 5.00M,
                Cvv       = "995",
            };

            creditCardPayment = await CreatePaymentAsync(creditCardPayment);

            if (creditCardPayment == null)
            {
                Console.WriteLine("Failed to create Credit Card payment");
                return;
            }

            // Get Payment
            creditCardPayment = await GetPaymentAsync(creditCardPayment.Id.Value);

            if (creditCardPayment == null)
            {
                Console.WriteLine("Failed to get Credit Card payment");
                return;
            }

            // Get Payments
            var allPayments = await GetPaymentsAsync();

            if (allPayments == null)
            {
                Console.WriteLine("Failed to get all payments");
                return;
            }

            // Get Customer Payments
            var payments = await GetPaymentsAsync(warrior.Id);

            if (payments == null)
            {
                Console.WriteLine("Failed to get customer payments");
                return;
            }

            // Create Payment Plan
            var paymentPlan = new PaymentPlan
            {
                AccountId              = visa.Id,
                TotalDueAmount         = 100.00M,
                TotalNumberOfPayments  = 5,
                StartDate              = DateTime.Now.AddDays(1),
                ExecutionFrequencyType = ExecutionFrequencyType.FirstOfMonth
            };

            paymentPlan = await CreatePaymentPlanAsync(paymentPlan);

            if (paymentPlan == null)
            {
                Console.WriteLine("Failed to create payment plan");
                return;
            }

            // Create Recurring Payment
            var recurringPayment = new RecurringPayment
            {
                AccountId              = visa.Id,
                PaymentAmount          = 10.00M,
                StartDate              = DateTime.Now.AddDays(1),
                ExecutionFrequencyType = ExecutionFrequencyType.FirstOfMonth,
            };

            recurringPayment = await CreateRecurringPaymentAsync(recurringPayment);

            if (recurringPayment == null)
            {
                Console.WriteLine("Failed to create recurring payment");
                return;
            }

            // Update Recurring Payment
            var updateRecurringPayment = new RecurringPayment
            {
                Id                     = recurringPayment.Id,
                AccountId              = visa.Id,
                PaymentAmount          = 100.00M,
                StartDate              = DateTime.Now.AddDays(1),
                ExecutionFrequencyType = ExecutionFrequencyType.FirstOfMonth
            };

            updateRecurringPayment = await UpdateRecurringPaymentAsync(updateRecurringPayment);

            if (updateRecurringPayment == null)
            {
                Console.WriteLine("Failed to update recurring payment");
                return;
            }

            // Get Recurring Schedule
            recurringPayment = await GetRecurringScheduleAsync(recurringPayment.Id);

            if (recurringPayment == null)
            {
                Console.WriteLine("Failed to get recurring schedule");
                return;
            }

            // Get Customer Payment Plans
            var paymentPlans = await GetPaymentPlansAsync(warrior.Id);

            if (paymentPlans == null)
            {
                Console.WriteLine("Failed to get customer payment plans");
                return;
            }

            // Get Customer Payment Schedules
            var paymentSchedules = await GetPaymentSchedulesAsync(warrior.Id);

            if (paymentSchedules == null)
            {
                Console.WriteLine("Failed to get customer payment schedules");
                return;
            }

            // Get Customer Recurring Payment Schedules
            var recurringPaymentSchedules = await GetRecurringPaymentSchedulesAsync(warrior.Id);

            if (recurringPaymentSchedules == null)
            {
                Console.WriteLine("Failed to get customer recurring payment schedules");
                return;
            }

            // Get All Payment Plan Schedules
            var allPaymentSchedules = await GetAllPaymentSchedulesAsync();

            if (allPaymentSchedules == null)
            {
                Console.WriteLine("Failed to get all payment schedules");
                return;
            }

            // Get Payment Plan Payments
            var paymentPlanPayments = await GetPaymentPlanPaymentsAsync(paymentPlan.Id);

            if (paymentPlanPayments == null)
            {
                Console.WriteLine("Failed to get payment plan payments");
                return;
            }

            // Get Payment Plan Schedule
            paymentPlan = await GetPaymentPlanScheduleAsync(paymentPlan.Id);

            if (paymentPlan == null)
            {
                Console.WriteLine("Failed to get payment plan schedule");
                return;
            }

            // Get Recurring Payments
            var recurringPayments = await GetRecurringPaymentsAsync(recurringPayment.Id);

            if (recurringPayments == null)
            {
                Console.WriteLine("Failed to get recurring payments");
                return;
            }

            // Pause Payment Plan
            await PausePaymentPlanAsync(paymentPlan.Id, DateTime.Now.AddDays(1));

            // Pause Recurring Payment
            await PauseRecurringPaymentAsync(recurringPayment.Id, DateTime.Now.AddDays(1));

            // Resume Payment Plan
            await ResumePaymentPlanAsync(paymentPlan.Id);

            // Resume Recurring Payment
            await ResumeRecurringPaymentAsync(recurringPayment.Id);

            // Suspend Payment Plan
            await SuspendPaymentPlanAsync(paymentPlan.Id);

            // Suspend Recurring Payment
            await SuspendRecurringPaymentAsync(recurringPayment.Id);

            // Void Payments
            var voidAchPayment = await VoidPaymentAsync(achPayment.Id.Value);

            if (voidAchPayment == null)
            {
                Console.WriteLine("Failed to void ACH payment");
                return;
            }

            var voidCreditCardPayment = await VoidPaymentAsync(creditCardPayment.Id.Value);

            if (voidCreditCardPayment == null)
            {
                Console.WriteLine("Failed to void Credit Card payment");
                return;
            }

            // Delete Payment Plans
            await DeletePaymentPlanAsync(paymentPlan.Id);

            // Delete Recurring Payments
            await DeleteRecurringPaymentAsync(recurringPayment.Id);

            // Delete Accounts
            await DeleteAchAccountAsync(ach.Id);
            await DeleteCreditCardAccountAsync(visa.Id);

            // Delete Customers
            await DeleteCustomerAsync(warrior.Id);
            await DeleteCustomerAsync(valkyrie.Id);
            await DeleteCustomerAsync(wizard.Id);
            await DeleteCustomerAsync(elf.Id);
        }
Ejemplo n.º 20
0
 public StoreNewPayer(bool isTesting, string apiKey, Payer payer, string peopleId, CreditCard creditCard, Ach ach)
     : base(isTesting, apiKey, payer, creditCard, ach)
 {
     Data["params[0][client_payer_id]"] = peopleId;
 }
Ejemplo n.º 21
0
 public StorePayer(bool isTesting, string apiKey, Payer payer, string acceptivaPayerId, CreditCard creditCard, Ach ach)
     : base(isTesting, apiKey, payer, creditCard, ach)
 {
     Data["params[0][payer_id_str]"] = acceptivaPayerId;
 }
Ejemplo n.º 22
0
 public AchSaleRequest(string id, string key, string originatorId, Ach ach, decimal amount, string orderNumber)
     : this(id, key, originatorId, ach, amount)
 {
     Data["T_ORDERNUM"] = orderNumber;
 }
Ejemplo n.º 23
0
 public AchSaleRequest(string userName, string password, Ach ach, decimal amount, string orderId)
     : this(userName, password, ach, amount)
 {
     Data["orderid"] = orderId;
 }
Ejemplo n.º 24
0
 public UpdateAchVaultRequest(string userName, string password, string vaultId, Ach ach)
     : this(userName, password, vaultId)
 {
     ach.SetAchData(Data);
 }
Ejemplo n.º 25
0
 public AchSaleRequest(string userName, string password, Ach ach, decimal amount, string orderId, string orderDescription, string poNumber)
     : this(userName, password, ach, amount, orderId, orderDescription)
 {
     Data["ponumber"] = poNumber;
 }