diff --git a/app/Http/Controllers/WePayController.php b/app/Http/Controllers/WePayController.php
deleted file mode 100644
index b8669efd85..0000000000
--- a/app/Http/Controllers/WePayController.php
+++ /dev/null
@@ -1,56 +0,0 @@
-firstOrFail();
-
- $data['user_id'] = $user->id;
- $data['user_company'] = $company;
-
- // $data['company_key'] = $company->company_key;
- // $data['db'] = $company->db;
-
- $wepay_driver = new WePayPaymentDriver(new CompanyGateway(), null, null);
-
- return $wepay_driver->setup($data);
- }
-
- public function finished()
- {
- return render('gateways.wepay.signup.finished');
- }
-}
diff --git a/app/Livewire/WepaySignup.php b/app/Livewire/WepaySignup.php
deleted file mode 100644
index 7ed96676e2..0000000000
--- a/app/Livewire/WepaySignup.php
+++ /dev/null
@@ -1,215 +0,0 @@
- ['required'],
- 'last_name' => ['required'],
- 'email' => ['required', 'email'],
- 'company_name' => ['required'],
- 'country' => ['required'],
- 'ach' => ['sometimes'],
- 'wepay_payment_tos_agree' => ['accepted'],
- 'debit_cards' => ['sometimes'],
- ];
-
- public function mount()
- {
- MultiDB::setDb($this->company->db);
-
- $user = User::find($this->user_id);
- $this->company = Company::query()->where('company_key', $this->company->company_key)->first();
-
- $this->fill([
- 'wepay_payment_tos_agree' => '',
- 'ach' => '',
- 'country' => 'US',
- 'user' => $user,
- 'first_name' => $user->first_name,
- 'last_name' => $user->last_name,
- 'email' => $user->email,
- 'company_name' => $this->company->present()->name(),
- 'saved' => ctrans('texts.confirm'),
- 'terms' => ''.ctrans('texts.terms_of_service').'',
- 'privacy_policy' => ''.ctrans('texts.privacy_policy').'',
- ]);
- }
-
- public function render()
- {
- return render('gateways.wepay.signup.wepay-signup');
- }
-
- public function submit()
- {
- MultiDB::setDb($this->company->db);
-
- $data = $this->validate($this->rules);
-
- //need to create or get a new WePay CompanyGateway
- $cg = CompanyGateway::query()->where('gateway_key', '8fdeed552015b3c7b44ed6c8ebd9e992')
- ->where('company_id', $this->company->id)
- ->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;
- $cg->require_billing_address = false;
- $cg->require_shipping_address = false;
- $cg->update_details = false;
- $cg->config = encrypt(config('ninja.testvars.checkout'));
- $cg->fees_and_limits = $fees_and_limits;
- $cg->token_billing = 'always';
- $cg->save();
- }
-
- $this->saved = ctrans('texts.processing');
-
- $wepay_driver = new WePayPaymentDriver($cg, null, null);
-
- $wepay = $wepay_driver->init()->wepay;
-
- $user_details = [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'email' => $data['email'],
- 'first_name' => $data['first_name'],
- 'last_name' => $data['last_name'],
- 'original_ip' => request()->ip(),
- 'original_device' => request()->server('HTTP_USER_AGENT'),
- 'tos_acceptance_time' => time(),
- 'redirect_uri' => route('wepay.finished'),
- 'scope' => 'manage_accounts,collect_payments,view_user,preapprove_payments,send_money',
- ];
-
- $wepay_user = $wepay->request('user/register/', $user_details);
-
- $access_token = $wepay_user->access_token;
-
- $access_token_expires = $wepay_user->expires_in ? (time() + $wepay_user->expires_in) : null;
-
- $wepay = new WePay($access_token);
-
- $account_details = [
- 'name' => $data['company_name'],
- 'description' => ctrans('texts.wepay_account_description'),
- 'theme_object' => json_decode('{"name":"Invoice Ninja","primary_color":"0b4d78","secondary_color":"0b4d78","background_color":"f8f8f8","button_color":"33b753"}'),
- 'callback_uri' => route('payment_webhook', ['company_key' => $this->company->company_key, 'company_gateway_id' => $cg->hashed_id]),
- 'rbits' => $this->company->rBits(),
- 'country' => $data['country'],
- ];
-
- if ($data['country'] == 'CA') {
- $account_details['currencies'] = ['CAD'];
- $account_details['country_options'] = ['debit_opt_in' => boolval($data['debit_cards'])];
- } elseif ($data['country'] == 'GB') {
- $account_details['currencies'] = ['GBP'];
- }
-
- $wepay_account = $wepay->request('account/create/', $account_details);
- $confirmation_required = false;
-
- try {
- $wepay->request('user/send_confirmation/', []);
- $confirmation_required = true;
- } catch (\WePayException $ex) {
- if ($ex->getMessage() == 'This access_token is already approved.') {
- $confirmation_required = false;
- } else {
-
- /** @phpstan-ignore-next-line */
- request()->session()->flash('message', $ex->getMessage());
- }
-
- nlog('failed in try catch ');
- nlog($ex->getMessage());
- }
-
- $config = [
- 'userId' => $wepay_user->user_id,
- 'accessToken' => $access_token,
- 'tokenType' => $wepay_user->token_type,
- 'tokenExpires' => $access_token_expires,
- 'accountId' => $wepay_account->account_id,
- 'state' => $wepay_account->state,
- 'testMode' => config('ninja.wepay.environment') == 'staging',
- 'country' => $data['country'],
- ];
-
- $cg->setConfig($config);
- $cg->save();
-
- if ($confirmation_required) {
-
- /** @phpstan-ignore-next-line **/
- 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/Notifications/Ninja/WePayFailureNotification.php b/app/Notifications/Ninja/WePayFailureNotification.php
deleted file mode 100644
index 74199a4eb1..0000000000
--- a/app/Notifications/Ninja/WePayFailureNotification.php
+++ /dev/null
@@ -1,79 +0,0 @@
-company_id = $company_id;
- }
-
- /**
- * Get the notification's delivery channels.
- *
- * @param mixed $notifiable
- * @return array
- */
- public function via($notifiable)
- {
- return ['slack'];
- }
-
- /**
- * Get the mail representation of the notification.
- *
- * @param mixed $notifiable
- *
- */
- public function toMail($notifiable)
- {
- }
-
- /**
- * Get the array representation of the notification.
- *
- * @param mixed $notifiable
- * @return array
- */
- public function toArray($notifiable)
- {
- return [
- //
- ];
- }
-
- public function toSlack($notifiable)
- {
- $ip = '';
-
- if (request()) {
- $ip = request()->getClientIp();
- }
-
- return (new SlackMessage())
- ->success()
- ->from(ctrans('texts.notification_bot'))
- ->image('https://app.invoiceninja.com/favicon.png')
- ->content("New WePay ACH Failure from Company ID: {$this->company_id} IP: {$ip}");
- }
-}
diff --git a/app/PaymentDrivers/Sample/resources/pay.blade.php b/app/PaymentDrivers/Sample/resources/pay.blade.php
index ea05015e1c..1734c9f328 100644
--- a/app/PaymentDrivers/Sample/resources/pay.blade.php
+++ b/app/PaymentDrivers/Sample/resources/pay.blade.php
@@ -45,7 +45,7 @@
@include('portal.ninja2020.gateways.includes.save_card')
- @include('portal.ninja2020.gateways.wepay.includes.credit_card')
+ @include('portal.ninja2020.gateways.stripe.includes.credit_card')
@include('portal.ninja2020.gateways.includes.pay_now')
diff --git a/app/PaymentDrivers/WePay/ACH.php b/app/PaymentDrivers/WePay/ACH.php
deleted file mode 100644
index d6dea4e464..0000000000
--- a/app/PaymentDrivers/WePay/ACH.php
+++ /dev/null
@@ -1,354 +0,0 @@
-wepay_payment_driver = $wepay_payment_driver;
- }
-
- public function authorizeView($data)
- {
- $data['gateway'] = $this->wepay_payment_driver;
- $data['country_code'] = $this->wepay_payment_driver?->client?->country ? $this->wepay_payment_driver->client->country->iso_3166_2 : $this->wepay_payment_driver->company_gateway->company->country()->iso_3166_2;
-
- return render('gateways.wepay.authorize.bank_transfer', $data);
- }
-
- public function authorizeResponse($request)
- {
- //https://developer.wepay.com/api/api-calls/credit_card#authorize
- $data = $request->all();
- // authorize the credit card
-
- //nlog($data);
- /*
- '_token' => '1Fk5CRj34up5ntKPvrFyMIAJhDdUNF3boqT3iIN3',
- 'company_gateway_id' => '39',
- 'payment_method_id' => '1',
- 'gateway_response' => NULL,
- 'is_default' => NULL,
- 'credit_card_id' => '180642154638',
- 'q' => '/client/payment_methods',
- 'method' => '1',
- */
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('payment_bank/persist', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'payment_bank_id' => (int) $data['bank_account_id'],
- ]);
- } catch (\Exception $e) {
- $this->wepay_payment_driver->sendFailureMail($e->getMessage());
-
- $message = [
- 'server_response' => $e->getMessage(),
- ];
-
- SystemLogger::dispatch(
- $e->getMessage(),
- SystemLog::CATEGORY_GATEWAY_RESPONSE,
- SystemLog::EVENT_GATEWAY_FAILURE,
- SystemLog::TYPE_WEPAY,
- $this->wepay_payment_driver->client,
- $this->wepay_payment_driver->client->company,
- );
-
- if (config('ninja.notification.slack')) {
- $this->wepay_payment_driver->company_gateway->company->notification(new WePayFailureNotification($this->wepay_payment_driver->company_gateway->company))->ninja();
- }
-
- throw new PaymentFailed($e->getMessage(), 400);
- }
- // display the response
- // nlog($response);
-
- if (in_array($response->state, ['new', 'pending', 'authorized'])) {
- $this->storePaymentMethod($response, GatewayType::BANK_TRANSFER);
-
- return redirect()->route('client.payment_methods.index');
- }
-
- throw new PaymentFailed('There was a problem adding this payment method.', 400);
- /*
- {
- "payment_bank_id": 12345,
- "bank_name": "Wells Fargo",
- "account_last_four": "6789",
- "state": "authorized"
- }
-
- state options: new, pending, authorized, disabled.
- */
- }
-
- /* If the bank transfer token is PENDING - we need to verify!! */
- //
-
- public function verificationView(ClientGatewayToken $token)
- {
- $this->wepay_payment_driver->init();
-
- $data = [
- 'token' => $token,
- 'gateway' => $this->wepay_payment_driver,
- ];
-
- return render('gateways.wepay.authorize.verify', $data);
- }
-
- /**
- {
- "client_id": 1234,
- "client_secret": "b1fc2f68-4d1f-4a",
- "payment_bank_id": 12345,
- "type": "microdeposits",
- "microdeposits": [
- 8,
- 12
- ]
- }
- */
- public function processVerification(Request $request, ClientGatewayToken $token)
- {
- $transactions = $request->input('transactions');
-
- $transformed_transactions = [];
-
- foreach ($transactions as $transaction) {
- $transformed_transactions[] = (int) $transaction;
- }
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('payment_bank/verify', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'payment_bank_id' => $token->token,
- 'type' => 'microdeposits',
- 'microdeposits' => $transformed_transactions,
- ]);
- } catch (\Exception $e) {
- nlog('we pay exception');
- nlog($e->getMessage());
-
- return redirect()->route('client.payment_methods.verification', ['payment_method' => $token->hashed_id, 'method' => GatewayType::BANK_TRANSFER])
- ->with('error', $e->getMessage());
- }
- /*
- {
- "payment_bank_id": 12345,
- "bank_name": "Wells Fargo",
- "account_last_four": "6789",
- "state": "authorized"
- }
- */
- nlog($response);
-
- //$meta = $token->meta;
- if ($response->state == 'authorized') {
- $meta = $token->meta;
- $meta->state = $response->state;
- $token->meta = $meta;
- $token->save();
-
- return redirect()->route('client.payment_methods.index');
- } else {
- return redirect()->route('client.payment_methods.verification', ['payment_method' => $token->hashed_id, 'method' => GatewayType::BANK_TRANSFER])
- ->with('error', ctrans('texts.verification_failed'));
- }
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////
- public function paymentView(array $data)
- {
- $data['gateway'] = $this->wepay_payment_driver;
- $data['currency'] = $this->wepay_payment_driver->client->getCurrencyCode();
- $data['payment_method_id'] = GatewayType::BANK_TRANSFER;
- $data['amount'] = $data['total']['amount_with_fee'];
-
- return render('gateways.wepay.bank_transfer', $data);
- }
-
- public function paymentResponse($request)
- {
- $token = ClientGatewayToken::query()->find($this->decodePrimaryKey($request->input('source')));
- $token_meta = $token->meta;
-
- if (! property_exists($token_meta, 'state') || $token_meta->state != 'authorized') {
- $response = $this->wepay_payment_driver->wepay->request('/payment_bank', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'payment_bank_id' => $token->token,
- ]);
-
- if ($response->state == 'authorized') {
- $meta = $token->meta;
- $meta->state = $response->state;
- $token->meta = $meta;
- $token->save();
- } else {
- return redirect()->route('client.payment_methods.verification', ['payment_method' => $token->hashed_id, 'method' => GatewayType::BANK_TRANSFER]);
- }
- }
-
- $app_fee = (config('ninja.wepay.fee_ach_multiplier') * $this->wepay_payment_driver->payment_hash->data->amount_with_fee) + config('ninja.wepay.fee_fixed');
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('checkout/create', [
- // 'callback_uri' => route('payment_webhook', ['company_key' => $this->wepay_payment_driver->company_gateway->company->company_key, 'company_gateway_id' => $this->wepay_payment_driver->company_gateway->hashed_id]),
- 'unique_id' => Str::random(40),
- 'account_id' => $this->wepay_payment_driver->company_gateway->getConfigField('accountId'),
- 'amount' => $this->wepay_payment_driver->payment_hash->data->amount_with_fee,
- 'currency' => $this->wepay_payment_driver->client->getCurrencyCode(),
- 'short_description' => 'Goods and Services',
- 'type' => 'goods',
- 'fee' => [
- 'fee_payer' => config('ninja.wepay.fee_payer'),
- 'app_fee' => $app_fee,
- ],
- 'payment_method' => [
- 'type' => 'payment_bank',
- 'payment_bank' => [
- 'id' => $token->token,
- ],
- ],
- ]);
- } catch (\Exception $e) {
- throw new PaymentFailed($e->getMessage(), 500);
- }
-
- /* Merge all data and store in the payment hash*/
- $state = [
- 'server_response' => $response,
- 'payment_hash' => $request->payment_hash,
- ];
-
- $state = array_merge($state, $request->all());
- $this->wepay_payment_driver->payment_hash->data = array_merge((array) $this->wepay_payment_driver->payment_hash->data, $state);
- $this->wepay_payment_driver->payment_hash->save();
-
- if (in_array($response->state, ['authorized', 'captured'])) {
- //success
- nlog('success');
- $payment_status = $response->state == 'authorized' ? Payment::STATUS_COMPLETED : Payment::STATUS_PENDING;
-
- return $this->processSuccessfulPayment($response, $payment_status, GatewayType::BANK_TRANSFER);
- }
-
- if (in_array($response->state, ['released', 'cancelled', 'failed', 'expired'])) {
- //some type of failure
- nlog('failure');
-
- $payment_status = $response->state == 'cancelled' ? Payment::STATUS_CANCELLED : Payment::STATUS_FAILED;
-
- $this->processUnSuccessfulPayment($response, $payment_status);
- }
- }
-
- private function storePaymentMethod($response, $payment_method_id)
- {
- $payment_meta = new \stdClass();
- $payment_meta->exp_month = (string) '';
- $payment_meta->exp_year = (string) '';
- $payment_meta->brand = (string) $response->bank_name;
- $payment_meta->last4 = (string) $response->account_last_four;
- $payment_meta->type = GatewayType::BANK_TRANSFER;
- $payment_meta->state = $response->state;
-
- $data = [
- 'payment_meta' => $payment_meta,
- 'token' => $response->payment_bank_id,
- 'payment_method_id' => $payment_method_id,
- ];
-
- $this->wepay_payment_driver->storeGatewayToken($data);
- }
-
- public function tokenBilling($token, $payment_hash)
- {
- $token_meta = $token->meta;
-
- if (! property_exists($token_meta, 'state') || $token_meta->state != 'authorized') {
- return redirect()->route('client.payment_methods.verification', ['payment_method' => $token->hashed_id, 'method' => GatewayType::BANK_TRANSFER]);
- }
-
- $amount = array_sum(array_column($this->wepay_payment_driver->payment_hash->invoices(), 'amount')) + $this->wepay_payment_driver->payment_hash->fee_total;
-
- $app_fee = (config('ninja.wepay.fee_cc_multiplier') * $amount) + config('ninja.wepay.fee_fixed');
-
- $response = $this->wepay_payment_driver->wepay->request('checkout/create', [
- 'unique_id' => Str::random(40),
- 'account_id' => $this->wepay_payment_driver->company_gateway->getConfigField('accountId'),
- 'amount' => $amount,
- 'currency' => $this->wepay_payment_driver->client->getCurrencyCode(),
- 'short_description' => 'Goods and Services',
- 'type' => 'goods',
- 'fee' => [
- 'fee_payer' => config('ninja.wepay.fee_payer'),
- 'app_fee' => $app_fee,
- ],
- 'payment_method' => [
- 'type' => 'payment_bank',
- 'payment_bank' => [
- 'id' => $token->token,
- ],
- ],
- ]);
-
- /* Merge all data and store in the payment hash*/
- $state = [
- 'server_response' => $response,
- 'payment_hash' => $this->wepay_payment_driver->payment_hash,
- ];
-
- $this->wepay_payment_driver->payment_hash->data = array_merge((array) $this->wepay_payment_driver->payment_hash->data, $state);
- $this->wepay_payment_driver->payment_hash->save();
-
- if (in_array($response->state, ['authorized', 'captured'])) {
- //success
- nlog('success');
- $payment_status = $response->state == 'authorized' ? Payment::STATUS_COMPLETED : Payment::STATUS_PENDING;
-
- return $this->processSuccessfulPayment($response, $payment_status, GatewayType::BANK_TRANSFER, true);
- }
-
- if (in_array($response->state, ['released', 'cancelled', 'failed', 'expired'])) {
- //some type of failure
- nlog('failure');
-
- $payment_status = $response->state == 'cancelled' ? Payment::STATUS_CANCELLED : Payment::STATUS_FAILED;
-
- $this->processUnSuccessfulPayment($response, $payment_status);
- }
- }
-}
diff --git a/app/PaymentDrivers/WePay/CreditCard.php b/app/PaymentDrivers/WePay/CreditCard.php
deleted file mode 100644
index 2e15012d7c..0000000000
--- a/app/PaymentDrivers/WePay/CreditCard.php
+++ /dev/null
@@ -1,346 +0,0 @@
-wepay_payment_driver = $wepay_payment_driver;
- }
-
- public function authorizeView($data)
- {
- $data['gateway'] = $this->wepay_payment_driver;
- $data['country_code'] = $this->wepay_payment_driver?->client?->country ? $this->wepay_payment_driver->client->country->iso_3166_2 : $this->wepay_payment_driver->company_gateway->company->country()->iso_3166_2;
-
- return render('gateways.wepay.authorize.authorize', $data);
- }
-
- public function authorizeResponse($request)
- {
- //https://developer.wepay.com/api/api-calls/credit_card#authorize
- $data = $request->all();
- // authorize the credit card
-
- // nlog($data);
- /*
- '_token' => '1Fk5CRj34up5ntKPvrFyMIAJhDdUNF3boqT3iIN3',
- 'company_gateway_id' => '39',
- 'payment_method_id' => '1',
- 'gateway_response' => NULL,
- 'is_default' => NULL,
- 'credit_card_id' => '180642154638',
- 'q' => '/client/payment_methods',
- 'method' => '1',
- */
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('credit_card/authorize', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'credit_card_id' => (int) $data['credit_card_id'],
- ]);
- } catch (\Exception $e) {
- return $this->wepay_payment_driver->processInternallyFailedPayment($this->wepay_payment_driver, $e);
- }
- // display the response
- // nlog($response);
-
- if (in_array($response->state, ['new', 'authorized'])) {
- $this->storePaymentMethod($response, GatewayType::CREDIT_CARD);
-
- return redirect()->route('client.payment_methods.index');
- }
-
- throw new PaymentFailed('There was a problem adding this payment method.', 400);
- /*
- [credit_card_id] => 348084962473
- [credit_card_name] => Visa xxxxxx4018
- [state] => authorized
- [user_name] => Joey Diaz
- [email] => user@example.com
- [create_time] => 1623798172
- [expiration_month] => 10
- [expiration_year] => 2023
- [last_four] => 4018
- [input_source] => card_keyed
- [virtual_terminal_mode] => none
- [card_on_file] =>
- [recurring] =>
- [cvv_provided] => 1
- [auto_update] =>
- */
- }
-
- public function paymentView(array $data)
- {
- $data['gateway'] = $this->wepay_payment_driver;
- $data['description'] = ctrans('texts.invoices').': '.collect($data['invoices'])->pluck('invoice_number');
- $data['country_code'] = $this->wepay_payment_driver?->client?->country ? $this->wepay_payment_driver->client->country->iso_3166_2 : $this->wepay_payment_driver->company_gateway->company()->iso_3166_2;
-
- return render('gateways.wepay.credit_card.pay', $data);
- }
-
- public function paymentResponse(PaymentResponseRequest $request)
- {
- nlog('payment response');
-
- //it could be an existing token or a new credit_card_id that needs to be converted into a wepay token
- if ($request->has('credit_card_id') && $request->input('credit_card_id')) {
- nlog('authorize the card first!');
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('credit_card/authorize', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'credit_card_id' => (int) $request->input('credit_card_id'),
- ]);
- } catch (\Exception $e) {
- return $this->wepay_payment_driver->processInternallyFailedPayment($this->wepay_payment_driver, $e);
- }
-
- $credit_card_id = (int) $response->credit_card_id;
-
- if (in_array($response->state, ['new', 'authorized']) && boolval($request->input('store_card'))) {
- $this->storePaymentMethod($response, GatewayType::CREDIT_CARD);
- }
- } else {
- $credit_card_id = (int) $request->input('token');
- }
-
- // USD, CAD, and GBP.
- // nlog($request->all());
-
- $app_fee = (config('ninja.wepay.fee_cc_multiplier') * $this->wepay_payment_driver->payment_hash->data->amount_with_fee) + config('ninja.wepay.fee_fixed');
- // charge the credit card
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('checkout/create', [
- 'unique_id' => Str::random(40),
- 'account_id' => $this->wepay_payment_driver->company_gateway->getConfigField('accountId'),
- 'amount' => $this->wepay_payment_driver->payment_hash->data->amount_with_fee,
- 'currency' => $this->wepay_payment_driver->client->getCurrencyCode(),
- 'short_description' => 'Goods and services',
- 'type' => 'goods',
- 'fee' => [
- 'fee_payer' => config('ninja.wepay.fee_payer'),
- 'app_fee' => $app_fee,
- ],
- 'payment_method' => [
- 'type' => 'credit_card',
- 'credit_card' => [
- 'id' => $credit_card_id,
- ],
- ],
- ]);
- } catch (\Exception $e) {
- $this->wepay_payment_driver->sendFailureMail($e->getMessage());
-
- $message = [
- 'server_response' => $e->getMessage(),
- 'data' => $this->wepay_payment_driver->payment_hash->data,
- ];
-
- SystemLogger::dispatch(
- $e->getMessage(),
- SystemLog::CATEGORY_GATEWAY_RESPONSE,
- SystemLog::EVENT_GATEWAY_FAILURE,
- SystemLog::TYPE_WEPAY,
- $this->wepay_payment_driver->client,
- $this->wepay_payment_driver->client->company,
- );
-
- throw new PaymentFailed($e->getMessage(), 500);
- }
-
- /* Merge all data and store in the payment hash*/
- $state = [
- 'server_response' => $response,
- 'payment_hash' => $request->payment_hash,
- ];
-
- $state = array_merge($state, $request->all());
- $this->wepay_payment_driver->payment_hash->data = array_merge((array) $this->wepay_payment_driver->payment_hash->data, $state);
- $this->wepay_payment_driver->payment_hash->save();
-
- if (in_array($response->state, ['authorized', 'captured'])) {
- //success
- nlog('success');
- $payment_status = $response->state == 'authorized' ? Payment::STATUS_COMPLETED : Payment::STATUS_PENDING;
-
- return $this->processSuccessfulPayment($response, $payment_status, GatewayType::CREDIT_CARD);
- }
-
- if (in_array($response->state, ['released', 'cancelled', 'failed', 'expired'])) {
- //some type of failure
- nlog('failure');
-
- $payment_status = $response->state == 'cancelled' ? Payment::STATUS_CANCELLED : Payment::STATUS_FAILED;
-
- $this->processUnSuccessfulPayment($response, $payment_status);
- }
- }
-
- /*
- new The checkout was created by the application. This state typically indicates that checkouts created in WePay's hosted checkout flow are waiting for the payer to submit their information.
- authorized The payer entered their payment info and confirmed the payment on WePay. WePay has successfully charged the card.
- captured The payment has been reserved from the payer.
- released The payment has been credited to the payee account. Note that the released state may be active although there are active partial refunds or partial chargebacks.
- cancelled The payment has been cancelled by the payer, payee, or application.
- refunded The payment was captured and then refunded by the payer, payee, or application. The payment has been debited from the payee account.
- charged back The payment has been charged back by the payer and the payment has been debited from the payee account.
- failed The payment has failed.
- expired Checkouts expire if they remain in the new state for more than 30 minutes (e.g., they have been abandoned).
- */
-
- /*
- https://developer.wepay.com/api/api-calls/checkout
- {
- "checkout_id": 649945633,
- "account_id": 1548718026,
- "type": "donation",
- "short_description": "test checkout",
- "currency": "USD",
- "amount": 20,
- "state": "authorized",
- "soft_descriptor": "WPY*Wolverine",
- "auto_release": true,
- "create_time": 1463589958,
- "gross": 20.88,
- "reference_id": null,
- "callback_uri": null,
- "long_description": null,
- "delivery_type": null,
- "initiated_by": "merchant",
- "in_review": false,
- "fee": {
- "app_fee": 0,
- "processing_fee": 0.88,
- "fee_payer": "payer"
- },
- "chargeback": {
- "amount_charged_back": 0,
- "dispute_uri": null
- },
- "refund": {
- "amount_refunded": 0,
- "refund_reason": null
- },
- "payment_method": {
- "type": "credit_card",
- "credit_card": {
- "id": 1684847614,
- "data": {
- "emv_receipt": null,
- "signature_url": null
- },
- "auto_release": false
- }
- },
- "hosted_checkout": null,
- "payer": {
- "email": "test@example.com",
- "name": "Mr Smith",
- "home_address": null
- },
- "npo_information": null,
- "payment_error": null
- }
- */
-
- private function storePaymentMethod($response, $payment_method_id)
- {
- nlog('storing card');
-
- $payment_meta = new \stdClass();
- $payment_meta->exp_month = (string) $response->expiration_month;
- $payment_meta->exp_year = (string) $response->expiration_year;
- $payment_meta->brand = (string) $response->credit_card_name;
- $payment_meta->last4 = (string) $response->last_four;
- $payment_meta->type = GatewayType::CREDIT_CARD;
-
- $data = [
- 'payment_meta' => $payment_meta,
- 'token' => $response->credit_card_id,
- 'payment_method_id' => $payment_method_id,
- ];
-
- $this->wepay_payment_driver->storeGatewayToken($data);
- }
-
- public function tokenBilling($cgt, $payment_hash)
- {
- $amount = array_sum(array_column($this->wepay_payment_driver->payment_hash->invoices(), 'amount')) + $this->wepay_payment_driver->payment_hash->fee_total;
-
- $app_fee = (config('ninja.wepay.fee_cc_multiplier') * $amount) + config('ninja.wepay.fee_fixed');
- // charge the credit card
- $response = $this->wepay_payment_driver->wepay->request('checkout/create', [
- 'unique_id' => Str::random(40),
- 'account_id' => $this->wepay_payment_driver->company_gateway->getConfigField('accountId'),
- 'amount' => $amount,
- 'currency' => $this->wepay_payment_driver->client->getCurrencyCode(),
- 'short_description' => 'Goods and services',
- 'type' => 'goods',
- 'fee' => [
- 'fee_payer' => config('ninja.wepay.fee_payer'),
- 'app_fee' => $app_fee,
- ],
- 'payment_method' => [
- 'type' => 'credit_card',
- 'credit_card' => [
- 'id' => $cgt->token,
- ],
- ],
- ]);
-
- /* Merge all data and store in the payment hash*/
- $state = [
- 'server_response' => $response,
- 'payment_hash' => $payment_hash,
- ];
-
- $this->wepay_payment_driver->payment_hash->data = array_merge((array) $this->wepay_payment_driver->payment_hash->data, $state);
- $this->wepay_payment_driver->payment_hash->save();
-
- if (in_array($response->state, ['authorized', 'captured'])) {
- //success
- nlog('success');
- $payment_status = $response->state == 'authorized' ? Payment::STATUS_COMPLETED : Payment::STATUS_PENDING;
-
- return $this->processSuccessfulPayment($response, $payment_status, GatewayType::CREDIT_CARD, true);
- }
-
- if (in_array($response->state, ['released', 'cancelled', 'failed', 'expired'])) {
- //some type of failure
- nlog('failure');
-
- $payment_status = $response->state == 'cancelled' ? Payment::STATUS_CANCELLED : Payment::STATUS_FAILED;
-
- $this->processUnSuccessfulPayment($response, $payment_status);
- }
- }
-}
diff --git a/app/PaymentDrivers/WePay/Setup.php b/app/PaymentDrivers/WePay/Setup.php
deleted file mode 100644
index 19b04e95c2..0000000000
--- a/app/PaymentDrivers/WePay/Setup.php
+++ /dev/null
@@ -1,34 +0,0 @@
-wepay = $wepay;
- }
-
- public function boot($data)
- {
- /*
- 'user_id',
- 'user_company',
- */
-
- return render('gateways.wepay.signup.index', $data);
- }
-}
diff --git a/app/PaymentDrivers/WePay/WePayCommon.php b/app/PaymentDrivers/WePay/WePayCommon.php
deleted file mode 100644
index ab3365f416..0000000000
--- a/app/PaymentDrivers/WePay/WePayCommon.php
+++ /dev/null
@@ -1,75 +0,0 @@
- $payment_type,
- 'amount' => $response->amount,
- 'transaction_reference' => $response->checkout_id,
- 'gateway_type_id' => $gateway_type,
- ];
-
- $payment = $this->wepay_payment_driver->createPayment($data, $payment_status);
-
- SystemLogger::dispatch(
- ['response' => $this->wepay_payment_driver->payment_hash->data->server_response, 'data' => $data],
- SystemLog::CATEGORY_GATEWAY_RESPONSE,
- SystemLog::EVENT_GATEWAY_SUCCESS,
- SystemLog::TYPE_WEPAY,
- $this->wepay_payment_driver->client,
- $this->wepay_payment_driver->client->company,
- );
-
- if ($return_payment) {
- return $payment;
- }
-
- return redirect()->route('client.payments.show', ['payment' => $this->wepay_payment_driver->encodePrimaryKey($payment->id)]);
- }
-
- private function processUnSuccessfulPayment($response, $payment_status)
- {
- $this->wepay_payment_driver->sendFailureMail($response->state);
-
- $message = [
- 'server_response' => $response,
- 'data' => $this->wepay_payment_driver->payment_hash->data,
- ];
-
- SystemLogger::dispatch(
- $message,
- SystemLog::CATEGORY_GATEWAY_RESPONSE,
- SystemLog::EVENT_GATEWAY_FAILURE,
- SystemLog::TYPE_WEPAY,
- $this->wepay_payment_driver->client,
- $this->wepay_payment_driver->client->company,
- );
-
- throw new PaymentFailed('Failed to process the payment.', 500);
- }
-}
diff --git a/app/PaymentDrivers/WePayPaymentDriver.php b/app/PaymentDrivers/WePayPaymentDriver.php
index 4b7254344e..2cd93f7905 100644
--- a/app/PaymentDrivers/WePayPaymentDriver.php
+++ b/app/PaymentDrivers/WePayPaymentDriver.php
@@ -17,13 +17,12 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentHash;
use App\Models\SystemLog;
-use App\PaymentDrivers\WePay\ACH;
-use App\PaymentDrivers\WePay\CreditCard;
-use App\PaymentDrivers\WePay\Setup;
use App\Utils\Traits\MakesHash;
use Illuminate\Http\Request;
-use WePay;
+/**
+ * @deprecated 5.9
+ */
class WePayPaymentDriver extends BaseDriver
{
use MakesHash;
@@ -45,27 +44,14 @@ class WePayPaymentDriver extends BaseDriver
/* Maps the Payment Gateway Type - to its implementation */
public static $methods = [
- GatewayType::CREDIT_CARD => CreditCard::class,
- GatewayType::BANK_TRANSFER => ACH::class,
];
public const SYSTEM_LOG_TYPE = SystemLog::TYPE_WEPAY;
public function init()
{
- if (WePay::getEnvironment() == 'none') {
- if (config('ninja.wepay.environment') == 'staging') {
- WePay::useStaging(config('ninja.wepay.client_id'), config('ninja.wepay.client_secret'));
- } else {
- WePay::useProduction(config('ninja.wepay.client_id'), config('ninja.wepay.client_secret'));
- }
- }
+ throw new \Exception("Gateway no longer supported", 500);
- if ($this->company_gateway) {
- $this->wepay = new WePay($this->company_gateway->getConfigField('accessToken'));
- } else {
- $this->wepay = new WePay(null);
- }
return $this;
}
@@ -93,7 +79,6 @@ class WePayPaymentDriver extends BaseDriver
*/
public function setup(array $data)
{
- return (new Setup($this))->boot($data);
}
/**
@@ -168,140 +153,17 @@ class WePayPaymentDriver extends BaseDriver
public function processWebhookRequest(PaymentWebhookRequest $request, Payment $payment = null)
{
$this->init();
-
- $input = $request->all();
-
- $config = $this->company_gateway->getConfig();
-
- $accountId = $this->company_gateway->getConfigField('accountId');
- $objectId = false;
- $objectType = '';
-
- foreach (array_keys($input) as $key) {
- if ('_id' == substr($key, -3)) {
- $objectType = substr($key, 0, -3);
- $objectId = $input[$key];
- break;
- }
- }
-
- if (! $objectId) {
- throw new \Exception('Could not find object id parameter');
- }
-
- if ($objectType == 'credit_card') {
- $payment_method = ClientGatewayToken::where('token', $objectId)->first();
-
- if (! $payment_method) {
- throw new \Exception('Unknown payment method');
- }
-
- $source = $this->wepay->request('credit_card', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'credit_card_id' => (int) $objectId,
- ]);
-
- if ($source->state == 'deleted') {
- $payment_method->delete();
- } else {
- //$this->paymentService->convertPaymentMethodFromWePay($source, null, $paymentMethod)->save();
- }
-
- return 'Processed successfully';
- } elseif ($objectType == 'account') {
- if ($accountId != $objectId) {
- throw new \Exception('Unknown account '.$accountId.' does not equal '.$objectId);
- }
-
- $wepayAccount = $this->wepay->request('account', [
- 'account_id' => (int) $objectId,
- ]);
-
- if ($wepayAccount->state == 'deleted') {
- $this->company_gateway->delete();
- } else {
- $config->state = $wepayAccount->state;
- $this->company_gateway->setConfig($config);
- $this->company_gateway->save();
- }
-
- return ['message' => 'Processed successfully'];
- } elseif ($objectType == 'checkout') {
- /** @var \App\Models\Payment $payment */
- $payment = Payment::where('company_id', $this->company_gateway->company_id)
- ->where('transaction_reference', '=', $objectId)
- ->first();
-
- if (! $payment) {
- throw new \Exception('Unknown payment');
- }
-
- if ($payment->is_deleted) {
- throw new \Exception('Payment is deleted');
- }
-
- $checkout = $this->wepay->request('checkout', [
- 'checkout_id' => intval($objectId),
- ]);
-
- if ($checkout->state == 'captured') {
- $payment->status_id = Payment::STATUS_COMPLETED;
- $payment->save();
- } elseif ($checkout->state == 'cancelled') {
- $payment->service()->deletePayment()->save();
- } elseif ($checkout->state == 'failed') {
- $payment->status_id = Payment::STATUS_FAILED;
- $payment->save();
- }
-
- return 'Processed successfully';
- } else {
- return 'Ignoring event';
- }
-
- return true;
}
public function refund(Payment $payment, $amount, $return_client_response = false)
{
$this->init();
- $response = $this->wepay->request('checkout/refund', [
- 'checkout_id' => $payment->transaction_reference,
- 'refund_reason' => 'Refund by merchant',
- 'amount' => $amount,
- ]);
-
- return [
- 'transaction_reference' => $response->checkout_id,
- 'transaction_response' => json_encode($response),
- 'success' => $response->state == 'refunded' ? true : false,
- 'description' => 'refund',
- 'code' => 0,
- ];
}
public function detach(ClientGatewayToken $token)
{
- /*Bank accounts cannot be deleted - only CC*/
- if ($token->gateway_type_id == 2) {
- return true;
- }
-
- $this->init();
-
- $response = $this->wepay->request('/credit_card/delete', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'credit_card_id' => intval($token->token),
- ]);
-
- if ($response->state == 'deleted') {
- return true;
- } else {
- throw new \Exception(trans('texts.failed_remove_payment_method'));
- }
+
}
public function getClientRequiredFields(): array
diff --git a/composer.json b/composer.json
index 90fcc62845..801f0decb2 100644
--- a/composer.json
+++ b/composer.json
@@ -86,7 +86,6 @@
"sentry/sentry-laravel": "^3",
"setasign/fpdf": "^1.8",
"setasign/fpdi": "^2.3",
- "shopify/shopify-api": "^4.3",
"socialiteproviders/apple": "dev-master",
"socialiteproviders/microsoft": "^4.1",
"spatie/laravel-data": "^3.5",
@@ -102,7 +101,6 @@
"twig/twig": "^3",
"twilio/sdk": "^6.40",
"webpatser/laravel-countries": "dev-master#75992ad",
- "wepay/php-sdk": "^0.3",
"wildbit/postmark-php": "^4.0",
"hyvor/php-json-exporter": "^0.0.3",
"invoiceninja/einvoice": "dev-main",
diff --git a/composer.lock b/composer.lock
index 690aa59029..08e04f6681 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "099e6ca9def262b87d6fbecb734f6c5d",
+ "content-hash": "4a46c646e01374b4a5aaff1875fa9975",
"packages": [
{
"name": "adrienrn/php-mimetyper",
@@ -11693,69 +11693,6 @@
],
"time": "2023-12-11T16:03:32+00:00"
},
- {
- "name": "shopify/shopify-api",
- "version": "v4.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Shopify/shopify-api-php.git",
- "reference": "80cde593a69acb9b9095235fa8f7748e9389294c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Shopify/shopify-api-php/zipball/80cde593a69acb9b9095235fa8f7748e9389294c",
- "reference": "80cde593a69acb9b9095235fa8f7748e9389294c",
- "shasum": ""
- },
- "require": {
- "doctrine/inflector": "^2.0",
- "ext-json": "*",
- "firebase/php-jwt": "^5.2 || ^6.2",
- "guzzlehttp/guzzle": "^7.0",
- "php": "^7.4 || ^8.0 || ^8.1",
- "psr/http-client": "^1.0",
- "psr/log": "^1.1 || ^2.0 || ^3.0",
- "ramsey/uuid": "^4.1"
- },
- "require-dev": {
- "mikey179/vfsstream": "^1.6",
- "phpunit/phpunit": "^9",
- "squizlabs/php_codesniffer": "^3.6"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Shopify\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Shopify Inc.",
- "email": "dev-tools-education@shopify.com"
- }
- ],
- "description": "Shopify API Library for PHP",
- "keywords": [
- "Storefront API",
- "admin api",
- "app",
- "graphql",
- "jwt",
- "node",
- "rest",
- "shopify",
- "webhook"
- ],
- "support": {
- "issues": "https://github.com/Shopify/shopify-api-php/issues",
- "source": "https://github.com/Shopify/shopify-api-php/tree/v4.3.0"
- },
- "time": "2023-04-12T15:42:26+00:00"
- },
{
"name": "smalot/pdfparser",
"version": "v0.19.0",
@@ -16428,57 +16365,6 @@
},
"time": "2023-02-08T11:09:34+00:00"
},
- {
- "name": "wepay/php-sdk",
- "version": "0.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/wepay/PHP-SDK.git",
- "reference": "2a89ceb2954d117d082f869d3bfcb7864e6c2a7d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/wepay/PHP-SDK/zipball/2a89ceb2954d117d082f869d3bfcb7864e6c2a7d",
- "reference": "2a89ceb2954d117d082f869d3bfcb7864e6c2a7d",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "wepay.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "WePay",
- "email": "api@wepay.com"
- }
- ],
- "description": "WePay APIv2 SDK for PHP",
- "keywords": [
- "payment",
- "sdk",
- "wepay"
- ],
- "support": {
- "issues": "https://github.com/wepay/PHP-SDK/issues",
- "source": "https://github.com/wepay/PHP-SDK/tree/master"
- },
- "time": "2017-01-21T07:03:26+00:00"
- },
{
"name": "wildbit/postmark-php",
"version": "v4.0.5",
diff --git a/routes/web.php b/routes/web.php
index 68878ac686..1d56f5d883 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -13,7 +13,6 @@ use App\Http\Controllers\Gateways\Mollie3dsController;
use App\Http\Controllers\SetupController;
use App\Http\Controllers\StripeConnectController;
use App\Http\Controllers\UserController;
-use App\Http\Controllers\WePayController;
use Illuminate\Support\Facades\Route;
Route::get('/', [BaseController::class, 'flutterRoute'])->middleware('guest');
@@ -31,9 +30,6 @@ Route::post('password/email', [ForgotPasswordController::class, 'sendResetLinkEm
Route::get('password/reset/{token}', [ResetPasswordController::class, 'showResetForm'])->middleware(['domain_db', 'email_db'])->name('password.reset');
Route::post('password/reset', [ResetPasswordController::class, 'reset'])->middleware('email_db')->name('password.update');
-Route::get('wepay/signup/{token}', [WePayController::class, 'signup'])->name('wepay.signup');
-Route::get('wepay/finished', [WePayController::class, 'finished'])->name('wepay.finished');
-
Route::get('auth/{provider}', [LoginController::class, 'redirectToProvider']);
Route::middleware('url_db')->group(function () {