diff --git a/app/Http/Controllers/WePayController.php b/app/Http/Controllers/WePayController.php index 978360948f88..be2285ae1b5d 100644 --- a/app/Http/Controllers/WePayController.php +++ b/app/Http/Controllers/WePayController.php @@ -44,10 +44,10 @@ class WePayController extends BaseController // $data['user_id'] = $this->encodePrimaryKey($hash['user_id']); // $data['company_key'] = $hash['company_key']; + /* Mock Data - in production we will be passed the correct company*/ $user = User::first(); $data['user_id'] = $user->id; - - $data['company_key'] = $user->account->companies()->first()->company_key; + $data['company'] = $user->account->companies()->first(); $wepay_driver = new WePayPaymentDriver(new CompanyGateway, null, null); @@ -59,4 +59,9 @@ class WePayController extends BaseController { } + + public function finished() + { + return render('gateways.wepay.signup.finished'); + } } diff --git a/app/Http/Livewire/WepaySignup.php b/app/Http/Livewire/WepaySignup.php index a069997f6fed..0a471672bd20 100644 --- a/app/Http/Livewire/WepaySignup.php +++ b/app/Http/Livewire/WepaySignup.php @@ -12,9 +12,12 @@ namespace App\Http\Livewire; +use App\DataMapper\FeesAndLimits; use App\Factory\CompanyGatewayFactory; +use App\Libraries\MultiDB; use App\Models\Company; use App\Models\CompanyGateway; +use App\Models\GatewayType; use App\Models\User; use App\PaymentDrivers\WePayPaymentDriver; use Illuminate\Support\Facades\Hash; @@ -54,8 +57,10 @@ class WepaySignup extends Component public function mount() { + MultiDB::setDb($this->company->db); + $user = User::find($this->user_id); - $this->company = Company::where('company_key', $this->company_key)->firstOrFail(); + $this->company = Company::where('company_key', $this->company->company_key)->first(); $this->fill([ 'wepay_payment_tos_agree' => '', @@ -87,6 +92,11 @@ class WepaySignup extends Component ->firstOrNew(); if(!$cg->id) { + + $fees_and_limits = new \stdClass; + $fees_and_limits->{GatewayType::CREDIT_CARD} = new FeesAndLimits; + $fees_and_limits->{GatewayType::BANK_TRANSFER} = new FeesAndLimits; + $cg = CompanyGatewayFactory::create($this->company->id, $this->user->id); $cg->gateway_key = '8fdeed552015b3c7b44ed6c8ebd9e992'; $cg->require_cvv = false; @@ -94,7 +104,9 @@ class WepaySignup extends Component $cg->require_shipping_address = false; $cg->update_details = false; $cg->config = encrypt(config('ninja.testvars.checkout')); + $cg->fees_and_limits = $fees_and_limits; $cg->save(); + } $this->saved = ctrans('texts.processing'); @@ -139,7 +151,7 @@ class WepaySignup extends Component } elseif ($data['country'] == 'GB') { $account_details['currencies'] = ['GBP']; } - + $wepay_account = $wepay->request('account/create/', $account_details); try { @@ -149,8 +161,11 @@ class WepaySignup extends Component if ($ex->getMessage() == 'This access_token is already approved.') { $confirmation_required = false; } else { - throw $ex; + request()->session()->flash('message', $ex->getMessage()); } + + nlog("failed in try catch "); + nlog($ex->getMessage()); } $config = [ @@ -166,6 +181,20 @@ class WepaySignup extends Component $cg->setConfig($config); $cg->save(); + + if ($confirmation_required) { + request()->session()->flash('message', trans('texts.created_wepay_confirmation_required')); + } else { + $update_uri = $wepay->request('/account/get_update_uri', [ + 'account_id' => $wepay_account->account_id, + 'redirect_uri' => config('ninja.app_url'), + ]); + + return redirect($update_uri->uri); + } + + + return redirect()->to('/wepay/finished'); } } diff --git a/app/Models/Gateway.php b/app/Models/Gateway.php index c182f4e1d7ad..e2e789f295a8 100644 --- a/app/Models/Gateway.php +++ b/app/Models/Gateway.php @@ -95,6 +95,10 @@ class Gateway extends StaticModel case 39: return [GatewayType::CREDIT_CARD => ['refund' => true, 'token_billing' => true]]; //Checkout break; + case 49: + return [GatewayType::CREDIT_CARD => ['refund' => true, 'token_billing' => true], + GatewayType::BANK_TRANSFER => ['refund' => true, 'token_billing' => true]]; //WePay + break; default: return []; break; diff --git a/app/PaymentDrivers/WePay/Setup.php b/app/PaymentDrivers/WePay/Setup.php index 740ef8025520..6b0a062a156c 100644 --- a/app/PaymentDrivers/WePay/Setup.php +++ b/app/PaymentDrivers/WePay/Setup.php @@ -28,7 +28,7 @@ class Setup { /* 'user_id', - 'company_key', + 'company', */ return render('gateways.wepay.signup.index', $data); diff --git a/resources/views/portal/ninja2020/gateways/wepay/signup/finished.blade.php b/resources/views/portal/ninja2020/gateways/wepay/signup/finished.blade.php new file mode 100644 index 000000000000..c0c67077a6d1 --- /dev/null +++ b/resources/views/portal/ninja2020/gateways/wepay/signup/finished.blade.php @@ -0,0 +1,24 @@ +@extends('portal.ninja2020.layout.clean', ['custom_body_class' => 'bg-gray-50']) +@section('meta_title', ctrans('texts.sign_up_with_wepay')) + +@section('body') +
+ We Pay +
+ +
+

Wepay setup complete:

+
+ +
+ @if(isset($message)) + {{ $message ?? '' }} + @endif +
+ +@endsection + +@push('footer') + +@endpush diff --git a/resources/views/portal/ninja2020/gateways/wepay/signup/index.blade.php b/resources/views/portal/ninja2020/gateways/wepay/signup/index.blade.php index e2aaaf5d7d04..9c30c242083c 100644 --- a/resources/views/portal/ninja2020/gateways/wepay/signup/index.blade.php +++ b/resources/views/portal/ninja2020/gateways/wepay/signup/index.blade.php @@ -6,7 +6,7 @@ We Pay - @livewire('wepay-signup', ['user_id' => $user_id, 'company_key' => $company_key]) + @livewire('wepay-signup', ['user_id' => $user_id, 'company' => $company]) @endsection @push('footer') diff --git a/routes/web.php b/routes/web.php index 60fb651c3a11..e9ea7bcd8b06 100644 --- a/routes/web.php +++ b/routes/web.php @@ -21,7 +21,8 @@ Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.update'); Route::get('wepay/signup/{token}', 'WePayController@signup')->name('wepay.signup'); -Route::get('wepay/processSignup', 'WePayController@processSignup')->name('wepay.process_signup'); +Route::post('wepay/process_signup', 'WePayController@processSignup')->name('wepay.process_signup'); +Route::get('wepay/finished', 'WePayController@finished')->name('wepay.finished'); /* * Social authentication