From ffa67cef3b85fb1edf506c6ed4a4fd896e6b9014 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 9 Jun 2016 10:56:22 +0300 Subject: [PATCH] Refactoring payments code... --- app/Http/Controllers/AccountController.php | 9 +- .../Controllers/AccountGatewayController.php | 96 +++------ app/Http/routes.php | 2 +- app/Models/Account.php | 10 + app/Models/Gateway.php | 51 +++++ database/seeds/ConstantsSeeder.php | 44 +---- database/seeds/PaymentLibrariesSeeder.php | 91 ++++++--- resources/lang/en/texts.php | 1 + .../views/accounts/account_gateway.blade.php | 187 ++++++++---------- .../account_gateway_switch_wepay.blade.php | 7 - .../accounts/account_gateway_wepay.blade.php | 114 +++++++++++ .../partials/account_gateway_wepay.blade.php | 97 --------- resources/views/accounts/payments.blade.php | 12 +- tests/acceptance/OnlinePaymentCest.php | 14 +- 14 files changed, 354 insertions(+), 381 deletions(-) delete mode 100644 resources/views/accounts/account_gateway_switch_wepay.blade.php create mode 100644 resources/views/accounts/account_gateway_wepay.blade.php delete mode 100644 resources/views/accounts/partials/account_gateway_wepay.blade.php diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 72f56e14ee..d8290fdd1c 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -424,20 +424,13 @@ class AccountController extends BaseController if ($trashedCount == 0) { return Redirect::to('gateways/create'); } else { - $switchToWepay = WEPAY_CLIENT_ID && !$account->getGatewayConfig(GATEWAY_WEPAY); - - if ($switchToWepay && $account->token_billing_type_id != TOKEN_BILLING_DISABLED) { - $switchToWepay = !$account->getGatewayConfig(GATEWAY_BRAINTREE) && !$account->getGatewayConfig(GATEWAY_STRIPE); - } - $tokenBillingOptions = []; for ($i=1; $i<=4; $i++) { $tokenBillingOptions[$i] = trans("texts.token_billing_{$i}"); } return View::make('accounts.payments', [ - 'showSwitchToWepay' => $switchToWepay, - 'showAdd' => $count < count(Gateway::$paymentTypes), + 'showAdd' => $count < count(Gateway::$alternate) + 1, 'title' => trans('texts.online_payments'), 'tokenBillingOptions' => $tokenBillingOptions, 'account' => $account, diff --git a/app/Http/Controllers/AccountGatewayController.php b/app/Http/Controllers/AccountGatewayController.php index 38d4e7f65c..1d9a05e761 100644 --- a/app/Http/Controllers/AccountGatewayController.php +++ b/app/Http/Controllers/AccountGatewayController.php @@ -82,27 +82,34 @@ class AccountGatewayController extends BaseController * Displays the form for account creation * */ - public function create() + public function create($showWepay = true) { - $data = self::getViewModel(); - $data['url'] = 'gateways'; - $data['method'] = 'POST'; - $data['title'] = trans('texts.add_gateway'); - $data['selectGateways'] = Gateway::where('payment_library_id', '=', 1) - ->where('id', '!=', GATEWAY_PAYPAL_EXPRESS) - ->where('id', '!=', GATEWAY_BITPAY) - ->where('id', '!=', GATEWAY_GOCARDLESS) - ->where('id', '!=', GATEWAY_DWOLLA) - ->where('id', '!=', GATEWAY_STRIPE) - ->where('id', '!=', GATEWAY_WEPAY) - ->orderBy('name')->get(); - $data['hiddenFields'] = Gateway::$hiddenFields; - if ( ! \Request::secure() && ! Utils::isNinjaDev()) { Session::flash('warning', trans('texts.enable_https')); } - return View::make('accounts.account_gateway', $data); + $account = Auth::user()->account; + $accountGatewaysIds = $account->gatewayIds(); + $showWepay = filter_var($showWepay, FILTER_VALIDATE_BOOLEAN); + + if ( ! Utils::isNinja() || Gateway::hasStandardGateway($accountGatewaysIds)) { + $showWepay = false; + } + + $data = self::getViewModel(); + $data['url'] = 'gateways'; + $data['method'] = 'POST'; + $data['title'] = trans('texts.add_gateway'); + + if ($showWepay) { + return View::make('accounts.account_gateway_wepay', $data); + } else { + $data['primaryGateways'] = Gateway::primary($accountGatewaysIds)->orderBy('name', 'desc')->get(); + $data['secondaryGateways'] = Gateway::secondary($accountGatewaysIds)->orderBy('name')->get(); + $data['hiddenFields'] = Gateway::$hiddenFields; + + return View::make('accounts.account_gateway', $data); + } } private function getViewModel($accountGateway = false) @@ -111,20 +118,6 @@ class AccountGatewayController extends BaseController $user = Auth::user(); $account =$user->account; - $paymentTypes = []; - foreach (Gateway::$paymentTypes as $type) { - if ($accountGateway || $account->canAddGateway($type)) { - $paymentTypes[$type] = $type == PAYMENT_TYPE_CREDIT_CARD ? trans('texts.other_providers'): trans('texts.'.strtolower($type)); - - if ($type == PAYMENT_TYPE_BITCOIN) { - $paymentTypes[$type] .= ' - BitPay'; - } - if ($type == PAYMENT_TYPE_DIRECT_DEBIT) { - $paymentTypes[$type] .= ' - GoCardless'; - } - } - } - $creditCardsArray = unserialize(CREDIT_CARDS); $creditCards = []; foreach ($creditCardsArray as $card => $name) { @@ -149,7 +142,6 @@ class AccountGatewayController extends BaseController } return [ - 'paymentTypes' => $paymentTypes, 'account' => $account, 'user' => $user, 'accountGateway' => $accountGateway, @@ -178,29 +170,10 @@ class AccountGatewayController extends BaseController */ public function save($accountGatewayPublicId = false) { - $rules = array(); - $paymentType = Input::get('payment_type_id'); - $gatewayId = Input::get('gateway_id'); - - if ($paymentType == PAYMENT_TYPE_PAYPAL) { - $gatewayId = GATEWAY_PAYPAL_EXPRESS; - } elseif ($paymentType == PAYMENT_TYPE_BITCOIN) { - $gatewayId = GATEWAY_BITPAY; - } elseif ($paymentType == PAYMENT_TYPE_DIRECT_DEBIT) { - $gatewayId = GATEWAY_GOCARDLESS; - } elseif ($paymentType == PAYMENT_TYPE_DWOLLA) { - $gatewayId = GATEWAY_DWOLLA; - } elseif ($paymentType == PAYMENT_TYPE_STRIPE) { - $gatewayId = GATEWAY_STRIPE; - } - - if (!$gatewayId) { - Session::flash('error', trans('validation.required', ['attribute' => 'gateway'])); - return Redirect::to('gateways/create') - ->withInput(); - } - + $gatewayId = Input::get('primary_gateway_id') ?: Input::get('secondary_gateway_id'); $gateway = Gateway::findOrFail($gatewayId); + + $rules = array(); $fields = $gateway->getFields(); $optional = array_merge(Gateway::$hiddenFields, Gateway::$optionalFields); @@ -438,10 +411,6 @@ class AccountGatewayController extends BaseController } } - if (($gateway = $account->getGatewayByType(PAYMENT_TYPE_CREDIT_CARD)) || ($gateway = $account->getGatewayByType(PAYMENT_TYPE_STRIPE))) { - $gateway->delete(); - } - $accountGateway->gateway_id = GATEWAY_WEPAY; $accountGateway->setConfig(array( 'userId' => $wepayUser->user_id, @@ -495,17 +464,4 @@ class AccountGatewayController extends BaseController return Redirect::to("gateways/{$accountGateway->public_id}/edit"); } - public function switchToWepay() - { - $data = self::getViewModel(); - $data['url'] = 'gateways'; - $data['method'] = 'POST'; - unset($data['gateways']); - - if ( ! \Request::secure() && ! Utils::isNinjaDev()) { - Session::flash('warning', trans('texts.enable_https')); - } - - return View::make('accounts.account_gateway_switch_wepay', $data); - } } diff --git a/app/Http/routes.php b/app/Http/routes.php index 2e8c7fb381..ab1bd91d32 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -244,9 +244,9 @@ Route::group([ Route::post('/import', 'ImportController@doImport'); Route::post('/import_csv', 'ImportController@doImportCSV'); + Route::get('gateways/create/{show_wepay?}', 'AccountGatewayController@create'); Route::resource('gateways', 'AccountGatewayController'); Route::get('gateways/{public_id}/resend_confirmation', 'AccountGatewayController@resendConfirmation'); - Route::get('gateways/switch/wepay', 'AccountGatewayController@switchToWepay'); Route::get('api/gateways', array('as'=>'api.gateways', 'uses'=>'AccountGatewayController@getDatatable')); Route::post('account_gateways/bulk', 'AccountGatewayController@bulk'); diff --git a/app/Models/Account.php b/app/Models/Account.php index 2ab3858d39..7df9218438 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -415,6 +415,16 @@ class Account extends Eloquent return false; } + public function gatewayIds() + { + return $this->account_gateways()->pluck('gateway_id')->toArray(); + } + + public function hasGatewayId($gatewayId) + { + return in_array($gatewayId, $this->gatewayIds()); + } + public function getGatewayConfig($gatewayId) { foreach ($this->account_gateways as $gateway) { diff --git a/app/Models/Gateway.php b/app/Models/Gateway.php index ec84eab8fb..6df8af5e5f 100644 --- a/app/Models/Gateway.php +++ b/app/Models/Gateway.php @@ -8,6 +8,25 @@ class Gateway extends Eloquent { public $timestamps = true; + // these will appear in the primary gateway select + // the rest are shown when selecting 'more options' + public static $preferred = [ + GATEWAY_PAYPAL_EXPRESS, + GATEWAY_BITPAY, + GATEWAY_DWOLLA, + GATEWAY_STRIPE, + GATEWAY_BRAINTREE, + ]; + + // allow adding these gateway if another gateway + // is already configured + public static $alternate = [ + GATEWAY_PAYPAL_EXPRESS, + GATEWAY_BITPAY, + GATEWAY_DWOLLA, + ]; + + // TODO remove this public static $paymentTypes = [ PAYMENT_TYPE_STRIPE, PAYMENT_TYPE_CREDIT_CARD, @@ -52,6 +71,38 @@ class Gateway extends Eloquent return Utils::toCamelCase(strtolower(str_replace('PAYMENT_TYPE_', '', $type))); } + public static function hasStandardGateway($gatewayIds) + { + $diff = array_diff($gatewayIds, static::$alternate); + + return count($diff); + } + + public function scopePrimary($query, $accountGatewaysIds) + { + $query->where('payment_library_id', '=', 1) + ->where('id', '!=', GATEWAY_WEPAY) + ->whereIn('id', Gateway::$preferred) + ->whereNotIn('id', $accountGatewaysIds); + + // if the user has a credit card gateway only show alternate options + if (static::hasStandardGateway($accountGatewaysIds)) { + $query->whereNotIn('id', array_diff(static::$preferred, static::$alternate)); + } + } + + public function scopeSecondary($query, $accountGatewaysIds) + { + // if the user has a credit card don't show an secondary options + if (static::hasStandardGateway($accountGatewaysIds)) { + $query->where('id', '=', 0); + } else { + $query->where('payment_library_id', '=', 1) + ->where('id', '!=', GATEWAY_WEPAY) + ->whereNotIn('id', static::$preferred); + } + } + /* public static function getPaymentTypeLinks() { $data = []; diff --git a/database/seeds/ConstantsSeeder.php b/database/seeds/ConstantsSeeder.php index 863ba5c71f..0200af1ee3 100644 --- a/database/seeds/ConstantsSeeder.php +++ b/database/seeds/ConstantsSeeder.php @@ -78,7 +78,7 @@ class ConstantsSeeder extends Seeder Size::create(array('name' => '11 - 50')); Size::create(array('name' => '51 - 100')); Size::create(array('name' => '101 - 500')); - Size::create(array('name' => '500+')); + Size::create(array('name' => '500+')); PaymentTerm::create(array('num_days' => 7, 'name' => 'Net 7', 'public_id' => 1)); PaymentTerm::create(array('num_days' => 10, 'name' => 'Net 10', 'public_id' => 2)); @@ -87,11 +87,11 @@ class ConstantsSeeder extends Seeder PaymentTerm::create(array('num_days' => 30, 'name' => 'Net 30', 'public_id' => 5)); PaymentTerm::create(array('num_days' => 60, 'name' => 'Net 60', 'public_id' => 6)); PaymentTerm::create(array('num_days' => 90, 'name' => 'Net 90', 'public_id' => 7)); - + PaymentLibrary::create(['name' => 'Omnipay']); PaymentLibrary::create(['name' => 'PHP-Payments [Deprecated]']); - /* + /* d, dd: Numeric date, no leading zero and leading zero, respectively. Eg, 5, 05. D, DD: Abbreviated and full weekday names, respectively. Eg, Mon, Monday. m, mm: Numeric month, no leading zero and leading zero, respectively. Eg, 7, 07. @@ -99,42 +99,6 @@ class ConstantsSeeder extends Seeder yy, yyyy: 2- and 4-digit years, respectively. Eg, 12, 2012.) */ - $gateways = [ - array('name'=>'Authorize.Net AIM', 'provider'=>'AuthorizeNet_AIM'), - array('name'=>'Authorize.Net SIM', 'provider'=>'AuthorizeNet_SIM'), - array('name'=>'CardSave', 'provider'=>'CardSave'), - array('name'=>'Eway Rapid', 'provider'=>'Eway_Rapid'), - array('name'=>'FirstData Connect', 'provider'=>'FirstData_Connect'), - array('name'=>'GoCardless', 'provider'=>'GoCardless'), - array('name'=>'Migs ThreeParty', 'provider'=>'Migs_ThreeParty'), - array('name'=>'Migs TwoParty', 'provider'=>'Migs_TwoParty'), - array('name'=>'Mollie', 'provider'=>'Mollie'), - array('name'=>'MultiSafepay', 'provider'=>'MultiSafepay'), - array('name'=>'Netaxept', 'provider'=>'Netaxept'), - array('name'=>'NetBanx', 'provider'=>'NetBanx'), - array('name'=>'PayFast', 'provider'=>'PayFast'), - array('name'=>'Payflow Pro', 'provider'=>'Payflow_Pro'), - array('name'=>'PaymentExpress PxPay', 'provider'=>'PaymentExpress_PxPay'), - array('name'=>'PaymentExpress PxPost', 'provider'=>'PaymentExpress_PxPost'), - array('name'=>'PayPal Express', 'provider'=>'PayPal_Express'), - array('name'=>'PayPal Pro', 'provider'=>'PayPal_Pro'), - array('name'=>'Pin', 'provider'=>'Pin'), - array('name'=>'SagePay Direct', 'provider'=>'SagePay_Direct'), - array('name'=>'SagePay Server', 'provider'=>'SagePay_Server'), - array('name'=>'SecurePay DirectPost', 'provider'=>'SecurePay_DirectPost'), - array('name'=>'Stripe', 'provider'=>'Stripe'), - array('name'=>'TargetPay Direct eBanking', 'provider'=>'TargetPay_Directebanking'), - array('name'=>'TargetPay Ideal', 'provider'=>'TargetPay_Ideal'), - array('name'=>'TargetPay Mr Cash', 'provider'=>'TargetPay_Mrcash'), - array('name'=>'TwoCheckout', 'provider'=>'TwoCheckout'), - array('name'=>'WorldPay', 'provider'=>'WorldPay'), - ]; - - foreach ($gateways as $gateway) - { - Gateway::create($gateway); - } - $timezones = array( 'Pacific/Midway' => "(GMT-11:00) Midway Island", 'US/Samoa' => "(GMT-11:00) Samoa", @@ -250,7 +214,7 @@ class ConstantsSeeder extends Seeder 'Pacific/Auckland' => "(GMT+12:00) Auckland", 'Pacific/Fiji' => "(GMT+12:00) Fiji", ); - + foreach ($timezones as $name => $location) { Timezone::create(array('name'=>$name, 'location'=>$location)); } diff --git a/database/seeds/PaymentLibrariesSeeder.php b/database/seeds/PaymentLibrariesSeeder.php index b93d68717b..88a270930f 100644 --- a/database/seeds/PaymentLibrariesSeeder.php +++ b/database/seeds/PaymentLibrariesSeeder.php @@ -15,46 +15,75 @@ class PaymentLibrariesSeeder extends Seeder Eloquent::unguard(); $gateways = [ + ['name' => 'Authorize.Net AIM', 'provider' => 'AuthorizeNet_AIM'], + ['name' => 'Authorize.Net SIM', 'provider' => 'AuthorizeNet_SIM'], + ['name' => 'CardSave', 'provider' => 'CardSave'], + ['name' => 'Eway Rapid', 'provider' => 'Eway_Rapid'], + ['name' => 'FirstData Connect', 'provider' => 'FirstData_Connect'], + ['name' => 'GoCardless', 'provider' => 'GoCardless', 'is_offsite' => true], + ['name' => 'Migs ThreeParty', 'provider' => 'Migs_ThreeParty'], + ['name' => 'Migs TwoParty', 'provider' => 'Migs_TwoParty'], + ['name' => 'Mollie', 'provider' => 'Mollie'], + ['name' => 'MultiSafepay', 'provider' => 'MultiSafepay'], + ['name' => 'Netaxept', 'provider' => 'Netaxept'], + ['name' => 'NetBanx', 'provider' => 'NetBanx'], + ['name' => 'PayFast', 'provider' => 'PayFast'], + ['name' => 'Payflow Pro', 'provider' => 'Payflow_Pro'], + ['name' => 'PaymentExpress PxPay', 'provider' => 'PaymentExpress_PxPay'], + ['name' => 'PaymentExpress PxPost', 'provider' => 'PaymentExpress_PxPost'], + ['name' => 'PayPal Express', 'provider' => 'PayPal_Express', 'is_offsite' => true], + ['name' => 'PayPal Pro', 'provider' => 'PayPal_Pro'], + ['name' => 'Pin', 'provider' => 'Pin'], + ['name' => 'SagePay Direct', 'provider' => 'SagePay_Direct'], + ['name' => 'SagePay Server', 'provider' => 'SagePay_Server'], + ['name' => 'SecurePay DirectPost', 'provider' => 'SecurePay_DirectPost'], + ['name' => 'Stripe', 'provider' => 'Stripe'], + ['name' => 'TargetPay Direct eBanking', 'provider' => 'TargetPay_Directebanking'], + ['name' => 'TargetPay Ideal', 'provider' => 'TargetPay_Ideal'], + ['name' => 'TargetPay Mr Cash', 'provider' => 'TargetPay_Mrcash'], + ['name' => 'TwoCheckout', 'provider' => 'TwoCheckout'], + ['name' => 'WorldPay', 'provider' => 'WorldPay'], ['name' => 'BeanStream', 'provider' => 'BeanStream', 'payment_library_id' => 2], ['name' => 'Psigate', 'provider' => 'Psigate', 'payment_library_id' => 2], - ['name' => 'moolah', 'provider' => 'AuthorizeNet_AIM', 'sort_order' => 1, 'recommended' => 1, 'site_url' => 'https://invoiceninja.mymoolah.com/', 'payment_library_id' => 1], - ['name' => 'Alipay', 'provider' => 'Alipay_Express', 'payment_library_id' => 1], - ['name' => 'Buckaroo', 'provider' => 'Buckaroo_CreditCard', 'payment_library_id' => 1], - ['name' => 'Coinbase', 'provider' => 'Coinbase', 'payment_library_id' => 1], - ['name' => 'DataCash', 'provider' => 'DataCash', 'payment_library_id' => 1], + ['name' => 'moolah', 'provider' => 'AuthorizeNet_AIM'], + ['name' => 'Alipay', 'provider' => 'Alipay_Express'], + ['name' => 'Buckaroo', 'provider' => 'Buckaroo_CreditCard'], + ['name' => 'Coinbase', 'provider' => 'Coinbase'], + ['name' => 'DataCash', 'provider' => 'DataCash'], ['name' => 'Neteller', 'provider' => 'Neteller', 'payment_library_id' => 2], - ['name' => 'Pacnet', 'provider' => 'Pacnet', 'payment_library_id' => 1], - ['name' => 'PaymentSense', 'provider' => 'PaymentSense', 'payment_library_id' => 1], - ['name' => 'Realex', 'provider' => 'Realex_Remote', 'payment_library_id' => 1], - ['name' => 'Sisow', 'provider' => 'Sisow', 'payment_library_id' => 1], - ['name' => 'Skrill', 'provider' => 'Skrill', 'payment_library_id' => 1], - ['name' => 'BitPay', 'provider' => 'BitPay', 'payment_library_id' => 1], - ['name' => 'Dwolla', 'provider' => 'Dwolla', 'payment_library_id' => 1], - ['name' => 'Eway Rapid', 'provider' => 'Eway_RapidShared', 'payment_library_id' => 1], - ['name' => 'AGMS', 'provider' => 'Agms', 'payment_library_id' => 1], - ['name' => 'Barclays', 'provider' => 'BarclaysEpdq\Essential', 'payment_library_id' => 1], - ['name' => 'Cardgate', 'provider' => 'Cardgate', 'payment_library_id' => 1], - ['name' => 'Checkout.com', 'provider' => 'CheckoutCom', 'payment_library_id' => 1], - ['name' => 'Creditcall', 'provider' => 'Creditcall', 'payment_library_id' => 1], - ['name' => 'Cybersource', 'provider' => 'Cybersource', 'payment_library_id' => 1], - ['name' => 'ecoPayz', 'provider' => 'Ecopayz', 'payment_library_id' => 1], - ['name' => 'Fasapay', 'provider' => 'Fasapay', 'payment_library_id' => 1], - ['name' => 'Komoju', 'provider' => 'Komoju', 'payment_library_id' => 1], - ['name' => 'Multicards', 'provider' => 'Multicards', 'payment_library_id' => 1], - ['name' => 'Pagar.Me', 'provider' => 'Pagarme', 'payment_library_id' => 1], - ['name' => 'Paysafecard', 'provider' => 'Paysafecard', 'payment_library_id' => 1], - ['name' => 'Paytrace', 'provider' => 'Paytrace_CreditCard', 'payment_library_id' => 1], - ['name' => 'Secure Trading', 'provider' => 'SecureTrading', 'payment_library_id' => 1], - ['name' => 'SecPay', 'provider' => 'SecPay', 'payment_library_id' => 1], - ['name' => 'WeChat Express', 'provider' => 'WeChat_Express', 'payment_library_id' => 1], - ['name' => 'WePay', 'provider' => 'WePay', 'payment_library_id' => 1], - ['name' => 'Braintree', 'provider' => 'Braintree', 'payment_library_id' => 1], + ['name' => 'Pacnet', 'provider' => 'Pacnet'], + ['name' => 'PaymentSense', 'provider' => 'PaymentSense'], + ['name' => 'Realex', 'provider' => 'Realex_Remote'], + ['name' => 'Sisow', 'provider' => 'Sisow'], + ['name' => 'Skrill', 'provider' => 'Skrill'], + ['name' => 'BitPay', 'provider' => 'BitPay', 'is_offsite' => true], + ['name' => 'Dwolla', 'provider' => 'Dwolla', 'is_offsite' => true], + ['name' => 'Eway Rapid', 'provider' => 'Eway_RapidShared'], + ['name' => 'AGMS', 'provider' => 'Agms'], + ['name' => 'Barclays', 'provider' => 'BarclaysEpdq\Essential'], + ['name' => 'Cardgate', 'provider' => 'Cardgate'], + ['name' => 'Checkout.com', 'provider' => 'CheckoutCom'], + ['name' => 'Creditcall', 'provider' => 'Creditcall'], + ['name' => 'Cybersource', 'provider' => 'Cybersource'], + ['name' => 'ecoPayz', 'provider' => 'Ecopayz'], + ['name' => 'Fasapay', 'provider' => 'Fasapay'], + ['name' => 'Komoju', 'provider' => 'Komoju'], + ['name' => 'Multicards', 'provider' => 'Multicards'], + ['name' => 'Pagar.Me', 'provider' => 'Pagarme'], + ['name' => 'Paysafecard', 'provider' => 'Paysafecard'], + ['name' => 'Paytrace', 'provider' => 'Paytrace_CreditCard'], + ['name' => 'Secure Trading', 'provider' => 'SecureTrading'], + ['name' => 'SecPay', 'provider' => 'SecPay'], + ['name' => 'WeChat Express', 'provider' => 'WeChat_Express'], + ['name' => 'WePay', 'provider' => 'WePay'], + ['name' => 'Braintree', 'provider' => 'Braintree'], ]; foreach ($gateways as $gateway) { $record = Gateway::where('name', '=', $gateway['name'])->first(); if ($record) { $record->provider = $gateway['provider']; + $record->is_offsite = isset($gateway['is_offsite']); $record->save(); } else { Gateway::create($gateway); diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 0e38859b66..92552e8878 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -1350,6 +1350,7 @@ $LANG = array( 'verification_pending' => 'Verification Pending', 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', ); diff --git a/resources/views/accounts/account_gateway.blade.php b/resources/views/accounts/account_gateway.blade.php index af70957e2d..c14255737f 100644 --- a/resources/views/accounts/account_gateway.blade.php +++ b/resources/views/accounts/account_gateway.blade.php @@ -5,11 +5,6 @@ @include('accounts.nav', ['selected' => ACCOUNT_PAYMENTS]) - @if(!$accountGateway && WEPAY_CLIENT_ID && !$account->getGatewayByType(PAYMENT_TYPE_CREDIT_CARD) && !$account->getGatewayByType(PAYMENT_TYPE_STRIPE)) - @include('accounts.partials.account_gateway_wepay') - @endif - -

{!! trans($title) !!}

@@ -40,7 +35,6 @@ @endforeach @endif @else - {!! Former::populateField('gateway_id', GATEWAY_STRIPE) !!} {!! Former::populateField('show_address', 1) !!} {!! Former::populateField('update_address', 1) !!} @@ -50,29 +44,28 @@ @endif @endif - {!! Former::select('payment_type_id') - ->options($paymentTypes) - ->addGroupClass('payment-type-option') - ->onchange('setPaymentType()') !!} + @if ($accountGateway) +
+ {!! Former::text('primary_gateway_id')->value($accountGateway->gateway_id) !!} +
+ @else + {!! Former::select('primary_gateway_id') + ->fromQuery($primaryGateways, 'name', 'id') + ->label(trans('texts.gateway_id')) + ->onchange('setFieldsShown()') !!} - {!! Former::select('gateway_id') - ->dataClass('gateway-dropdown') - ->addGroupClass('gateway-option gateway-choice') - ->fromQuery($selectGateways, 'name', 'id') - ->onchange('setFieldsShown()') !!} + @if (count($secondaryGateways)) + {!! Former::select('secondary_gateway_id') + ->fromQuery($secondaryGateways, 'name', 'id') + ->addGroupClass('secondary-gateway') + ->label(' ') + ->onchange('setFieldsShown()') !!} + @endif + @endif @foreach ($gateways as $gateway) - @endif - - @if ($gateway->id == GATEWAY_BRAINTREE) - @if ($account->getGatewayByType(PAYMENT_TYPE_PAYPAL, isset($accountGateway)?$accountGateway:null)) + @elseif ($gateway->id == GATEWAY_BRAINTREE) + @if ($account->hasGatewayId(GATEWAY_PAYPAL_EXPRESS)) {!! Former::checkbox('enable_paypal') ->label(trans('texts.paypal')) ->text(trans('texts.braintree_enable_paypal')) @@ -128,50 +117,39 @@ ->text(trans('texts.braintree_enable_paypal')) !!} @endif @endif + + @if ($gateway->getHelp()) +
+ +
+ {!! $gateway->getHelp() !!} +
+
+ @endif
@endforeach - {!! Former::checkbox('show_address') - ->label(trans('texts.billing_address')) - ->text(trans('texts.show_address_help')) - ->addGroupClass('gateway-option') !!} - {!! Former::checkbox('update_address') - ->label(' ') - ->text(trans('texts.update_address_help')) - ->addGroupClass('gateway-option') !!} + - @if(!isset($accountGateway) && $accountGateway->gateway_id == GATEWAY_WEPAY) - @if ($account->getGatewayByType(PAYMENT_TYPE_DIRECT_DEBIT, $accountGateway)) - {!! Former::checkbox('enable_ach') - ->label(trans('texts.ach')) - ->text(trans('texts.enable_ach')) - ->value(null) - ->disabled(true) - ->help(trans('texts.ach_disabled')) !!} - @else - {!! Former::checkbox('enable_ach') - ->label(trans('texts.ach')) - ->text(trans('texts.enable_ach')) !!} - @endif - - @elseif(!isset($accountGateway) && $accountGateway->gateway_id == GATEWAY_STRIPE) + @if (!$accountGateway || $accountGateway->gateway_id == GATEWAY_STRIPE)
- @if ($account->getGatewayByType(PAYMENT_TYPE_DIRECT_DEBIT, isset($accountGateway)?$accountGateway:null)) - {!! Former::checkbox('enable_ach') - ->label(trans('texts.ach')) - ->text(trans('texts.enable_ach')) - ->value(null) - ->disabled(true) - ->help(trans('texts.ach_disabled')) !!} - @else {!! Former::checkbox('enable_ach') ->label(trans('texts.ach')) ->text(trans('texts.enable_ach')) @@ -188,56 +166,43 @@ {!! Former::text('plaid_public_key')->label(trans('texts.public_key')) ->help(trans('texts.plaid_environment_help')) !!}
- @endif
@endif +
-

 

+
+ +

+ {!! Button::normal(trans('texts.cancel'))->large()->asLinkTo(URL::to('/settings/online_payments'))->appendIcon(Icon::create('remove-circle')) !!} + {!! Button::success(trans('texts.save'))->submit()->large()->appendIcon(Icon::create('floppy-disk')) !!} +
- {!! Former::actions( - $countGateways > 0 ? Button::normal(trans('texts.cancel'))->large()->asLinkTo(URL::to('/settings/online_payments'))->appendIcon(Icon::create('remove-circle')) : false, - Button::success(trans('texts.save'))->submit()->large()->appendIcon(Icon::create('floppy-disk'))) !!} {!! Former::close() !!} - - diff --git a/resources/views/accounts/account_gateway_switch_wepay.blade.php b/resources/views/accounts/account_gateway_switch_wepay.blade.php deleted file mode 100644 index ae851881be..0000000000 --- a/resources/views/accounts/account_gateway_switch_wepay.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('header') - -@section('content') - @parent - @include('accounts.nav', ['selected' => ACCOUNT_PAYMENTS]) - @include('accounts.partials.account_gateway_wepay') -@stop \ No newline at end of file diff --git a/resources/views/accounts/account_gateway_wepay.blade.php b/resources/views/accounts/account_gateway_wepay.blade.php new file mode 100644 index 0000000000..9adcdb5be2 --- /dev/null +++ b/resources/views/accounts/account_gateway_wepay.blade.php @@ -0,0 +1,114 @@ +@extends('header') + +@section('content') + @parent + + @include('accounts.nav', ['selected' => ACCOUNT_PAYMENTS]) + + {!! Former::open($url)->method($method)->rules(array( + 'first_name' => 'required', + 'last_name' => 'required', + 'email' => 'required', + 'description' => 'required', + 'company_name' => 'required', + 'tos_agree' => 'required', + 'country' => 'required', + ))->addClass('warn-on-exit') !!} + + {!! Former::populateField('company_name', $account->getDisplayName()) !!} + + @if ($account->country) + {!! Former::populateField('country', $account->country->iso_3166_2) !!} + @endif + + {!! Former::populateField('first_name', $user->first_name) !!} + {!! Former::populateField('last_name', $user->last_name) !!} + {!! Former::populateField('email', $user->email) !!} + {!! Former::populateField('show_address', 1) !!} + {!! Former::populateField('update_address', 1) !!} + +
+
+

{!! trans('texts.online_payments') !!}

+
+
+ {!! Former::text('first_name') !!} + {!! Former::text('last_name') !!} + {!! Former::text('email') !!} + {!! Former::text('company_name')->help('wepay_company_name_help')->maxlength(255) !!} + {!! Former::text('description')->help('wepay_description_help') !!} + + @if (WEPAY_ENABLE_CANADA) +
+ {!! Former::radios('country') + ->radios([ + trans('texts.united_states') => ['value' => 'US'], + trans('texts.canada') => ['value' => 'CA'], + ]) !!} +
+
+ {!! Former::checkbox('debit_cards') + ->text(trans('texts.accept_debit_cards')) !!} +
+ @endif + + {!! Former::checkbox('show_address') + ->label(trans('texts.billing_address')) + ->text(trans('texts.show_address_help')) !!} + {!! Former::checkbox('update_address') + ->label(' ') + ->text(trans('texts.update_address_help')) !!} + {!! Former::checkboxes('creditCardTypes[]') + ->label('Accepted Credit Cards') + ->checkboxes($creditCardTypes) + ->class('creditcard-types') !!} + @if ($account->getGatewayByType(PAYMENT_TYPE_DIRECT_DEBIT)) + {!! Former::checkbox('enable_ach') + ->label(trans('texts.ach')) + ->text(trans('texts.enable_ach')) + ->value(null) + ->disabled(true) + ->help(trans('texts.ach_disabled')) !!} + @else + {!! Former::checkbox('enable_ach') + ->label(trans('texts.ach')) + ->text(trans('texts.enable_ach')) !!} + @endif + + {!! Former::checkbox('tos_agree')->label(' ')->text(trans('texts.wepay_tos_agree', + ['link'=>''.trans('texts.wepay_tos_link_text').''] + ))->value('true') !!} +
+
+ +
+
+ {!! Button::normal(trans('texts.use_another_provider'))->large()->asLinkTo(URL::to('/gateways/create/0')) !!} + {!! Button::success(trans('texts.sign_up_with_wepay'))->submit()->large() !!} +
+ + + + + + + + {!! Former::close() !!} + +@stop diff --git a/resources/views/accounts/partials/account_gateway_wepay.blade.php b/resources/views/accounts/partials/account_gateway_wepay.blade.php deleted file mode 100644 index a030d4c825..0000000000 --- a/resources/views/accounts/partials/account_gateway_wepay.blade.php +++ /dev/null @@ -1,97 +0,0 @@ -{!! Former::open($url)->method($method)->rules(array( - 'first_name' => 'required', - 'last_name' => 'required', - 'email' => 'required', - 'description' => 'required', - 'company_name' => 'required', - 'tos_agree' => 'required', - 'country' => 'required', - ))->addClass('warn-on-exit') !!} -{!! Former::populateField('company_name', $account->getDisplayName()) !!} -@if($account->country) - {!! Former::populateField('country', $account->country->iso_3166_2) !!} -@endif -{!! Former::populateField('first_name', $user->first_name) !!} -{!! Former::populateField('last_name', $user->last_name) !!} -{!! Former::populateField('email', $user->email) !!} -{!! Former::populateField('show_address', 1) !!} -{!! Former::populateField('update_address', 1) !!} -
-
-

{!! trans('texts.online_payments') !!}

-
-
- {!! Former::text('first_name') !!} - {!! Former::text('last_name') !!} - {!! Former::text('email') !!} - {!! Former::text('company_name')->help('wepay_company_name_help')->maxlength(255) !!} - {!! Former::text('description')->help('wepay_description_help') !!} - @if (WEPAY_ENABLE_CANADA) -
- {!! Former::radios('country') - ->radios([ - trans('texts.united_states') => ['value' => 'US'], - trans('texts.canada') => ['value' => 'CA'], - ]) !!} -
-
- {!! Former::checkbox('debit_cards') - ->text(trans('texts.accept_debit_cards')) !!} -
- @endif - {!! Former::checkbox('show_address') - ->label(trans('texts.billing_address')) - ->text(trans('texts.show_address_help')) !!} - {!! Former::checkbox('update_address') - ->label(' ') - ->text(trans('texts.update_address_help')) !!} - {!! Former::checkboxes('creditCardTypes[]') - ->label('Accepted Credit Cards') - ->checkboxes($creditCardTypes) - ->class('creditcard-types') !!} - @if ($account->getGatewayByType(PAYMENT_TYPE_DIRECT_DEBIT)) - {!! Former::checkbox('enable_ach') - ->label(trans('texts.ach')) - ->text(trans('texts.enable_ach')) - ->value(null) - ->disabled(true) - ->help(trans('texts.ach_disabled')) !!} - @else - {!! Former::checkbox('enable_ach') - ->label(trans('texts.ach')) - ->text(trans('texts.enable_ach')) !!} - @endif - {!! Former::checkbox('tos_agree')->label(' ')->text(trans('texts.wepay_tos_agree', - ['link'=>''.trans('texts.wepay_tos_link_text').''] - ))->value('true') !!} -
- {!! Button::primary(trans('texts.sign_up_with_wepay')) - ->submit() - ->large() !!} - @if(isset($gateways)) -

- {{ trans('texts.use_another_provider') }} - @endif -
-
-
- - - -{!! Former::close() !!} \ No newline at end of file diff --git a/resources/views/accounts/payments.blade.php b/resources/views/accounts/payments.blade.php index 603aec4bf6..55e7177c68 100644 --- a/resources/views/accounts/payments.blade.php +++ b/resources/views/accounts/payments.blade.php @@ -1,7 +1,7 @@ @extends('header') -@section('content') - @parent +@section('content') + @parent @include('accounts.nav', ['selected' => ACCOUNT_PAYMENTS]) {!! Former::open()->addClass('warn-on-exit') !!} @@ -31,12 +31,6 @@ {!! Former::close() !!} - @if ($showSwitchToWepay) - {!! Button::success(trans('texts.switch_to_wepay')) - ->asLinkTo(URL::to('/gateways/switch/wepay')) - ->appendIcon(Icon::create('circle-arrow-up')) !!} -   - @endif