mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
add package
This commit is contained in:
parent
2b29d4c7b8
commit
f3b4bd5705
55
app/PaymentDrivers/Rotessa/DataProviders/CAProvinces.php
Normal file
55
app/PaymentDrivers/Rotessa/DataProviders/CAProvinces.php
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers\Rotessa\DataProviders;
|
||||||
|
|
||||||
|
final class CAProvinces {
|
||||||
|
/**
|
||||||
|
* The provinces and territories of Canada
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected static $provinces = [
|
||||||
|
'AB' => 'Alberta',
|
||||||
|
'BC' => 'British Columbia',
|
||||||
|
'MB' => 'Manitoba',
|
||||||
|
'NB' => 'New Brunswick',
|
||||||
|
'NL' => 'Newfoundland And Labrador',
|
||||||
|
'NS' => 'Nova Scotia',
|
||||||
|
'ON' => 'Ontario',
|
||||||
|
'PE' => 'Prince Edward Island',
|
||||||
|
'QC' => 'Quebec',
|
||||||
|
'SK' => 'Saskatchewan',
|
||||||
|
'NT' => 'Northwest Territories',
|
||||||
|
'NU' => 'Nunavut',
|
||||||
|
'YT' => 'Yukon'
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the name of the province or territory for a given abbreviation.
|
||||||
|
*
|
||||||
|
* @param string $abbreviation
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getName($abbreviation) {
|
||||||
|
return self::$provinces[$abbreviation];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all provinces and territories.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function get() {
|
||||||
|
return self::$provinces;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the abbreviation for a given province or territory name.
|
||||||
|
*
|
||||||
|
* @param string $name
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getAbbreviation($name) {
|
||||||
|
return array_search(ucwords($name), self::$provinces);
|
||||||
|
}
|
||||||
|
}
|
19
app/PaymentDrivers/Rotessa/DataProviders/Frequencies.php
Normal file
19
app/PaymentDrivers/Rotessa/DataProviders/Frequencies.php
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers\Rotessa\DataProviders;
|
||||||
|
|
||||||
|
use Omnipay\Rotessa\Object\Frequency;
|
||||||
|
|
||||||
|
final class Frequencies
|
||||||
|
{
|
||||||
|
public static function get() : array {
|
||||||
|
return Frequency::getTypes();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getFromType() {
|
||||||
|
|
||||||
|
}
|
||||||
|
public static function getOnePayment() {
|
||||||
|
return Frequency::ONCE;
|
||||||
|
}
|
||||||
|
}
|
11
app/PaymentDrivers/Rotessa/Events/CacheGateways.php
Normal file
11
app/PaymentDrivers/Rotessa/Events/CacheGateways.php
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers\Rotessa\Events;
|
||||||
|
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
use Illuminate\Foundation\Events\Dispatchable;
|
||||||
|
|
||||||
|
class CacheGateways
|
||||||
|
{
|
||||||
|
use SerializesModels, Dispatchable;
|
||||||
|
}
|
6
app/PaymentDrivers/Rotessa/Helpers/helpers.php
Normal file
6
app/PaymentDrivers/Rotessa/Helpers/helpers.php
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
include app_path("PaymentDrivers/Rotessa/vendor/autoload.php");
|
||||||
|
|
||||||
|
class_alias("App\\PaymentDrivers\\Rotessa\\PaymentMethod","App\\PaymentDrivers\\Rotessa\\BankTransfer");
|
||||||
|
class_alias("App\\PaymentDrivers\\Rotessa\\PaymentMethod","App\\PaymentDrivers\\Rotessa\\ACH");
|
28
app/PaymentDrivers/Rotessa/Listeners/CacheGateways.php
Normal file
28
app/PaymentDrivers/Rotessa/Listeners/CacheGateways.php
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers\Rotessa\Listeners;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Models\Gateway;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use App\PaymentDrivers\Rotessa\Events\CacheGateways as Event;
|
||||||
|
use App\PaymentDrivers\Rotessa\Models\Gateway as RotessaGateway;
|
||||||
|
|
||||||
|
class CacheGateways
|
||||||
|
{
|
||||||
|
public function handle(Event $event)
|
||||||
|
{
|
||||||
|
|
||||||
|
$gateways = Cache::get('gateways');
|
||||||
|
if (empty($gateways) || $gateways->where('name', 'Rotessa')->isEmpty()) {
|
||||||
|
$gateways = Gateway::orderBy('id')->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
$gateways = $gateways->map(fn($item) => $item->name == 'Rotessa'? RotessaGateway::find($item->toArray()['id']) : $item );
|
||||||
|
|
||||||
|
Cache::forever('gateways', $gateways);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
23
app/PaymentDrivers/Rotessa/Models/Gateway.php
Normal file
23
app/PaymentDrivers/Rotessa/Models/Gateway.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers\Rotessa\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use App\Models\Gateway as BaseGateway;
|
||||||
|
|
||||||
|
class Gateway extends BaseGateway
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getOptionsAttribute()
|
||||||
|
{
|
||||||
|
$gateway_types = config('rotessa.gateway_types');
|
||||||
|
$options = parent::getOptionsAttribute();
|
||||||
|
if($this->name == 'Rotessa' && empty($options)) {
|
||||||
|
$options = $gateway_types;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $options;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
261
app/PaymentDrivers/Rotessa/PaymentMethod.php
Executable file
261
app/PaymentDrivers/Rotessa/PaymentMethod.php
Executable file
@ -0,0 +1,261 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers\Rotessa;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use App\Models\Payment;
|
||||||
|
use App\Models\SystemLog;
|
||||||
|
use Illuminate\View\View;
|
||||||
|
use App\Models\GatewayType;
|
||||||
|
use App\Models\PaymentType;
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Jobs\Util\SystemLogger;
|
||||||
|
use App\Exceptions\PaymentFailed;
|
||||||
|
use App\Models\ClientGatewayToken;
|
||||||
|
use Illuminate\Http\RedirectResponse;
|
||||||
|
use App\PaymentDrivers\Rotessa\Resources\Customer;
|
||||||
|
use App\PaymentDrivers\RotessaPaymentDriver;
|
||||||
|
use App\PaymentDrivers\Common\MethodInterface;
|
||||||
|
use App\PaymentDrivers\Rotessa\Resources\Transaction;
|
||||||
|
use App\PaymentDrivers\Rotessa\DataProviders\Frequencies;
|
||||||
|
use Omnipay\Common\Exception\InvalidRequestException;
|
||||||
|
use Omnipay\Common\Exception\InvalidResponseException;
|
||||||
|
use App\Exceptions\Ninja\ClientPortalAuthorizationException;
|
||||||
|
use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest;
|
||||||
|
|
||||||
|
class PaymentMethod implements MethodInterface
|
||||||
|
{
|
||||||
|
protected RotessaPaymentDriver $rotessa;
|
||||||
|
|
||||||
|
public function __construct(RotessaPaymentDriver $rotessa)
|
||||||
|
{
|
||||||
|
$this->rotessa = $rotessa;
|
||||||
|
$this->rotessa->init();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the authorization page for Rotessa.
|
||||||
|
*
|
||||||
|
* @param array $data
|
||||||
|
* @return \Illuminate\View\View
|
||||||
|
*/
|
||||||
|
public function authorizeView(array $data): View
|
||||||
|
{
|
||||||
|
$data['contact'] = collect($data['client']->contacts->firstWhere('is_primary', 1)->toArray())->merge([
|
||||||
|
'home_phone' => $data['client']->phone,
|
||||||
|
'custom_identifier' => $data['client']->number . substr(uniqid(),0,4),
|
||||||
|
'name' => $data['client']->name,
|
||||||
|
'id' => null
|
||||||
|
] )->all();
|
||||||
|
$data['gateway'] = $this->rotessa;
|
||||||
|
$data['gateway_type_id'] = (int) request('method');
|
||||||
|
$data['account'] = [
|
||||||
|
'routing_number' => $data['client']->routing_id,
|
||||||
|
'country' => $data['client']->country->iso_3166_2
|
||||||
|
];
|
||||||
|
$data['address'] = collect($data['client']->toArray())->merge(['country' => $data['client']->country->iso_3166_2 ])->all();
|
||||||
|
|
||||||
|
return view('rotessa::bank_transfer.authorize', $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function findOrCreateCustomer(Request $request)
|
||||||
|
{
|
||||||
|
$result = null; $data = [];
|
||||||
|
$customer = new Customer(
|
||||||
|
$request->merge(['id' => $request->input('id') ] +
|
||||||
|
['address' => $request->only('address_1','address_2','city','postal_code','province_code','country') ])->all()
|
||||||
|
);
|
||||||
|
try {
|
||||||
|
$existing = ClientGatewayToken::query()
|
||||||
|
->where('company_gateway_id', $this->rotessa->company_gateway->id)
|
||||||
|
->where('client_id', $this->rotessa->client->id)
|
||||||
|
->first();
|
||||||
|
$data = array_filter(Arr::except($customer->jsonSerialize(),['custom_identifier']));
|
||||||
|
if ($existing && $existing->token == encrypt($data)) return $existing->gateway_customer_reference;
|
||||||
|
|
||||||
|
$result = $this->rotessa->gateway->authorize($customer->resolve())->send();
|
||||||
|
if ($result->isSuccessful()) {
|
||||||
|
$customer = new Customer($result->getData());
|
||||||
|
$data = array_filter(Arr::except($customer->jsonSerialize(),['custom_identifier']));
|
||||||
|
$this->rotessa->storeGatewayToken( [
|
||||||
|
'payment_meta' => $customer->resolve() + ['brand' => 'Rotessa'],
|
||||||
|
'token' => encrypt($data),
|
||||||
|
'payment_method_id' => (int) $request->input("gateway_type_id"),
|
||||||
|
], ['gateway_customer_reference' =>
|
||||||
|
$result->getParameter('id')
|
||||||
|
, 'routing_number' => $result->getParameter('routing_number') ?? $result->getParameter('transit_number')]);
|
||||||
|
|
||||||
|
return $result->getParameter('id');
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \Exception($result->getMessage(), (int) $result->getCode());
|
||||||
|
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
$data = [
|
||||||
|
'transaction_reference' => null,
|
||||||
|
'transaction_response' => $th->getMessage(),
|
||||||
|
'success' => false,
|
||||||
|
'description' => $th->getMessage(),
|
||||||
|
'code' =>(int) $th->getCode()
|
||||||
|
];
|
||||||
|
|
||||||
|
SystemLogger::dispatch(['server_response' => is_null($result) ? '' : $result->getData(), 'data' => $data], SystemLog::CATEGORY_GATEWAY_RESPONSE, SystemLog::EVENT_GATEWAY_FAILURE, 880 , $this->rotessa->client, $this->rotessa->client->company);
|
||||||
|
|
||||||
|
throw $th;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the authorization page for Rotessa.
|
||||||
|
*
|
||||||
|
* @param Request $request
|
||||||
|
* @return RedirectResponse
|
||||||
|
*/
|
||||||
|
public function authorizeResponse(Request $request): RedirectResponse
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$request->validate([
|
||||||
|
'gateway_type_id' => ['required','integer'],
|
||||||
|
'country' => ['required'],
|
||||||
|
'name' => ['required'],
|
||||||
|
'address_1' => ['required'],
|
||||||
|
'address_2' => ['required'],
|
||||||
|
'city' => ['required'],
|
||||||
|
'email' => ['required','email:filter'],
|
||||||
|
'province_code' => ['required','size:2','alpha'],
|
||||||
|
'postal_code' => ['required'],
|
||||||
|
'authorization_type' => ['required'],
|
||||||
|
'account_number' => ['required'],
|
||||||
|
'bank_name' => ['required'],
|
||||||
|
'phone' => ['required'],
|
||||||
|
'home_phone' => ['required'],
|
||||||
|
'bank_account_type'=>['required_if:country,US'],
|
||||||
|
'routing_number'=>['required_if:country,US'],
|
||||||
|
'institution_number'=>['required_if:country,CA','numeric'],
|
||||||
|
'transit_number'=>['required_if:country,CA','numeric'],
|
||||||
|
'custom_identifier'=>['required_without:customer_id'],
|
||||||
|
'customer_id'=>['required_without:custom_identifier','integer'],
|
||||||
|
]);
|
||||||
|
$this->findOrCreateCustomer($request);
|
||||||
|
|
||||||
|
return redirect()->route('client.payment_methods.index')->withMessage(ctrans('texts.payment_method_added'));
|
||||||
|
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
return $this->rotessa->processInternallyFailedPayment($this->rotessa, new ClientPortalAuthorizationException( get_class( $e) . " : {$e->getMessage()}", (int) $e->getCode() ));
|
||||||
|
}
|
||||||
|
|
||||||
|
return back()->withMessage(ctrans('texts.unable_to_verify_payment_method'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Payment view for the Rotessa.
|
||||||
|
*
|
||||||
|
* @param array $data
|
||||||
|
* @return \Illuminate\View\View
|
||||||
|
*/
|
||||||
|
public function paymentView(array $data): View
|
||||||
|
{
|
||||||
|
$data['gateway'] = $this->rotessa;
|
||||||
|
$data['amount'] = $data['total']['amount_with_fee'];
|
||||||
|
$data['due_date'] = date('Y-m-d', min(max(strtotime($data['invoices']->max('due_date')), strtotime('now')), strtotime('+1 day')));
|
||||||
|
$data['process_date'] = $data['due_date'];
|
||||||
|
$data['currency'] = $this->rotessa->client->getCurrencyCode();
|
||||||
|
$data['frequency'] = Frequencies::getOnePayment();
|
||||||
|
$data['installments'] = 1;
|
||||||
|
$data['invoice_nums'] = $data['invoices']->pluck('invoice_number')->join(', ');
|
||||||
|
return view('rotessa::bank_transfer.pay', $data );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle payments page for Rotessa.
|
||||||
|
*
|
||||||
|
* @param PaymentResponseRequest $request
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function paymentResponse(PaymentResponseRequest $request)
|
||||||
|
{
|
||||||
|
$response= null;
|
||||||
|
$customer = null;
|
||||||
|
try {
|
||||||
|
$request->validate([
|
||||||
|
'source' => ['required','string','exists:client_gateway_tokens,token'],
|
||||||
|
'amount' => ['required','numeric'],
|
||||||
|
'token_id' => ['required','integer','exists:client_gateway_tokens,id'],
|
||||||
|
'process_date'=> ['required','date','after_or_equal:today'],
|
||||||
|
]);
|
||||||
|
$customer = ClientGatewayToken::query()
|
||||||
|
->where('company_gateway_id', $this->rotessa->company_gateway->id)
|
||||||
|
->where('client_id', $this->rotessa->client->id)
|
||||||
|
->where('id', (int) $request->input('token_id'))
|
||||||
|
->where('token', $request->input('source'))
|
||||||
|
->first();
|
||||||
|
if(!$customer) throw new \Exception('Client gateway token not found!', 605);
|
||||||
|
|
||||||
|
$transaction = new Transaction($request->only('frequency' ,'installments','amount','process_date','comment'));
|
||||||
|
$transaction->additional(['customer_id' => $customer->gateway_customer_reference]);
|
||||||
|
$transaction = array_filter( $transaction->resolve());
|
||||||
|
$response = $this->rotessa->gateway->capture($transaction)->send();
|
||||||
|
if(!$response->isSuccessful()) throw new \Exception($response->getMessage(), (int) $response->getCode());
|
||||||
|
|
||||||
|
return $this->processPendingPayment($response->getParameter('id'), (float) $response->getParameter('amount'), (int) $customer->gateway_type_id , $customer->token);
|
||||||
|
} catch(\Throwable $e) {
|
||||||
|
$this->processUnsuccessfulPayment( new InvalidResponseException($e->getMessage(), (int) $e->getCode()) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function processPendingPayment($payment_id, float $amount, int $gateway_type_id, $payment_method )
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
'payment_method' => $payment_method,
|
||||||
|
'payment_type' => $gateway_type_id,
|
||||||
|
'amount' => $amount,
|
||||||
|
'transaction_reference' =>$payment_id,
|
||||||
|
'gateway_type_id' => $gateway_type_id,
|
||||||
|
];
|
||||||
|
$payment = $this->rotessa->createPayment($data, Payment::STATUS_PENDING);
|
||||||
|
SystemLogger::dispatch(
|
||||||
|
[ 'data' => $data ],
|
||||||
|
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
||||||
|
SystemLog::EVENT_GATEWAY_SUCCESS,
|
||||||
|
880,
|
||||||
|
$this->rotessa->client,
|
||||||
|
$this->rotessa->client->company,
|
||||||
|
);
|
||||||
|
|
||||||
|
return redirect()->route('client.payments.show', [ 'payment' => $this->rotessa->encodePrimaryKey($payment->id) ]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle unsuccessful payment for Rotessa.
|
||||||
|
*
|
||||||
|
* @param Exception $exception
|
||||||
|
* @throws PaymentFailed
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function processUnsuccessfulPayment(\Exception $exception): void
|
||||||
|
{
|
||||||
|
$this->rotessa->sendFailureMail($exception->getMessage());
|
||||||
|
|
||||||
|
SystemLogger::dispatch(
|
||||||
|
$exception->getMessage(),
|
||||||
|
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
||||||
|
SystemLog::EVENT_GATEWAY_FAILURE,
|
||||||
|
880,
|
||||||
|
$this->rotessa->client,
|
||||||
|
$this->rotessa->client->company,
|
||||||
|
);
|
||||||
|
|
||||||
|
throw new PaymentFailed($exception->getMessage(), $exception->getCode());
|
||||||
|
}
|
||||||
|
}
|
0
app/PaymentDrivers/Rotessa/Providers/.gitkeep
Normal file
0
app/PaymentDrivers/Rotessa/Providers/.gitkeep
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers\Rotessa\Providers;
|
||||||
|
|
||||||
|
use App\PaymentDrivers\Rotessa\Events\CacheGateways as Event;
|
||||||
|
use App\PaymentDrivers\Rotessa\Listeners\CacheGateways as Listener;
|
||||||
|
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
||||||
|
|
||||||
|
class EventServiceProvider extends ServiceProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The event listener mappings for the application.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $listen = [
|
||||||
|
Event::class => [
|
||||||
|
Listener::class,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
83
app/PaymentDrivers/Rotessa/Providers/ServiceProvider.php
Normal file
83
app/PaymentDrivers/Rotessa/Providers/ServiceProvider.php
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers\Rotessa\Providers;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Blade;
|
||||||
|
use App\PaymentDrivers\Rotessa\Events\CacheGateways;
|
||||||
|
use Illuminate\Support\ServiceProvider as BaseProvider;
|
||||||
|
|
||||||
|
class ServiceProvider extends BaseProvider
|
||||||
|
{
|
||||||
|
protected string $moduleName = 'Rotessa';
|
||||||
|
|
||||||
|
protected string $moduleNameLower = 'rotessa';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Boot the application events.
|
||||||
|
*/
|
||||||
|
public function boot(): void
|
||||||
|
{
|
||||||
|
include __DIR__ . "/../Helpers/helpers.php";
|
||||||
|
|
||||||
|
$this->registerConfig();
|
||||||
|
$this->registerTranslations();
|
||||||
|
$this->registerViews();
|
||||||
|
|
||||||
|
event(new CacheGateways);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register config.
|
||||||
|
*/
|
||||||
|
protected function registerConfig(): void
|
||||||
|
{
|
||||||
|
$this->mergeConfigFrom(app_path("PaymentDrivers/{$this->moduleName}/config/gateway_types.php"),$this->moduleNameLower);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Register the service provider.
|
||||||
|
*/
|
||||||
|
public function register(): void
|
||||||
|
{
|
||||||
|
$this->app->register(EventServiceProvider::class);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register translations.
|
||||||
|
*/
|
||||||
|
public function registerTranslations(): void
|
||||||
|
{
|
||||||
|
$langPath = resource_path('lang/modules/'.$this->moduleNameLower);
|
||||||
|
|
||||||
|
if (is_dir($langPath)) {
|
||||||
|
$this->loadTranslationsFrom($langPath, $this->moduleNameLower);
|
||||||
|
$this->loadJsonTranslationsFrom($langPath);
|
||||||
|
} else {
|
||||||
|
$this->loadTranslationsFrom(app_path("PaymentDrivers/{$this->moduleName}resources/lang"), $this->moduleNameLower);
|
||||||
|
$this->loadJsonTranslationsFrom(app_path("PaymentDrivers/{$this->moduleName}resources/lang"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register views.
|
||||||
|
*/
|
||||||
|
public function registerViews(): void
|
||||||
|
{
|
||||||
|
$viewPath = resource_path('views/portal/ninja2020/gateways/'.$this->moduleNameLower);
|
||||||
|
$sourcePath = app_path('PaymentDrivers/Rotessa/resources/views/gateways/rotessa');
|
||||||
|
$this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower);
|
||||||
|
Blade::componentNamespace('App\\PaymentDrivers\\Rotessa\\View\\Components', $this->moduleNameLower);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getPublishableViewPaths(): array
|
||||||
|
{
|
||||||
|
$paths = [app_path('PaymentDrivers/Rotessa/resources/views/gateways/rotessa')];
|
||||||
|
foreach (config('view.paths') as $path) {
|
||||||
|
if (is_dir($path.'/'.$this->moduleNameLower)) {
|
||||||
|
$paths[] = $path.'/'.$this->moduleNameLower;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $paths;
|
||||||
|
}
|
||||||
|
}
|
22
app/PaymentDrivers/Rotessa/Resources/Customer.php
Normal file
22
app/PaymentDrivers/Rotessa/Resources/Customer.php
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers\Rotessa\Resources;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Omnipay\Rotessa\Model\CustomerModel;
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class Customer extends JsonResource
|
||||||
|
{
|
||||||
|
function __construct($resource) {
|
||||||
|
parent::__construct( new CustomerModel($resource));
|
||||||
|
}
|
||||||
|
|
||||||
|
function jsonSerialize() : array {
|
||||||
|
return $this->resource->jsonSerialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
function toArray(Request $request) : array {
|
||||||
|
return $this->additional + parent::toArray($request);
|
||||||
|
}
|
||||||
|
}
|
23
app/PaymentDrivers/Rotessa/Resources/Transaction.php
Normal file
23
app/PaymentDrivers/Rotessa/Resources/Transaction.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers\Rotessa\Resources;
|
||||||
|
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
use Omnipay\Rotessa\Model\TransactionScheduleModel;
|
||||||
|
|
||||||
|
class Transaction extends JsonResource
|
||||||
|
{
|
||||||
|
function __construct($resource) {
|
||||||
|
parent::__construct( new TransactionScheduleModel( $resource));
|
||||||
|
}
|
||||||
|
|
||||||
|
function jsonSerialize() : array {
|
||||||
|
return $this->resource->jsonSerialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
function toArray(Request $request) : array {
|
||||||
|
return $this->additional + parent::toArray($request);
|
||||||
|
}
|
||||||
|
}
|
118
app/PaymentDrivers/Rotessa/View/Components/Components.php
Normal file
118
app/PaymentDrivers/Rotessa/View/Components/Components.php
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers\Rotessa\View\Components;
|
||||||
|
|
||||||
|
use App\PaymentDrivers\Rotessa\DataProviders\CAProvinces;
|
||||||
|
use App\DataProviders\USStates;
|
||||||
|
use Illuminate\View\Component;
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
|
use Illuminate\View\View;
|
||||||
|
|
||||||
|
// Contact Component
|
||||||
|
class ContactComponent extends Component
|
||||||
|
{
|
||||||
|
|
||||||
|
public array $contact;
|
||||||
|
|
||||||
|
public function __construct(array $contact) {
|
||||||
|
$this->contact = $contact;
|
||||||
|
$this->attributes = $this->newAttributeBag(Arr::only($this->contact, $this->fields) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private $fields = [
|
||||||
|
'name',
|
||||||
|
'email',
|
||||||
|
'home_phone',
|
||||||
|
'phone',
|
||||||
|
'custom_identifier',
|
||||||
|
'customer_type' ,
|
||||||
|
'id'
|
||||||
|
];
|
||||||
|
|
||||||
|
private $defaults = [
|
||||||
|
'customer_type' => "Business",
|
||||||
|
'customer_identifier' => null,
|
||||||
|
'id' => null
|
||||||
|
];
|
||||||
|
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
return $this->view('rotessa::components.contact', $this->attributes->getAttributes(), $this->defaults );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Address Component
|
||||||
|
class AddressComponent extends Component
|
||||||
|
{
|
||||||
|
private $fields = [
|
||||||
|
'address_1',
|
||||||
|
'address_2',
|
||||||
|
'city',
|
||||||
|
'postal_code',
|
||||||
|
'province_code',
|
||||||
|
'country'
|
||||||
|
];
|
||||||
|
|
||||||
|
private $defaults = [
|
||||||
|
'country' => 'US'
|
||||||
|
];
|
||||||
|
|
||||||
|
public array $address;
|
||||||
|
|
||||||
|
public function __construct(array $address) {
|
||||||
|
$this->address = $address;
|
||||||
|
if(strlen($this->address['state']) > 2 ) {
|
||||||
|
$this->address['state'] = $this->address['country'] == 'US' ? array_search($this->address['state'], USStates::$states) : CAProvinces::getAbbreviation($this->address['state']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->attributes = $this->newAttributeBag(
|
||||||
|
Arr::only(Arr::mapWithKeys($this->address, function ($item, $key) {
|
||||||
|
return in_array($key, ['address1','address2','state'])?[ (['address1'=>'address_1','address2'=>'address_2','state'=>'province_code'])[$key] => $item ] :[ $key => $item ];
|
||||||
|
}),
|
||||||
|
$this->fields) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->view('rotessa::components.address', $this->attributes->getAttributes(), $this->defaults );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// AmericanBankInfo Component
|
||||||
|
class AccountComponent extends Component
|
||||||
|
{
|
||||||
|
private $fields = [
|
||||||
|
'bank_account_type',
|
||||||
|
'routing_number',
|
||||||
|
'institution_number',
|
||||||
|
'transit_number',
|
||||||
|
'bank_name',
|
||||||
|
'country',
|
||||||
|
'account_number'
|
||||||
|
];
|
||||||
|
|
||||||
|
private $defaults = [
|
||||||
|
'bank_account_type' => null,
|
||||||
|
'routing_number' => null,
|
||||||
|
'institution_number' => null,
|
||||||
|
'transit_number' => null,
|
||||||
|
'bank_name' => ' ',
|
||||||
|
'account_number' => null,
|
||||||
|
'country' => 'US',
|
||||||
|
"authorization_type" => 'Online'
|
||||||
|
];
|
||||||
|
|
||||||
|
public array $account;
|
||||||
|
|
||||||
|
public function __construct(array $account) {
|
||||||
|
$this->account = $account;
|
||||||
|
$this->attributes = $this->newAttributeBag(Arr::only($this->account, $this->fields) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
return $this->view('rotessa::components.account', $this->attributes->getAttributes(), $this->defaults );
|
||||||
|
}
|
||||||
|
}
|
16
app/PaymentDrivers/Rotessa/View/Composers/Composer.php
Normal file
16
app/PaymentDrivers/Rotessa/View/Composers/Composer.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use App\PaymentDrivers\Rotessa\DataProviders\CAProvinces;
|
||||||
|
use Illuminate\Support\Facades\View;
|
||||||
|
use App\DataProviders\USStates;
|
||||||
|
|
||||||
|
View::composer(['rotessa::components.address','rotessa::components.banks.US.bank','rotessa::components.dropdowns.country.US'], function ($view) {
|
||||||
|
$states = USStates::get();
|
||||||
|
$view->with('states', $states);
|
||||||
|
});
|
||||||
|
|
||||||
|
// CAProvinces View Composer
|
||||||
|
View::composer(['rotessa::components.address','rotessa::components.banks.CA.bank','rotessa::components.dropdowns.country.CA'], function ($view) {
|
||||||
|
$provinces = CAProvinces::get();
|
||||||
|
$view->with('provinces', $provinces);
|
||||||
|
});
|
61
app/PaymentDrivers/Rotessa/composer.json
Normal file
61
app/PaymentDrivers/Rotessa/composer.json
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"name": "karneaud/invoiceninja-rotessa",
|
||||||
|
"description": "Invoice Ninja with Rotessa gateway",
|
||||||
|
"type":"laravel-module",
|
||||||
|
"keywords": [
|
||||||
|
"invoice ninja",
|
||||||
|
"laravel",
|
||||||
|
"rotessa"
|
||||||
|
],
|
||||||
|
"license": ["Attribution Assurance License","Proprietary License","BSD 3-Clause License"],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Kendall Arneaud",
|
||||||
|
"email": "kendall.arneaud@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"autoload": {
|
||||||
|
"classmap": ["./View/Components/Components.php"],
|
||||||
|
"psr-4": {
|
||||||
|
"App\\PaymentDrivers\\Rotessa\\":"./",
|
||||||
|
"App\\PaymentDrivers\\Rotessa\\View\\Components\\":"./View/Components/",
|
||||||
|
"App\\PaymentDrivers\\Rotessa\\Database\\Seeders\\": "Database/Seeders/"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./View/Composers/Composer.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"preferred-install": "dist",
|
||||||
|
"sort-packages": true,
|
||||||
|
"optimize-autoloader": true
|
||||||
|
},
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "package",
|
||||||
|
"package": {
|
||||||
|
"name": "karneaud/omnipay-rotessa",
|
||||||
|
"source": {
|
||||||
|
"url": "https://github.com/karneaud/omnipay-rotessa.git",
|
||||||
|
"type": "git",
|
||||||
|
"reference": "master"
|
||||||
|
},
|
||||||
|
"version": "1.0.0-beta",
|
||||||
|
"dist": {
|
||||||
|
"url": "https://github.com/karneaud/omnipay-rotessa/archive/refs/tags/v1.0.0-beta.zip",
|
||||||
|
"type": "zip"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Omnipay\\Rotessa\\":"./src/Omnipay/Rotessa/",
|
||||||
|
"Omnipay\\Rotessa\\Exception\\":"./src/Omnipay/Rotessa/Exception/"
|
||||||
|
},
|
||||||
|
"classmap": ["./src/Omnipay/Rotessa/Exception/Exceptions.php"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"karneaud/omnipay-rotessa": "v1.0.0-beta"
|
||||||
|
}
|
||||||
|
}
|
44
app/PaymentDrivers/Rotessa/composer.lock
generated
Normal file
44
app/PaymentDrivers/Rotessa/composer.lock
generated
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"_readme": [
|
||||||
|
"This file locks the dependencies of your project to a known state",
|
||||||
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
|
"This file is @generated automatically"
|
||||||
|
],
|
||||||
|
"content-hash": "4c8b93bd9cd92f484502fc665fdbe826",
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "karneaud/omnipay-rotessa",
|
||||||
|
"version": "1.0.0-beta",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/karneaud/omnipay-rotessa.git",
|
||||||
|
"reference": "master"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://github.com/karneaud/omnipay-rotessa/archive/refs/tags/v1.0.0-beta.zip"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Omnipay\\Rotessa\\": "./src/Omnipay/Rotessa/",
|
||||||
|
"Omnipay\\Rotessa\\Exception\\": "./src/Omnipay/Rotessa/Exception/"
|
||||||
|
},
|
||||||
|
"classmap": [
|
||||||
|
"./src/Omnipay/Rotessa/Exception/Exceptions.php"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": {
|
||||||
|
"karneaud/omnipay-rotessa": 10
|
||||||
|
},
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": [],
|
||||||
|
"plugin-api-version": "2.6.0"
|
||||||
|
}
|
16
app/PaymentDrivers/Rotessa/config/gateway_types.php
Normal file
16
app/PaymentDrivers/Rotessa/config/gateway_types.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Models\GatewayType;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'gateway_types' => [
|
||||||
|
GatewayType::BANK_TRANSFER => [
|
||||||
|
'refund' => false,
|
||||||
|
'token_billing' => true,
|
||||||
|
'webhooks' => [],
|
||||||
|
],
|
||||||
|
GatewayType::BACS => ['refund' => false, 'token_billing' => true, 'webhooks' => []],
|
||||||
|
GatewayType::DIRECT_DEBIT => ['refund' => false, 'token_billing' => true, 'webhooks' => []],
|
||||||
|
GatewayType::ACSS => ['refund' => false, 'token_billing' => true, 'webhooks' => []]
|
||||||
|
]
|
||||||
|
];
|
@ -0,0 +1,4 @@
|
|||||||
|
<dd> Gateway: </dd>
|
||||||
|
<dt>{{ $brand }}</dt>
|
||||||
|
<dd> Account Number: </dd>
|
||||||
|
<dt>{{ $account_number }}</dt>
|
@ -0,0 +1,35 @@
|
|||||||
|
@extends('portal.ninja2020.layout.payments', ['gateway_title' => $gateway->company_gateway->label, 'card_title' =>\App\Models\GatewayType::getAlias($gateway_type_id )])
|
||||||
|
|
||||||
|
@section('gateway_content')
|
||||||
|
@if(session()->has('ach_error'))
|
||||||
|
<div class="alert alert-failure mb-4">
|
||||||
|
<p>{{ session('ach_error') }}</p>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<form action="{{ route('client.payment_methods.store', ['method' => $gateway_type_id ]) }}"
|
||||||
|
method="post" id="server_response">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="company_gateway_id" value="{{ $gateway->company_gateway->id }}">
|
||||||
|
<input type="hidden" name="gateway_type_id" value="{{ $gateway_type_id }}">
|
||||||
|
<input type="hidden" name="gateway_response" id="gateway_response">
|
||||||
|
<input type="hidden" name="is_default" id="is_default">
|
||||||
|
|
||||||
|
<x-rotessa::contact-component :contact="$contact"></x-rotessa::contact-component>
|
||||||
|
|
||||||
|
<x-rotessa::address-component :address="$address"></x-rotessa::address-component>
|
||||||
|
|
||||||
|
<x-rotessa::account-component :account="$account"></x-rotessa::account-component>
|
||||||
|
|
||||||
|
@component('portal.ninja2020.gateways.includes.pay_now', ['id' => 'authorize-bank-account', 'type' => 'submit'])
|
||||||
|
{{ ctrans('texts.add_payment_method') }}
|
||||||
|
@endcomponent
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="alert alert-failure mb-4" hidden id="errors"></div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('gateway_footer')
|
||||||
|
|
||||||
|
@endsection
|
@ -0,0 +1,91 @@
|
|||||||
|
@extends('portal.ninja2020.layout.payments', ['gateway_title' => 'Direct Debit', 'card_title' => 'Direct Debit'])
|
||||||
|
|
||||||
|
@section('gateway_content')
|
||||||
|
@if (count($tokens) > 0)
|
||||||
|
<div class="alert alert-failure mb-4" hidden id="errors"></div>
|
||||||
|
|
||||||
|
@include('portal.ninja2020.gateways.includes.payment_details')
|
||||||
|
|
||||||
|
<form action="{{ route('client.payments.response') }}" method="post" id="server-response">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="company_gateway_id" value="{{ $gateway->getCompanyGatewayId() }}">
|
||||||
|
<input type="hidden" name="payment_method_id" value="{{ $payment_method_id }}">
|
||||||
|
<input type="hidden" name="source" value="">
|
||||||
|
<input type="hidden" name="amount" value="{{ $amount }}">
|
||||||
|
<input type="hidden" name="currency" value="{{ $currency }}">
|
||||||
|
<input type="hidden" name="payment_hash" value="{{ $payment_hash }}">
|
||||||
|
<input type="hidden" name="token_id" value="">
|
||||||
|
<input type="hidden" name="frequency" value="Once">
|
||||||
|
<input type="hidden" name="installments" value="1">
|
||||||
|
<input type="hidden" name="comment" value="Payment for invoice # {{ $invoice_nums }}">
|
||||||
|
|
||||||
|
@component('portal.ninja2020.components.general.card-element', ['title' => ctrans('texts.pay_with')])
|
||||||
|
@if (count($tokens) > 0)
|
||||||
|
@foreach ($tokens as $token)
|
||||||
|
<label class="mr-4">
|
||||||
|
<input type="radio" data-token="{{ $token->token }}" data-token_id="{{ $token->id }}" name="payment-type"
|
||||||
|
class="form-radio cursor-pointer toggle-payment-with-token" />
|
||||||
|
<span class="ml-1 cursor-pointer">
|
||||||
|
{{ App\Models\GatewayType::getAlias($token->gateway_type_id) }} ({{ $token->meta->brand }})
|
||||||
|
Acc#: {{ $token->meta->account_number }}
|
||||||
|
</span>
|
||||||
|
</label><br/>
|
||||||
|
@endforeach
|
||||||
|
@endisset
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Process Date
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input autocomplete="new-password" readonly type="date" min="{{ $due_date }}" name="process_date" id="process_date" required class="input w-full" placeholder="" value="{{ old('process_date', $process_date ) }}">
|
||||||
|
</dd>
|
||||||
|
{{--
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Insallments
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="installments" name="installments" type="number" placeholder="Installments" required value="{{ old('installments',$installments) }}">
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Frequency
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="frequency" name="frequency" type="text" placeholder="Once/Weekly/Monthly/Annually" required >
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Comments
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<textarea autocomplete="new-password" id="comment" name="comment" type="text" class="w-full py-2 px-3 rounded text-sm disabled:opacity-75 disabled:cursor-not-allowed undefined border border-gray-300" placeholder="" rows="5" style="background-color: rgb(255, 255, 255); border-color: rgb(209, 213, 219); color: rgb(42, 48, 61);"> </textarea>
|
||||||
|
</dd> --}}
|
||||||
|
@endcomponent
|
||||||
|
</form>
|
||||||
|
@else
|
||||||
|
@component('portal.ninja2020.components.general.card-element-single', ['title' => 'Direct Debit', 'show_title' => false])
|
||||||
|
<span>{{ ctrans('texts.bank_account_not_linked') }}</span>
|
||||||
|
|
||||||
|
<a class="button button-link text-primary"
|
||||||
|
href="{{ route('client.payment_methods.index') }}">{{ ctrans('texts.add_payment_method') }}</a>
|
||||||
|
@endcomponent
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if (count($tokens) > 0)
|
||||||
|
@include('portal.ninja2020.gateways.includes.pay_now')
|
||||||
|
@endif
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@push('footer')
|
||||||
|
<script>
|
||||||
|
Array
|
||||||
|
.from(document.getElementsByClassName('toggle-payment-with-token'))
|
||||||
|
.forEach((element) => element.addEventListener('click', (element) => {
|
||||||
|
document.querySelector('input[name=source]').value = element.target.dataset.token;
|
||||||
|
document.querySelector('input[name=token_id]').value = element.target.dataset.token_id;
|
||||||
|
}));
|
||||||
|
|
||||||
|
document.getElementById('pay-now').addEventListener('click', function() {
|
||||||
|
document.getElementById('server-response').submit();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endpush
|
@ -0,0 +1,31 @@
|
|||||||
|
<div class="px-4 py-5 border-b border-gray-200 sm:px-6">
|
||||||
|
<h3 class="text-lg font-medium leading-6 text-gray-900">
|
||||||
|
Account Information
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p class="max-w-2xl mt-1 text-sm leading-5 text-gray-500">
|
||||||
|
Enter the information for the bank account
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Bank Name
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="bank_name" name="bank_name" type="text" placeholder="Bank Name" required value="{{ old('bank_name', $bank_name) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Account Number
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="account_number" name="account_number" type="text" placeholder="Account Number" required value="{{ old('account_number', $account_number) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<input type="hidden" name="authorization_type" id="authorization_type" value="{{ old('authorization_type',$authorization_type) }}" >
|
||||||
|
|
||||||
|
@include("rotessa::components.banks.$country.bank", compact('bank_account_type','routing_number','institution_number','transit_number'))
|
@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
<div class="px-4 py-5 border-b border-gray-200 sm:px-6">
|
||||||
|
<h3 class="text-lg font-medium leading-6 text-gray-900">
|
||||||
|
Address Information
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p class="max-w-2xl mt-1 text-sm leading-5 text-gray-500">
|
||||||
|
Enter the address information for the account holder
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Address Line 1
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="address_1" name="address_1" type="text" placeholder="Address Line 1" required value="{{ old('address_1', $address_1) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Address Line 2
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="address_2" name="address_2" type="text" placeholder="Address Line 2" required value="{{ old('address_2', $address_2) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
City
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="city" name="city" type="text" placeholder="City" required value="{{ old('city', $city) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Postal Code
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="postal_code" name="postal_code" type="text" placeholder="Postal Code" required value="{{ old('postal_code', $postal_code ) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Country
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input type="radio" id="us" name="country" value="US" required @checked(old('country', $country) == 'US')>
|
||||||
|
<label for="us">United States</label><br>
|
||||||
|
<input type="radio" id="ca" name="country" value="CA" required @checked(old('country', $country) == 'CA')>
|
||||||
|
<label for="ca">Canada</label><br>
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include("rotessa::components.dropdowns.country.$country",compact('province_code'))
|
@ -0,0 +1,17 @@
|
|||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Transit Number
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="transit_number" max="5" name="transit_number" type="text" placeholder="Transit Number" required value="{{ old('transit_number',$transit_number) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Institution Number
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="institution_number" max="3" name="institution_number" type="text" placeholder="Institution Number" required value="{{ old('institution_number',$institution_number) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Routing Number
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="routing_number" name="routing_number" type="text" placeholder="Phone" required value="{{ old('routing_number',$routing_number) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Account Type
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<div class="sm:grid-cols-2 sm:flex">
|
||||||
|
<div class="flex items-center px-2">
|
||||||
|
<input id="bank_account_type_savings" name="bank_account_type" value="Savings" required @checked(old('bank_account_type', $bank_account_type)) type="radio" class="focus:ring-gray-500 h-4 w-4 border-gray-300 disabled:opacity-75 disabled:cursor-not-allowed">
|
||||||
|
<label for="bank_account_type_savings" class="ml-3 block text-sm font-medium cursor-pointer">Savings</label>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center px-2">
|
||||||
|
<input id="bank_account_type_checking" name="bank_account_type" value="Checking" required @checked(old('bank_account_type', $bank_account_type)) type="radio" class="focus:ring-gray-500 h-4 w-4 border-gray-300 disabled:opacity-75 disabled:cursor-not-allowed">
|
||||||
|
<label for="bank_account_type_checking" class="ml-3 block text-sm font-medium cursor-pointer">Checking</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
</div>
|
@ -0,0 +1,69 @@
|
|||||||
|
|
||||||
|
<div class="px-4 py-5 border-b border-gray-200 sm:px-6">
|
||||||
|
<h3 class="text-lg font-medium leading-6 text-gray-900">
|
||||||
|
Account Holder Information
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p class="max-w-2xl mt-1 text-sm leading-5 text-gray-500">
|
||||||
|
Enter the information for the account holder
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Full Name
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="name" name="name" type="text" placeholder="Full Name" required value="{{ old('name',$name) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Email Address
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" name="email" id="email" type="email" placeholder="Email Address" required value="{{ old('email',$email) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Home Phone
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="home_phone" name="home_phone" type="text" placeholder="Home Phone" required value="{{ old('phone',$phone) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Other Phone
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<input class="input w-full" id="phone" name="phone" type="text" placeholder="Phone" required value="{{ old('phone',$phone) }}">
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Customer Type
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<div class="sm:grid-cols-2 sm:flex">
|
||||||
|
<div class="flex items-center px-2">
|
||||||
|
<input id="customer_type_personal" name="customer_type" value="Personal" required @checked(old('customer_type', $customer_type) == 'Personal') type="radio" class="focus:ring-gray-500 h-4 w-4 border-gray-300 disabled:opacity-75 disabled:cursor-not-allowed">
|
||||||
|
<label for="customer_type_personal" class="ml-3 block text-sm font-medium cursor-pointer">Personal</label>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center px-2">
|
||||||
|
<input id="customer_type_business" name="customer_type" value="Business" required @checked(old('customer_type', $customer_type) == 'Business') type="radio" class="focus:ring-gray-500 h-4 w-4 border-gray-300 disabled:opacity-75 disabled:cursor-not-allowed">
|
||||||
|
<label for="customer_type_business" class="ml-3 block text-sm font-medium cursor-pointer">Business</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<input name="id" type="hidden" value="{{ old('id', $id ) }}">
|
||||||
|
<input name="custom_identifier" type="hidden" value="{{ old('custom_identifer', $contact['custom_identifier']) }}">
|
@ -0,0 +1,12 @@
|
|||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
Province Code
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<select class="input w-full" id="province_code" name="province_code" required>
|
||||||
|
@foreach($provinces as $code => $province)
|
||||||
|
<option value="{{ $code }}" @selected(old('province_code', $province_code) == $code ) >{{ $province }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</div>
|
@ -0,0 +1,12 @@
|
|||||||
|
<div class="px-4 py-2 sm:px-6 lg:grid lg:grid-cols-3 lg:gap-4 lg:flex lg:items-center">
|
||||||
|
<dt class="text-sm leading-5 font-medium text-gray-500 mr-4">
|
||||||
|
State
|
||||||
|
</dt>
|
||||||
|
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
||||||
|
<select class="input w-full" id="province_code" required name="province_code">
|
||||||
|
@foreach($states as $code => $state)
|
||||||
|
<option value="{{ $code }}" @selected(old('province_code', $province_code) == $code ) >{{ $state }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</div>
|
25
app/PaymentDrivers/Rotessa/vendor/autoload.php
vendored
Normal file
25
app/PaymentDrivers/Rotessa/vendor/autoload.php
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload.php @generated by Composer
|
||||||
|
|
||||||
|
if (PHP_VERSION_ID < 50600) {
|
||||||
|
if (!headers_sent()) {
|
||||||
|
header('HTTP/1.1 500 Internal Server Error');
|
||||||
|
}
|
||||||
|
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
|
||||||
|
if (!ini_get('display_errors')) {
|
||||||
|
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
|
||||||
|
fwrite(STDERR, $err);
|
||||||
|
} elseif (!headers_sent()) {
|
||||||
|
echo $err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
trigger_error(
|
||||||
|
$err,
|
||||||
|
E_USER_ERROR
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once __DIR__ . '/composer/autoload_real.php';
|
||||||
|
|
||||||
|
return ComposerAutoloaderInita0415998b2208af2a6b954b72fdf7005::getLoader();
|
579
app/PaymentDrivers/Rotessa/vendor/composer/ClassLoader.php
vendored
Normal file
579
app/PaymentDrivers/Rotessa/vendor/composer/ClassLoader.php
vendored
Normal file
@ -0,0 +1,579 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Composer.
|
||||||
|
*
|
||||||
|
* (c) Nils Adermann <naderman@naderman.de>
|
||||||
|
* Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Autoload;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
||||||
|
*
|
||||||
|
* $loader = new \Composer\Autoload\ClassLoader();
|
||||||
|
*
|
||||||
|
* // register classes with namespaces
|
||||||
|
* $loader->add('Symfony\Component', __DIR__.'/component');
|
||||||
|
* $loader->add('Symfony', __DIR__.'/framework');
|
||||||
|
*
|
||||||
|
* // activate the autoloader
|
||||||
|
* $loader->register();
|
||||||
|
*
|
||||||
|
* // to enable searching the include path (eg. for PEAR packages)
|
||||||
|
* $loader->setUseIncludePath(true);
|
||||||
|
*
|
||||||
|
* In this example, if you try to use a class in the Symfony\Component
|
||||||
|
* namespace or one of its children (Symfony\Component\Console for instance),
|
||||||
|
* the autoloader will first look for the class under the component/
|
||||||
|
* directory, and it will then fallback to the framework/ directory if not
|
||||||
|
* found before giving up.
|
||||||
|
*
|
||||||
|
* This class is loosely based on the Symfony UniversalClassLoader.
|
||||||
|
*
|
||||||
|
* @author Fabien Potencier <fabien@symfony.com>
|
||||||
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
* @see https://www.php-fig.org/psr/psr-0/
|
||||||
|
* @see https://www.php-fig.org/psr/psr-4/
|
||||||
|
*/
|
||||||
|
class ClassLoader
|
||||||
|
{
|
||||||
|
/** @var \Closure(string):void */
|
||||||
|
private static $includeFile;
|
||||||
|
|
||||||
|
/** @var string|null */
|
||||||
|
private $vendorDir;
|
||||||
|
|
||||||
|
// PSR-4
|
||||||
|
/**
|
||||||
|
* @var array<string, array<string, int>>
|
||||||
|
*/
|
||||||
|
private $prefixLengthsPsr4 = array();
|
||||||
|
/**
|
||||||
|
* @var array<string, list<string>>
|
||||||
|
*/
|
||||||
|
private $prefixDirsPsr4 = array();
|
||||||
|
/**
|
||||||
|
* @var list<string>
|
||||||
|
*/
|
||||||
|
private $fallbackDirsPsr4 = array();
|
||||||
|
|
||||||
|
// PSR-0
|
||||||
|
/**
|
||||||
|
* List of PSR-0 prefixes
|
||||||
|
*
|
||||||
|
* Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
|
||||||
|
*
|
||||||
|
* @var array<string, array<string, list<string>>>
|
||||||
|
*/
|
||||||
|
private $prefixesPsr0 = array();
|
||||||
|
/**
|
||||||
|
* @var list<string>
|
||||||
|
*/
|
||||||
|
private $fallbackDirsPsr0 = array();
|
||||||
|
|
||||||
|
/** @var bool */
|
||||||
|
private $useIncludePath = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array<string, string>
|
||||||
|
*/
|
||||||
|
private $classMap = array();
|
||||||
|
|
||||||
|
/** @var bool */
|
||||||
|
private $classMapAuthoritative = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array<string, bool>
|
||||||
|
*/
|
||||||
|
private $missingClasses = array();
|
||||||
|
|
||||||
|
/** @var string|null */
|
||||||
|
private $apcuPrefix;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array<string, self>
|
||||||
|
*/
|
||||||
|
private static $registeredLoaders = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string|null $vendorDir
|
||||||
|
*/
|
||||||
|
public function __construct($vendorDir = null)
|
||||||
|
{
|
||||||
|
$this->vendorDir = $vendorDir;
|
||||||
|
self::initializeIncludeClosure();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string, list<string>>
|
||||||
|
*/
|
||||||
|
public function getPrefixes()
|
||||||
|
{
|
||||||
|
if (!empty($this->prefixesPsr0)) {
|
||||||
|
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
||||||
|
}
|
||||||
|
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string, list<string>>
|
||||||
|
*/
|
||||||
|
public function getPrefixesPsr4()
|
||||||
|
{
|
||||||
|
return $this->prefixDirsPsr4;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return list<string>
|
||||||
|
*/
|
||||||
|
public function getFallbackDirs()
|
||||||
|
{
|
||||||
|
return $this->fallbackDirsPsr0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return list<string>
|
||||||
|
*/
|
||||||
|
public function getFallbackDirsPsr4()
|
||||||
|
{
|
||||||
|
return $this->fallbackDirsPsr4;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string, string> Array of classname => path
|
||||||
|
*/
|
||||||
|
public function getClassMap()
|
||||||
|
{
|
||||||
|
return $this->classMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array<string, string> $classMap Class to filename map
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function addClassMap(array $classMap)
|
||||||
|
{
|
||||||
|
if ($this->classMap) {
|
||||||
|
$this->classMap = array_merge($this->classMap, $classMap);
|
||||||
|
} else {
|
||||||
|
$this->classMap = $classMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a set of PSR-0 directories for a given prefix, either
|
||||||
|
* appending or prepending to the ones previously set for this prefix.
|
||||||
|
*
|
||||||
|
* @param string $prefix The prefix
|
||||||
|
* @param list<string>|string $paths The PSR-0 root directories
|
||||||
|
* @param bool $prepend Whether to prepend the directories
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function add($prefix, $paths, $prepend = false)
|
||||||
|
{
|
||||||
|
$paths = (array) $paths;
|
||||||
|
if (!$prefix) {
|
||||||
|
if ($prepend) {
|
||||||
|
$this->fallbackDirsPsr0 = array_merge(
|
||||||
|
$paths,
|
||||||
|
$this->fallbackDirsPsr0
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->fallbackDirsPsr0 = array_merge(
|
||||||
|
$this->fallbackDirsPsr0,
|
||||||
|
$paths
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$first = $prefix[0];
|
||||||
|
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||||
|
$this->prefixesPsr0[$first][$prefix] = $paths;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($prepend) {
|
||||||
|
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||||
|
$paths,
|
||||||
|
$this->prefixesPsr0[$first][$prefix]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||||
|
$this->prefixesPsr0[$first][$prefix],
|
||||||
|
$paths
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a set of PSR-4 directories for a given namespace, either
|
||||||
|
* appending or prepending to the ones previously set for this namespace.
|
||||||
|
*
|
||||||
|
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||||
|
* @param list<string>|string $paths The PSR-4 base directories
|
||||||
|
* @param bool $prepend Whether to prepend the directories
|
||||||
|
*
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function addPsr4($prefix, $paths, $prepend = false)
|
||||||
|
{
|
||||||
|
$paths = (array) $paths;
|
||||||
|
if (!$prefix) {
|
||||||
|
// Register directories for the root namespace.
|
||||||
|
if ($prepend) {
|
||||||
|
$this->fallbackDirsPsr4 = array_merge(
|
||||||
|
$paths,
|
||||||
|
$this->fallbackDirsPsr4
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->fallbackDirsPsr4 = array_merge(
|
||||||
|
$this->fallbackDirsPsr4,
|
||||||
|
$paths
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||||
|
// Register directories for a new namespace.
|
||||||
|
$length = strlen($prefix);
|
||||||
|
if ('\\' !== $prefix[$length - 1]) {
|
||||||
|
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||||
|
}
|
||||||
|
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||||
|
$this->prefixDirsPsr4[$prefix] = $paths;
|
||||||
|
} elseif ($prepend) {
|
||||||
|
// Prepend directories for an already registered namespace.
|
||||||
|
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||||
|
$paths,
|
||||||
|
$this->prefixDirsPsr4[$prefix]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// Append directories for an already registered namespace.
|
||||||
|
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||||
|
$this->prefixDirsPsr4[$prefix],
|
||||||
|
$paths
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a set of PSR-0 directories for a given prefix,
|
||||||
|
* replacing any others previously set for this prefix.
|
||||||
|
*
|
||||||
|
* @param string $prefix The prefix
|
||||||
|
* @param list<string>|string $paths The PSR-0 base directories
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function set($prefix, $paths)
|
||||||
|
{
|
||||||
|
if (!$prefix) {
|
||||||
|
$this->fallbackDirsPsr0 = (array) $paths;
|
||||||
|
} else {
|
||||||
|
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a set of PSR-4 directories for a given namespace,
|
||||||
|
* replacing any others previously set for this namespace.
|
||||||
|
*
|
||||||
|
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||||
|
* @param list<string>|string $paths The PSR-4 base directories
|
||||||
|
*
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setPsr4($prefix, $paths)
|
||||||
|
{
|
||||||
|
if (!$prefix) {
|
||||||
|
$this->fallbackDirsPsr4 = (array) $paths;
|
||||||
|
} else {
|
||||||
|
$length = strlen($prefix);
|
||||||
|
if ('\\' !== $prefix[$length - 1]) {
|
||||||
|
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||||
|
}
|
||||||
|
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||||
|
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turns on searching the include path for class files.
|
||||||
|
*
|
||||||
|
* @param bool $useIncludePath
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setUseIncludePath($useIncludePath)
|
||||||
|
{
|
||||||
|
$this->useIncludePath = $useIncludePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can be used to check if the autoloader uses the include path to check
|
||||||
|
* for classes.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function getUseIncludePath()
|
||||||
|
{
|
||||||
|
return $this->useIncludePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turns off searching the prefix and fallback directories for classes
|
||||||
|
* that have not been registered with the class map.
|
||||||
|
*
|
||||||
|
* @param bool $classMapAuthoritative
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||||
|
{
|
||||||
|
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should class lookup fail if not found in the current class map?
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isClassMapAuthoritative()
|
||||||
|
{
|
||||||
|
return $this->classMapAuthoritative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
||||||
|
*
|
||||||
|
* @param string|null $apcuPrefix
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setApcuPrefix($apcuPrefix)
|
||||||
|
{
|
||||||
|
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The APCu prefix in use, or null if APCu caching is not enabled.
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function getApcuPrefix()
|
||||||
|
{
|
||||||
|
return $this->apcuPrefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers this instance as an autoloader.
|
||||||
|
*
|
||||||
|
* @param bool $prepend Whether to prepend the autoloader or not
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function register($prepend = false)
|
||||||
|
{
|
||||||
|
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||||
|
|
||||||
|
if (null === $this->vendorDir) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($prepend) {
|
||||||
|
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
|
||||||
|
} else {
|
||||||
|
unset(self::$registeredLoaders[$this->vendorDir]);
|
||||||
|
self::$registeredLoaders[$this->vendorDir] = $this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unregisters this instance as an autoloader.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function unregister()
|
||||||
|
{
|
||||||
|
spl_autoload_unregister(array($this, 'loadClass'));
|
||||||
|
|
||||||
|
if (null !== $this->vendorDir) {
|
||||||
|
unset(self::$registeredLoaders[$this->vendorDir]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads the given class or interface.
|
||||||
|
*
|
||||||
|
* @param string $class The name of the class
|
||||||
|
* @return true|null True if loaded, null otherwise
|
||||||
|
*/
|
||||||
|
public function loadClass($class)
|
||||||
|
{
|
||||||
|
if ($file = $this->findFile($class)) {
|
||||||
|
$includeFile = self::$includeFile;
|
||||||
|
$includeFile($file);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds the path to the file where the class is defined.
|
||||||
|
*
|
||||||
|
* @param string $class The name of the class
|
||||||
|
*
|
||||||
|
* @return string|false The path if found, false otherwise
|
||||||
|
*/
|
||||||
|
public function findFile($class)
|
||||||
|
{
|
||||||
|
// class map lookup
|
||||||
|
if (isset($this->classMap[$class])) {
|
||||||
|
return $this->classMap[$class];
|
||||||
|
}
|
||||||
|
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (null !== $this->apcuPrefix) {
|
||||||
|
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
||||||
|
if ($hit) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$file = $this->findFileWithExtension($class, '.php');
|
||||||
|
|
||||||
|
// Search for Hack files if we are running on HHVM
|
||||||
|
if (false === $file && defined('HHVM_VERSION')) {
|
||||||
|
$file = $this->findFileWithExtension($class, '.hh');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null !== $this->apcuPrefix) {
|
||||||
|
apcu_add($this->apcuPrefix.$class, $file);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (false === $file) {
|
||||||
|
// Remember that this class does not exist.
|
||||||
|
$this->missingClasses[$class] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the currently registered loaders keyed by their corresponding vendor directories.
|
||||||
|
*
|
||||||
|
* @return array<string, self>
|
||||||
|
*/
|
||||||
|
public static function getRegisteredLoaders()
|
||||||
|
{
|
||||||
|
return self::$registeredLoaders;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $class
|
||||||
|
* @param string $ext
|
||||||
|
* @return string|false
|
||||||
|
*/
|
||||||
|
private function findFileWithExtension($class, $ext)
|
||||||
|
{
|
||||||
|
// PSR-4 lookup
|
||||||
|
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||||
|
|
||||||
|
$first = $class[0];
|
||||||
|
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||||
|
$subPath = $class;
|
||||||
|
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||||
|
$subPath = substr($subPath, 0, $lastPos);
|
||||||
|
$search = $subPath . '\\';
|
||||||
|
if (isset($this->prefixDirsPsr4[$search])) {
|
||||||
|
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
||||||
|
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||||
|
if (file_exists($file = $dir . $pathEnd)) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PSR-4 fallback dirs
|
||||||
|
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||||
|
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PSR-0 lookup
|
||||||
|
if (false !== $pos = strrpos($class, '\\')) {
|
||||||
|
// namespaced class name
|
||||||
|
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||||
|
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||||
|
} else {
|
||||||
|
// PEAR-like class name
|
||||||
|
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($this->prefixesPsr0[$first])) {
|
||||||
|
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||||
|
if (0 === strpos($class, $prefix)) {
|
||||||
|
foreach ($dirs as $dir) {
|
||||||
|
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PSR-0 fallback dirs
|
||||||
|
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||||
|
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PSR-0 include paths.
|
||||||
|
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
private static function initializeIncludeClosure()
|
||||||
|
{
|
||||||
|
if (self::$includeFile !== null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scope isolated include.
|
||||||
|
*
|
||||||
|
* Prevents access to $this/self from included files.
|
||||||
|
*
|
||||||
|
* @param string $file
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
self::$includeFile = \Closure::bind(static function($file) {
|
||||||
|
include $file;
|
||||||
|
}, null, null);
|
||||||
|
}
|
||||||
|
}
|
359
app/PaymentDrivers/Rotessa/vendor/composer/InstalledVersions.php
vendored
Normal file
359
app/PaymentDrivers/Rotessa/vendor/composer/InstalledVersions.php
vendored
Normal file
@ -0,0 +1,359 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Composer.
|
||||||
|
*
|
||||||
|
* (c) Nils Adermann <naderman@naderman.de>
|
||||||
|
* Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer;
|
||||||
|
|
||||||
|
use Composer\Autoload\ClassLoader;
|
||||||
|
use Composer\Semver\VersionParser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class is copied in every Composer installed project and available to all
|
||||||
|
*
|
||||||
|
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
|
||||||
|
*
|
||||||
|
* To require its presence, you can require `composer-runtime-api ^2.0`
|
||||||
|
*
|
||||||
|
* @final
|
||||||
|
*/
|
||||||
|
class InstalledVersions
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var mixed[]|null
|
||||||
|
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
|
||||||
|
*/
|
||||||
|
private static $installed;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool|null
|
||||||
|
*/
|
||||||
|
private static $canGetVendors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array[]
|
||||||
|
* @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||||
|
*/
|
||||||
|
private static $installedByVendor = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of all package names which are present, either by being installed, replaced or provided
|
||||||
|
*
|
||||||
|
* @return string[]
|
||||||
|
* @psalm-return list<string>
|
||||||
|
*/
|
||||||
|
public static function getInstalledPackages()
|
||||||
|
{
|
||||||
|
$packages = array();
|
||||||
|
foreach (self::getInstalled() as $installed) {
|
||||||
|
$packages[] = array_keys($installed['versions']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (1 === \count($packages)) {
|
||||||
|
return $packages[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of all package names with a specific type e.g. 'library'
|
||||||
|
*
|
||||||
|
* @param string $type
|
||||||
|
* @return string[]
|
||||||
|
* @psalm-return list<string>
|
||||||
|
*/
|
||||||
|
public static function getInstalledPackagesByType($type)
|
||||||
|
{
|
||||||
|
$packagesByType = array();
|
||||||
|
|
||||||
|
foreach (self::getInstalled() as $installed) {
|
||||||
|
foreach ($installed['versions'] as $name => $package) {
|
||||||
|
if (isset($package['type']) && $package['type'] === $type) {
|
||||||
|
$packagesByType[] = $name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $packagesByType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the given package is installed
|
||||||
|
*
|
||||||
|
* This also returns true if the package name is provided or replaced by another package
|
||||||
|
*
|
||||||
|
* @param string $packageName
|
||||||
|
* @param bool $includeDevRequirements
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function isInstalled($packageName, $includeDevRequirements = true)
|
||||||
|
{
|
||||||
|
foreach (self::getInstalled() as $installed) {
|
||||||
|
if (isset($installed['versions'][$packageName])) {
|
||||||
|
return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the given package satisfies a version constraint
|
||||||
|
*
|
||||||
|
* e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
|
||||||
|
*
|
||||||
|
* Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
|
||||||
|
*
|
||||||
|
* @param VersionParser $parser Install composer/semver to have access to this class and functionality
|
||||||
|
* @param string $packageName
|
||||||
|
* @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
||||||
|
{
|
||||||
|
$constraint = $parser->parseConstraints((string) $constraint);
|
||||||
|
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
||||||
|
|
||||||
|
return $provided->matches($constraint);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a version constraint representing all the range(s) which are installed for a given package
|
||||||
|
*
|
||||||
|
* It is easier to use this via isInstalled() with the $constraint argument if you need to check
|
||||||
|
* whether a given version of a package is installed, and not just whether it exists
|
||||||
|
*
|
||||||
|
* @param string $packageName
|
||||||
|
* @return string Version constraint usable with composer/semver
|
||||||
|
*/
|
||||||
|
public static function getVersionRanges($packageName)
|
||||||
|
{
|
||||||
|
foreach (self::getInstalled() as $installed) {
|
||||||
|
if (!isset($installed['versions'][$packageName])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$ranges = array();
|
||||||
|
if (isset($installed['versions'][$packageName]['pretty_version'])) {
|
||||||
|
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
|
||||||
|
}
|
||||||
|
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
|
||||||
|
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
|
||||||
|
}
|
||||||
|
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
|
||||||
|
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
|
||||||
|
}
|
||||||
|
if (array_key_exists('provided', $installed['versions'][$packageName])) {
|
||||||
|
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return implode(' || ', $ranges);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $packageName
|
||||||
|
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
|
||||||
|
*/
|
||||||
|
public static function getVersion($packageName)
|
||||||
|
{
|
||||||
|
foreach (self::getInstalled() as $installed) {
|
||||||
|
if (!isset($installed['versions'][$packageName])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($installed['versions'][$packageName]['version'])) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $installed['versions'][$packageName]['version'];
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $packageName
|
||||||
|
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
|
||||||
|
*/
|
||||||
|
public static function getPrettyVersion($packageName)
|
||||||
|
{
|
||||||
|
foreach (self::getInstalled() as $installed) {
|
||||||
|
if (!isset($installed['versions'][$packageName])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $installed['versions'][$packageName]['pretty_version'];
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $packageName
|
||||||
|
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
|
||||||
|
*/
|
||||||
|
public static function getReference($packageName)
|
||||||
|
{
|
||||||
|
foreach (self::getInstalled() as $installed) {
|
||||||
|
if (!isset($installed['versions'][$packageName])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($installed['versions'][$packageName]['reference'])) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $installed['versions'][$packageName]['reference'];
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $packageName
|
||||||
|
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
|
||||||
|
*/
|
||||||
|
public static function getInstallPath($packageName)
|
||||||
|
{
|
||||||
|
foreach (self::getInstalled() as $installed) {
|
||||||
|
if (!isset($installed['versions'][$packageName])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
* @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
|
||||||
|
*/
|
||||||
|
public static function getRootPackage()
|
||||||
|
{
|
||||||
|
$installed = self::getInstalled();
|
||||||
|
|
||||||
|
return $installed[0]['root'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the raw installed.php data for custom implementations
|
||||||
|
*
|
||||||
|
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
||||||
|
* @return array[]
|
||||||
|
* @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
|
||||||
|
*/
|
||||||
|
public static function getRawData()
|
||||||
|
{
|
||||||
|
@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
|
||||||
|
|
||||||
|
if (null === self::$installed) {
|
||||||
|
// only require the installed.php file if this file is loaded from its dumped location,
|
||||||
|
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||||
|
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||||
|
self::$installed = include __DIR__ . '/installed.php';
|
||||||
|
} else {
|
||||||
|
self::$installed = array();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$installed;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
||||||
|
*
|
||||||
|
* @return array[]
|
||||||
|
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||||
|
*/
|
||||||
|
public static function getAllRawData()
|
||||||
|
{
|
||||||
|
return self::getInstalled();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lets you reload the static array from another file
|
||||||
|
*
|
||||||
|
* This is only useful for complex integrations in which a project needs to use
|
||||||
|
* this class but then also needs to execute another project's autoloader in process,
|
||||||
|
* and wants to ensure both projects have access to their version of installed.php.
|
||||||
|
*
|
||||||
|
* A typical case would be PHPUnit, where it would need to make sure it reads all
|
||||||
|
* the data it needs from this class, then call reload() with
|
||||||
|
* `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
|
||||||
|
* the project in which it runs can then also use this class safely, without
|
||||||
|
* interference between PHPUnit's dependencies and the project's dependencies.
|
||||||
|
*
|
||||||
|
* @param array[] $data A vendor/composer/installed.php data set
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
* @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
|
||||||
|
*/
|
||||||
|
public static function reload($data)
|
||||||
|
{
|
||||||
|
self::$installed = $data;
|
||||||
|
self::$installedByVendor = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||||
|
*/
|
||||||
|
private static function getInstalled()
|
||||||
|
{
|
||||||
|
if (null === self::$canGetVendors) {
|
||||||
|
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
|
||||||
|
}
|
||||||
|
|
||||||
|
$installed = array();
|
||||||
|
|
||||||
|
if (self::$canGetVendors) {
|
||||||
|
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
|
||||||
|
if (isset(self::$installedByVendor[$vendorDir])) {
|
||||||
|
$installed[] = self::$installedByVendor[$vendorDir];
|
||||||
|
} elseif (is_file($vendorDir.'/composer/installed.php')) {
|
||||||
|
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||||
|
$required = require $vendorDir.'/composer/installed.php';
|
||||||
|
$installed[] = self::$installedByVendor[$vendorDir] = $required;
|
||||||
|
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
|
||||||
|
self::$installed = $installed[count($installed) - 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === self::$installed) {
|
||||||
|
// only require the installed.php file if this file is loaded from its dumped location,
|
||||||
|
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||||
|
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||||
|
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||||
|
$required = require __DIR__ . '/installed.php';
|
||||||
|
self::$installed = $required;
|
||||||
|
} else {
|
||||||
|
self::$installed = array();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self::$installed !== array()) {
|
||||||
|
$installed[] = self::$installed;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $installed;
|
||||||
|
}
|
||||||
|
}
|
21
app/PaymentDrivers/Rotessa/vendor/composer/LICENSE
vendored
Normal file
21
app/PaymentDrivers/Rotessa/vendor/composer/LICENSE
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
Copyright (c) Nils Adermann, Jordi Boggiano
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is furnished
|
||||||
|
to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
|
69
app/PaymentDrivers/Rotessa/vendor/composer/autoload_classmap.php
vendored
Normal file
69
app/PaymentDrivers/Rotessa/vendor/composer/autoload_classmap.php
vendored
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload_classmap.php @generated by Composer
|
||||||
|
|
||||||
|
$vendorDir = dirname(__DIR__);
|
||||||
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\DataProviders\\CAProvinces' => $baseDir . '/DataProviders/CAProvinces.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\DataProviders\\Frequencies' => $baseDir . '/DataProviders/Frequencies.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Events\\CacheGateways' => $baseDir . '/Events/CacheGateways.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Listeners\\CacheGateways' => $baseDir . '/Listeners/CacheGateways.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Models\\Gateway' => $baseDir . '/Models/Gateway.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\PaymentMethod' => $baseDir . '/PaymentMethod.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Providers\\EventServiceProvider' => $baseDir . '/Providers/EventServiceProvider.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Providers\\ServiceProvider' => $baseDir . '/Providers/ServiceProvider.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Resources\\Customer' => $baseDir . '/Resources/Customer.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Resources\\Transaction' => $baseDir . '/Resources/Transaction.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\View\\Components\\AccountComponent' => $baseDir . '/View/Components/Components.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\View\\Components\\AddressComponent' => $baseDir . '/View/Components/Components.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\View\\Components\\ContactComponent' => $baseDir . '/View/Components/Components.php',
|
||||||
|
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
||||||
|
'Omnipay\\Rotessa\\AbstractClient' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/AbstractClient.php',
|
||||||
|
'Omnipay\\Rotessa\\ApiTrait' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/ApiTrait.php',
|
||||||
|
'Omnipay\\Rotessa\\ClientInterface' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/ClientInterface.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\BadRequestException' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\InternalServerErrorException' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\NotAcceptableException' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\NotFoundException' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\ServiceUnavailableException' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\UnauthorizedException' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\UnprocessableEntityException' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\ValidationException' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Gateway' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Gateway.php',
|
||||||
|
'Omnipay\\Rotessa\\Http\\Client' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Http/Client.php',
|
||||||
|
'Omnipay\\Rotessa\\Http\\Response\\Response' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Http/Response/Response.php',
|
||||||
|
'Omnipay\\Rotessa\\IsValidTypeTrait' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/IsValidTypeTrait.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\AbstractRequest' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/AbstractRequest.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\BaseRequest' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/BaseRequest.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\DeleteTransactionSchedulesId' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/DeleteTransactionSchedulesId.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\GetCustomers' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetCustomers.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\GetCustomersId' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetCustomersId.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\GetTransactionSchedulesId' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetTransactionSchedulesId.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PatchCustomersId' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PatchCustomersId.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PatchTransactionSchedulesId' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PatchTransactionSchedulesId.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PostCustomers' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostCustomers.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PostCustomersShowWithCustomIdentifier' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostCustomersShowWithCustomIdentifier.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PostTransactionSchedules' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedules.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PostTransactionSchedulesCreateWithCustomIdentifier' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedulesCreateWithCustomIdentifier.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PostTransactionSchedulesUpdateViaPost' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedulesUpdateViaPost.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\RequestInterface' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/RequestInterface.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Response\\AbstractResponse' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Response/AbstractResponse.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Response\\BaseResponse' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Response/BaseResponse.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Response\\ResponseInterface' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Response/ResponseInterface.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\AbstractModel' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/AbstractModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\BaseModel' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/BaseModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\CustomerModel' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/CustomerModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\CustomerPatchModel' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/CustomerPatchModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\ModelInterface' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/ModelInterface.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\TransactionScheduleModel' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionScheduleModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\TransactionSchedulesIdBodyModel' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionSchedulesIdBodyModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\TransactionSchedulesUpdateViaPostBodyModel' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionSchedulesUpdateViaPostBodyModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\Address' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/Address.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\AuthorizationType' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/AuthorizationType.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\BankAccountType' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/BankAccountType.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\Country' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/Country.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\CustomerType' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/CustomerType.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\Frequency' => $vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/Frequency.php',
|
||||||
|
);
|
10
app/PaymentDrivers/Rotessa/vendor/composer/autoload_files.php
vendored
Normal file
10
app/PaymentDrivers/Rotessa/vendor/composer/autoload_files.php
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload_files.php @generated by Composer
|
||||||
|
|
||||||
|
$vendorDir = dirname(__DIR__);
|
||||||
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'11e81b9d3fcdef174c6937f97da35590' => $baseDir . '/View/Composers/Composer.php',
|
||||||
|
);
|
9
app/PaymentDrivers/Rotessa/vendor/composer/autoload_namespaces.php
vendored
Normal file
9
app/PaymentDrivers/Rotessa/vendor/composer/autoload_namespaces.php
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload_namespaces.php @generated by Composer
|
||||||
|
|
||||||
|
$vendorDir = dirname(__DIR__);
|
||||||
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
|
return array(
|
||||||
|
);
|
14
app/PaymentDrivers/Rotessa/vendor/composer/autoload_psr4.php
vendored
Normal file
14
app/PaymentDrivers/Rotessa/vendor/composer/autoload_psr4.php
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload_psr4.php @generated by Composer
|
||||||
|
|
||||||
|
$vendorDir = dirname(__DIR__);
|
||||||
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Omnipay\\Rotessa\\Exception\\' => array($vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception'),
|
||||||
|
'Omnipay\\Rotessa\\' => array($vendorDir . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa'),
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\View\\Components\\' => array($baseDir . '/View/Components'),
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Database\\Seeders\\' => array($baseDir . '/Database/Seeders'),
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\' => array($baseDir . '/'),
|
||||||
|
);
|
48
app/PaymentDrivers/Rotessa/vendor/composer/autoload_real.php
vendored
Normal file
48
app/PaymentDrivers/Rotessa/vendor/composer/autoload_real.php
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload_real.php @generated by Composer
|
||||||
|
|
||||||
|
class ComposerAutoloaderInita0415998b2208af2a6b954b72fdf7005
|
||||||
|
{
|
||||||
|
private static $loader;
|
||||||
|
|
||||||
|
public static function loadClassLoader($class)
|
||||||
|
{
|
||||||
|
if ('Composer\Autoload\ClassLoader' === $class) {
|
||||||
|
require __DIR__ . '/ClassLoader.php';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return \Composer\Autoload\ClassLoader
|
||||||
|
*/
|
||||||
|
public static function getLoader()
|
||||||
|
{
|
||||||
|
if (null !== self::$loader) {
|
||||||
|
return self::$loader;
|
||||||
|
}
|
||||||
|
|
||||||
|
spl_autoload_register(array('ComposerAutoloaderInita0415998b2208af2a6b954b72fdf7005', 'loadClassLoader'), true, true);
|
||||||
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||||
|
spl_autoload_unregister(array('ComposerAutoloaderInita0415998b2208af2a6b954b72fdf7005', 'loadClassLoader'));
|
||||||
|
|
||||||
|
require __DIR__ . '/autoload_static.php';
|
||||||
|
call_user_func(\Composer\Autoload\ComposerStaticInita0415998b2208af2a6b954b72fdf7005::getInitializer($loader));
|
||||||
|
|
||||||
|
$loader->register(true);
|
||||||
|
|
||||||
|
$filesToLoad = \Composer\Autoload\ComposerStaticInita0415998b2208af2a6b954b72fdf7005::$files;
|
||||||
|
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
|
||||||
|
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||||
|
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||||
|
|
||||||
|
require $file;
|
||||||
|
}
|
||||||
|
}, null, null);
|
||||||
|
foreach ($filesToLoad as $fileIdentifier => $file) {
|
||||||
|
$requireFile($fileIdentifier, $file);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $loader;
|
||||||
|
}
|
||||||
|
}
|
122
app/PaymentDrivers/Rotessa/vendor/composer/autoload_static.php
vendored
Normal file
122
app/PaymentDrivers/Rotessa/vendor/composer/autoload_static.php
vendored
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload_static.php @generated by Composer
|
||||||
|
|
||||||
|
namespace Composer\Autoload;
|
||||||
|
|
||||||
|
class ComposerStaticInita0415998b2208af2a6b954b72fdf7005
|
||||||
|
{
|
||||||
|
public static $files = array (
|
||||||
|
'11e81b9d3fcdef174c6937f97da35590' => __DIR__ . '/../..' . '/View/Composers/Composer.php',
|
||||||
|
);
|
||||||
|
|
||||||
|
public static $prefixLengthsPsr4 = array (
|
||||||
|
'O' =>
|
||||||
|
array (
|
||||||
|
'Omnipay\\Rotessa\\Exception\\' => 26,
|
||||||
|
'Omnipay\\Rotessa\\' => 16,
|
||||||
|
),
|
||||||
|
'A' =>
|
||||||
|
array (
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\View\\Components\\' => 43,
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Database\\Seeders\\' => 44,
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\' => 27,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
public static $prefixDirsPsr4 = array (
|
||||||
|
'Omnipay\\Rotessa\\Exception\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception',
|
||||||
|
),
|
||||||
|
'Omnipay\\Rotessa\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa',
|
||||||
|
),
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\View\\Components\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/../..' . '/View/Components',
|
||||||
|
),
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Database\\Seeders\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/../..' . '/Database/Seeders',
|
||||||
|
),
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/../..' . '/',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
public static $classMap = array (
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\DataProviders\\CAProvinces' => __DIR__ . '/../..' . '/DataProviders/CAProvinces.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\DataProviders\\Frequencies' => __DIR__ . '/../..' . '/DataProviders/Frequencies.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Events\\CacheGateways' => __DIR__ . '/../..' . '/Events/CacheGateways.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Listeners\\CacheGateways' => __DIR__ . '/../..' . '/Listeners/CacheGateways.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Models\\Gateway' => __DIR__ . '/../..' . '/Models/Gateway.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\PaymentMethod' => __DIR__ . '/../..' . '/PaymentMethod.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Providers\\EventServiceProvider' => __DIR__ . '/../..' . '/Providers/EventServiceProvider.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Providers\\ServiceProvider' => __DIR__ . '/../..' . '/Providers/ServiceProvider.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Resources\\Customer' => __DIR__ . '/../..' . '/Resources/Customer.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\Resources\\Transaction' => __DIR__ . '/../..' . '/Resources/Transaction.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\View\\Components\\AccountComponent' => __DIR__ . '/../..' . '/View/Components/Components.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\View\\Components\\AddressComponent' => __DIR__ . '/../..' . '/View/Components/Components.php',
|
||||||
|
'App\\PaymentDrivers\\Rotessa\\View\\Components\\ContactComponent' => __DIR__ . '/../..' . '/View/Components/Components.php',
|
||||||
|
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
||||||
|
'Omnipay\\Rotessa\\AbstractClient' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/AbstractClient.php',
|
||||||
|
'Omnipay\\Rotessa\\ApiTrait' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/ApiTrait.php',
|
||||||
|
'Omnipay\\Rotessa\\ClientInterface' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/ClientInterface.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\BadRequestException' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\InternalServerErrorException' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\NotAcceptableException' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\NotFoundException' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\ServiceUnavailableException' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\UnauthorizedException' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\UnprocessableEntityException' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Exception\\ValidationException' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Exception/Exceptions.php',
|
||||||
|
'Omnipay\\Rotessa\\Gateway' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Gateway.php',
|
||||||
|
'Omnipay\\Rotessa\\Http\\Client' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Http/Client.php',
|
||||||
|
'Omnipay\\Rotessa\\Http\\Response\\Response' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Http/Response/Response.php',
|
||||||
|
'Omnipay\\Rotessa\\IsValidTypeTrait' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/IsValidTypeTrait.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\AbstractRequest' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/AbstractRequest.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\BaseRequest' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/BaseRequest.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\DeleteTransactionSchedulesId' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/DeleteTransactionSchedulesId.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\GetCustomers' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetCustomers.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\GetCustomersId' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetCustomersId.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\GetTransactionSchedulesId' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetTransactionSchedulesId.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PatchCustomersId' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PatchCustomersId.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PatchTransactionSchedulesId' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PatchTransactionSchedulesId.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PostCustomers' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostCustomers.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PostCustomersShowWithCustomIdentifier' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostCustomersShowWithCustomIdentifier.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PostTransactionSchedules' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedules.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PostTransactionSchedulesCreateWithCustomIdentifier' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedulesCreateWithCustomIdentifier.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\PostTransactionSchedulesUpdateViaPost' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedulesUpdateViaPost.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Request\\RequestInterface' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/RequestInterface.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Response\\AbstractResponse' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Response/AbstractResponse.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Response\\BaseResponse' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Response/BaseResponse.php',
|
||||||
|
'Omnipay\\Rotessa\\Message\\Response\\ResponseInterface' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Response/ResponseInterface.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\AbstractModel' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/AbstractModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\BaseModel' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/BaseModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\CustomerModel' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/CustomerModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\CustomerPatchModel' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/CustomerPatchModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\ModelInterface' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/ModelInterface.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\TransactionScheduleModel' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionScheduleModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\TransactionSchedulesIdBodyModel' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionSchedulesIdBodyModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Model\\TransactionSchedulesUpdateViaPostBodyModel' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionSchedulesUpdateViaPostBodyModel.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\Address' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/Address.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\AuthorizationType' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/AuthorizationType.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\BankAccountType' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/BankAccountType.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\Country' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/Country.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\CustomerType' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/CustomerType.php',
|
||||||
|
'Omnipay\\Rotessa\\Object\\Frequency' => __DIR__ . '/..' . '/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/Frequency.php',
|
||||||
|
);
|
||||||
|
|
||||||
|
public static function getInitializer(ClassLoader $loader)
|
||||||
|
{
|
||||||
|
return \Closure::bind(function () use ($loader) {
|
||||||
|
$loader->prefixLengthsPsr4 = ComposerStaticInita0415998b2208af2a6b954b72fdf7005::$prefixLengthsPsr4;
|
||||||
|
$loader->prefixDirsPsr4 = ComposerStaticInita0415998b2208af2a6b954b72fdf7005::$prefixDirsPsr4;
|
||||||
|
$loader->classMap = ComposerStaticInita0415998b2208af2a6b954b72fdf7005::$classMap;
|
||||||
|
|
||||||
|
}, null, ClassLoader::class);
|
||||||
|
}
|
||||||
|
}
|
32
app/PaymentDrivers/Rotessa/vendor/composer/installed.json
vendored
Normal file
32
app/PaymentDrivers/Rotessa/vendor/composer/installed.json
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "karneaud/omnipay-rotessa",
|
||||||
|
"version": "1.0.0-beta",
|
||||||
|
"version_normalized": "1.0.0.0-beta",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/karneaud/omnipay-rotessa.git",
|
||||||
|
"reference": "master"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://github.com/karneaud/omnipay-rotessa/archive/refs/tags/v1.0.0-beta.zip"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"installation-source": "source",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Omnipay\\Rotessa\\": "./src/Omnipay/Rotessa/",
|
||||||
|
"Omnipay\\Rotessa\\Exception\\": "./src/Omnipay/Rotessa/Exception/"
|
||||||
|
},
|
||||||
|
"classmap": [
|
||||||
|
"./src/Omnipay/Rotessa/Exception/Exceptions.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"install-path": "../karneaud/omnipay-rotessa"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"dev-package-names": []
|
||||||
|
}
|
32
app/PaymentDrivers/Rotessa/vendor/composer/installed.php
vendored
Normal file
32
app/PaymentDrivers/Rotessa/vendor/composer/installed.php
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?php return array(
|
||||||
|
'root' => array(
|
||||||
|
'name' => 'karneaud/invoiceninja-rotessa',
|
||||||
|
'pretty_version' => '1.0.0+no-version-set',
|
||||||
|
'version' => '1.0.0.0',
|
||||||
|
'reference' => null,
|
||||||
|
'type' => 'laravel-module',
|
||||||
|
'install_path' => __DIR__ . '/../../',
|
||||||
|
'aliases' => array(),
|
||||||
|
'dev' => true,
|
||||||
|
),
|
||||||
|
'versions' => array(
|
||||||
|
'karneaud/invoiceninja-rotessa' => array(
|
||||||
|
'pretty_version' => '1.0.0+no-version-set',
|
||||||
|
'version' => '1.0.0.0',
|
||||||
|
'reference' => null,
|
||||||
|
'type' => 'laravel-module',
|
||||||
|
'install_path' => __DIR__ . '/../../',
|
||||||
|
'aliases' => array(),
|
||||||
|
'dev_requirement' => false,
|
||||||
|
),
|
||||||
|
'karneaud/omnipay-rotessa' => array(
|
||||||
|
'pretty_version' => '1.0.0-beta',
|
||||||
|
'version' => '1.0.0.0-beta',
|
||||||
|
'reference' => 'master',
|
||||||
|
'type' => 'library',
|
||||||
|
'install_path' => __DIR__ . '/../karneaud/omnipay-rotessa',
|
||||||
|
'aliases' => array(),
|
||||||
|
'dev_requirement' => false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
1
app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa
vendored
Submodule
1
app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa
vendored
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit c3107930d3f9d656ae3287241ebeded9a1daf8a9
|
109
app/PaymentDrivers/RotessaPaymentDriver.php
Normal file
109
app/PaymentDrivers/RotessaPaymentDriver.php
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\PaymentDrivers;
|
||||||
|
|
||||||
|
use Omnipay\Omnipay;
|
||||||
|
use App\Models\Payment;
|
||||||
|
use App\Models\SystemLog;
|
||||||
|
use App\Models\PaymentHash;
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
|
use App\Models\GatewayType;
|
||||||
|
use Omnipay\Rotessa\Gateway;
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use App\PaymentDrivers\BaseDriver;
|
||||||
|
use App\PaymentDrivers\Rotessa\BankTransfer;
|
||||||
|
|
||||||
|
class RotessaPaymentDriver extends BaseDriver
|
||||||
|
{
|
||||||
|
use MakesHash;
|
||||||
|
|
||||||
|
public $refundable = false;
|
||||||
|
|
||||||
|
public $token_billing = true;
|
||||||
|
|
||||||
|
public $can_authorise_credit_card = true;
|
||||||
|
|
||||||
|
public Gateway $gateway;
|
||||||
|
|
||||||
|
public $payment_method;
|
||||||
|
|
||||||
|
public static $methods = [
|
||||||
|
GatewayType::BANK_TRANSFER => BankTransfer::class,
|
||||||
|
GatewayType::BACS => BankTransfer::class,
|
||||||
|
GatewayType::ACSS => BankTransfer::class,
|
||||||
|
GatewayType::DIRECT_DEBIT => BankTransfer::class
|
||||||
|
];
|
||||||
|
|
||||||
|
public function init(): self
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->gateway = Omnipay::create(
|
||||||
|
$this->company_gateway->gateway->provider
|
||||||
|
);
|
||||||
|
$this->gateway->initialize((array) $this->company_gateway->getConfig());
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function gatewayTypes(): array
|
||||||
|
{
|
||||||
|
$types = [];
|
||||||
|
|
||||||
|
if ($this->client
|
||||||
|
&& isset($this->client->country)
|
||||||
|
&& (in_array($this->client->country->iso_3166_2, ['US']) || ($this->client->gateway_tokens()->where('gateway_type_id', GatewayType::BANK_TRANSFER)->exists()))
|
||||||
|
) {
|
||||||
|
$types[] = GatewayType::BANK_TRANSFER;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->client
|
||||||
|
&& $this->client->currency()
|
||||||
|
&& in_array($this->client->currency()->code, ['CAD', 'USD'])
|
||||||
|
&& isset($this->client->country)
|
||||||
|
&& in_array($this->client->country->iso_3166_2, ['CA', 'US'])) {
|
||||||
|
$types[] = GatewayType::DIRECT_DEBIT;
|
||||||
|
$types[] = GatewayType::ACSS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $types;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function setPaymentMethod($payment_method_id)
|
||||||
|
{
|
||||||
|
$class = self::$methods[$payment_method_id];
|
||||||
|
$this->payment_method = new $class($this);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function authorizeView(array $data)
|
||||||
|
{
|
||||||
|
return $this->payment_method->authorizeView($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function authorizeResponse($request)
|
||||||
|
{
|
||||||
|
return $this->payment_method->authorizeResponse($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function processPaymentView(array $data)
|
||||||
|
{
|
||||||
|
return $this->payment_method->paymentView($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function processPaymentResponse($request)
|
||||||
|
{
|
||||||
|
return $this->payment_method->paymentResponse($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user