コード例 #1
0
        public SetAccountCheckingRequest(BankAccount account)
        {
            NameOnAccount     = account.NameOnAccount;
            BankName          = account.BankName;
            BankAccountNumber = account.AccountNumber;
            BankRoutingNumber = account.RoutingNumber;
            BankAccountType   = ExigoWebService.BankAccountType.CheckingPersonal;

            BillingAddress = account.BillingAddress.AddressDisplay;
            BillingCity    = account.BillingAddress.City;
            BillingState   = account.BillingAddress.State;
            BillingZip     = account.BillingAddress.Zip;
            BillingCountry = account.BillingAddress.Country;
        }
コード例 #2
0
 public DebitBankAccountOnFileRequest(BankAccount account)
 {
 }
コード例 #3
0
        public ActionResult SaveBankAccount(BankAccount account)
        {
            account = Exigo.SetCustomerBankAccount(Identity.Customer.CustomerID, account);

            return RedirectToAction("PaymentMethodList");
        }
コード例 #4
0
        public ActionResult AddBankAccount()
        {
            var model = new BankAccount();
            model.Type = ExigoService.BankAccountType.New;
            model.BillingAddress = new Address()
            {
                Country = GlobalSettings.Company.Address.Country
            };

            return View("ManageBankAccount", model);
        }
コード例 #5
0
        // Direct Deposit
        public static BankAccount GetDirectDeposit(int customerID)
        {
            var account = new BankAccount();

            try
            {
                var context = Exigo.WebService();

                var result = context.GetAccountDirectDeposit(new GetAccountDirectDepositRequest
                {
                    CustomerID = customerID
                });

                if (result.Result.Status == ResultStatus.Success)
                {
                    account.AccountNumber = result.BankAccountNumberDisplay;
                    account.NameOnAccount = result.NameOnAccount;
                    account.BankName = result.BankName;
                    account.RoutingNumber = result.BankRoutingNumber;

                    account.BillingAddress.Address1 = result.BankAddress;
                    account.BillingAddress.City = result.BankCity;
                    account.BillingAddress.State = result.BankState;
                    account.BillingAddress.Country = result.BankCountry;
                    account.BillingAddress.Zip = result.BankZip;
                }
                // We are seperating out swiftCode/Iban so in order to keep everything else the same we are simply pulling back the account routing number, and account number and setting them to their proper fields.

                if (account.AccountNumber.IsNullOrEmpty())
                {
                    account.AccountNumber = result.Iban;
                    account.RoutingNumber = result.SwiftCode;
                }
            }
            catch
            {

            }

            return account;
        }
コード例 #6
0
        public static bool SetDirectDeposit(int customerID, BankAccount account, MarketName CurrentMarket)
        {
            try
            {
                var context = Exigo.WebService();
                var request = new SetAccountDirectDepositRequest{
                       CustomerID = customerID,
                        NameOnAccount = account.NameOnAccount,
                        BankName = account.BankName,

                        DepositAccountType = DepositAccountType.Checking,

                        BankAddress = account.BillingAddress.Address1,
                        BankCity = account.BillingAddress.City,
                        BankState = account.BillingAddress.State,
                        BankCountry = account.BillingAddress.Country,
                        BankZip = account.BillingAddress.Zip

                };
                if (CurrentMarket == MarketName.UnitedStates)
                {
                    request.BankRoutingNumber = account.RoutingNumber;
                    request.BankAccountNumber = account.AccountNumber;
                }
                // We are seperating out swiftCode/Iban so in order to keep everything else the same we are simply pulling back the account routing number, and account number and setting them to their proper fields.
                else
                {
                    request.SwiftCode = account.RoutingNumber;
                    request.Iban = account.AccountNumber;
                }

                var result = context.SetAccountDirectDeposit(request);

                Exigo.WebService().UpdateCustomer(new UpdateCustomerRequest
                {
                    CustomerID = customerID,
                    PayableType = PayableType.DirectDeposit
                });
            }
            catch
            {
                return false;
            }

            return true;
        }
コード例 #7
0
        public static BankAccount SetCustomerBankAccount(int customerID, BankAccount account, ExigoService.BankAccountType type)
        {
            // New bank accounts
            if (type == ExigoService.BankAccountType.New)
            {
                return SaveNewCustomerBankAccount(customerID, account);
            }

            // Save the bank account
            var request = new SetAccountCheckingRequest
            {
                CustomerID = customerID,

                BankName = account.BankName,
                BankAccountNumber = account.AccountNumber,
                BankRoutingNumber = account.RoutingNumber,
                BankAccountType = Common.Api.ExigoWebService.BankAccountType.CheckingPersonal,

                NameOnAccount = account.NameOnAccount,
                BillingAddress = account.BillingAddress.AddressDisplay,
                BillingCity = account.BillingAddress.City,
                BillingState = account.BillingAddress.State,
                BillingZip = account.BillingAddress.Zip,
                BillingCountry = account.BillingAddress.Country
            };
            var response = Exigo.WebService().SetAccountChecking(request);

            return account;
        }
コード例 #8
0
 public static BankAccount SetCustomerBankAccount(int customerID, BankAccount account)
 {
     return SetCustomerBankAccount(customerID, account, account.Type);
 }
コード例 #9
0
        public static BankAccount SaveNewCustomerBankAccount(int customerID, BankAccount account)
        {
            // Get the bank accounts on file
            var bankAccountsOnFile = GetCustomerPaymentMethods(new GetCustomerPaymentMethodsRequest
            {
                CustomerID = customerID,
                ExcludeInvalidMethods = true
            }).Where(c => c is BankAccount).Select(c => (BankAccount)c);

            // Do we have any empty slots? If so, save this bank account to the next available slot
            if (!bankAccountsOnFile.Any(c => c.Type == ExigoService.BankAccountType.Primary))
            {
                account.Type = ExigoService.BankAccountType.Primary;
                return SetCustomerBankAccount(customerID, account);
            }

            // If not, try to save it to a bank account slot that does not have any autoOrders bound to it.
            if (!bankAccountsOnFile.Where(c => c.Type == ExigoService.BankAccountType.Primary).Single().IsUsedInAutoOrders)
            {
                account.Type = ExigoService.BankAccountType.Primary;
                return SetCustomerBankAccount(customerID, account);
            }

            // If no autoOrder-free slots exist, don't save it.
            return account;
        }
コード例 #10
0
        public ActionResult UseBankAccount(BankAccount newBankAccount, bool billingSameAsShipping = false)
        {
            if (billingSameAsShipping)
            {
                var address = PropertyBag.ShippingAddress;

                newBankAccount.BillingAddress = new Address
                {
                    Address1 = address.Address1,
                    Address2 = address.Address2,
                    City = address.City,
                    State = address.State,
                    Zip = address.Zip,
                    Country = address.Country
                };
            }

            // Verify that the card is valid
            if (!newBankAccount.IsValid)
            {
                return new JsonNetResult(new
                {
                    success = false
                });
            }
            else
            {
                // Save the bank account to the customer's account if applicable
                if (LogicProvider.IsAuthenticated())
                {
                    var paymentMethodsOnFile = Exigo.GetCustomerPaymentMethods(new GetCustomerPaymentMethodsRequest
                    {
                        CustomerID = Identity.Customer.CustomerID,
                        ExcludeIncompleteMethods = true,
                        ExcludeInvalidMethods = true,
                        ExcludeNonAutoOrderPaymentMethods = true
                    }).Where(c => c is BankAccount).Select(c => c as BankAccount);

                    if (paymentMethodsOnFile.FirstOrDefault() == null)
                    {
                        Exigo.SetCustomerBankAccount(Identity.Customer.CustomerID, newBankAccount);
                    }
                }

                return UsePaymentMethod(newBankAccount);
            }
        }
コード例 #11
0
 public static BankAccount SetCustomerBankAccount(int customerID, BankAccount account)
 {
     return(SetCustomerBankAccount(customerID, account, account.Type));
 }