diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index b1cc83ebc56b..aba759f78e22 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -13,6 +13,7 @@ namespace App\Console; use App\Jobs\Cron\RecurringInvoicesCron; use App\Jobs\Ninja\AdjustEmailQuota; +use App\Jobs\Ninja\CheckDbStatus; use App\Jobs\Util\ReminderJob; use App\Jobs\Util\SendFailedEmails; use App\Jobs\Util\UpdateExchangeRates; @@ -48,10 +49,13 @@ class Kernel extends ConsoleKernel $schedule->job(new UpdateExchangeRates)->daily(); + $schedule->job(new CheckDbStatus())->everyFiveMinutes(); + /* Run hosted specific jobs */ if(Ninja::isHosted()) { $schedule->job(new AdjustEmailQuota())->daily(); $schedule->job(new SendFailedEmails())->daily(); + $schedule->job(new CheckDbStatus())->everyFiveMinutes(); } /* Run queue's in shared hosting with this*/ if (Ninja::isSelfHost()) { diff --git a/app/Exceptions/GenericPaymentDriverFailure.php b/app/Exceptions/GenericPaymentDriverFailure.php new file mode 100644 index 000000000000..c3a8898f7574 --- /dev/null +++ b/app/Exceptions/GenericPaymentDriverFailure.php @@ -0,0 +1,11 @@ +json(['message' => 'The given data was invalid.', 'errors' => $exception->validator->getMessageBag()], 422); } elseif ($exception instanceof RelationNotFoundException && $request->expectsJson()) { return response()->json(['message' => $exception->getMessage()], 400); + } elseif ($exception instanceof GenericPaymentDriverFailure && $request->expectsJson()) { + return response()->json(['message' => $exception->getMessage()], 400); + } elseif ($exception instanceof GenericPaymentDriverFailure) { + $data['message'] = $exception->getMessage(); + return render('errors.layout', $data); } + return parent::render($request, $exception); } diff --git a/app/Jobs/Ninja/CheckDbStatus.php b/app/Jobs/Ninja/CheckDbStatus.php new file mode 100644 index 000000000000..fb159a00e9e7 --- /dev/null +++ b/app/Jobs/Ninja/CheckDbStatus.php @@ -0,0 +1,56 @@ +entity->first_name . ' ' . $this->entity->last_name; } + + public function first_name() + { + return $this->entity->first_name ?: ''; + } + + public function last_name() + { + return $this->entity->last_name ?: ''; + } } diff --git a/app/PaymentDrivers/Authorize/AuthorizeCreateCustomer.php b/app/PaymentDrivers/Authorize/AuthorizeCreateCustomer.php index 51e12d9edfba..ce2534f08bb5 100644 --- a/app/PaymentDrivers/Authorize/AuthorizeCreateCustomer.php +++ b/app/PaymentDrivers/Authorize/AuthorizeCreateCustomer.php @@ -12,9 +12,16 @@ namespace App\PaymentDrivers\Authorize; +use App\Exceptions\GenericPaymentDriverFailure; +use App\Models\Client; use App\Models\GatewayType; use App\PaymentDrivers\AuthorizePaymentDriver; - +use net\authorize\api\constants\ANetEnvironment; +use net\authorize\api\contract\v1\CreateCustomerProfileRequest; +use net\authorize\api\contract\v1\CustomerAddressType; +use net\authorize\api\contract\v1\CustomerPaymentProfileType; +use net\authorize\api\contract\v1\CustomerProfileType; +use net\authorize\api\controller\CreateCustomerProfileController; /** * Class BaseDriver * @package App\PaymentDrivers @@ -25,14 +32,57 @@ class AuthorizeCreateCustomer public $authorize; - public function __construct(AuthorizePaymentDriver $authorize) + public $client; + + public function __construct(AuthorizePaymentDriver $authorize, Client $client) { $this->authorize = $authorize; + + $this->client = $client; } public function create($data = null) { + error_reporting (E_ALL & ~E_DEPRECATED); + $merchantAuthentication = $this->authorize->init(); + // Create the Bill To info for new payment type + + $contact = $this->client->primary_contact()->first(); + + // Create a new CustomerProfileType and add the payment profile object + $customerProfile = new CustomerProfileType(); + $customerProfile->setDescription($this->client->present()->name()); + $customerProfile->setMerchantCustomerId("M_" . time()); + $customerProfile->setEmail($this->client->present()->email()); + + // Assemble the complete transaction request + $request = new CreateCustomerProfileRequest(); + $request->setMerchantAuthentication($merchantAuthentication); + $request->setRefId($refId); + $request->setProfile($customerProfile); + + // Create the controller and get the response + $controller = new CreateCustomerProfileController($request); + $response = $controller->executeWithApiResponse($this->authorize->mode()); + + if (($response != null) && ($response->getMessages()->getResultCode() == "Ok")) { + + return $response->getCustomerProfileId(); + + } else { + + $errorMessages = $response->getMessages()->getMessage(); + + $message = "Unable to add customer to Authorize.net gateway"; + + if(is_array($errorMessages)) + $message = $errorMessages[0]->getCode() . " " .$errorMessages[0]->getText(); + + throw new GenericPaymentDriverFailure($message); + } + } + } \ No newline at end of file diff --git a/app/PaymentDrivers/Authorize/AuthorizeCreditCard.php b/app/PaymentDrivers/Authorize/AuthorizeCreditCard.php index d6b49eec792e..ded2b79cf2a1 100644 --- a/app/PaymentDrivers/Authorize/AuthorizeCreditCard.php +++ b/app/PaymentDrivers/Authorize/AuthorizeCreditCard.php @@ -12,9 +12,20 @@ namespace App\PaymentDrivers\Authorize; +use App\Exceptions\GenericPaymentDriverFailure; +use App\Models\ClientGatewayToken; use App\Models\GatewayType; use App\PaymentDrivers\AuthorizePaymentDriver; use App\PaymentDrivers\Authorize\AuthorizeCreateCustomer; +use net\authorize\api\contract\v1\CreateCustomerPaymentProfileRequest; +use net\authorize\api\contract\v1\CreateCustomerProfileRequest; +use net\authorize\api\contract\v1\CustomerAddressType; +use net\authorize\api\contract\v1\CustomerPaymentProfileType; +use net\authorize\api\contract\v1\CustomerProfileType; +use net\authorize\api\contract\v1\OpaqueDataType; +use net\authorize\api\contract\v1\PaymentType; +use net\authorize\api\controller\CreateCustomerPaymentProfileController; +use net\authorize\api\controller\CreateCustomerProfileController; /** * Class BaseDriver @@ -25,6 +36,8 @@ class AuthorizePaymentMethod { public $authorize; + public $payment_method; + public function __construct(AuthorizePaymentDriver $authorize) { $this->authorize = $authorize; @@ -32,6 +45,7 @@ class AuthorizePaymentMethod public function authorizeView($payment_method) { + $this->payment_method = $payment_method; switch ($payment_method) { case GatewayType::CREDIT_CARD: @@ -82,14 +96,17 @@ class AuthorizePaymentMethod public function authorizeCreditCardResponse($data) { + $client_profile_id = null; - if($client_gateway_token_record = $this->authorize->findClientGatewayRecord()) - $this->addCreditCardToClient($client_gateway_token_record, $data); + if($client_gateway_token = $this->authorize->findClientGatewayRecord()) + $payment_profile = $this->addPaymentMethodToClient($client_gateway_token->gateway_customer_reference, $data); else{ - $client_gateway_token_record = (new AuthorizeCreateCustomer($this->authorize))->create($data); - $this->addCreditCardToClient($client_gateway_token_record, $data); + $gateway_customer_reference = (new AuthorizeCreateCustomer($this->authorize, $this->client))->create($data); + $payment_profile = $this->addPaymentMethodToClient($gateway_customer_reference, $data); } + $this->createClientGatewayToken($payment_profile, $gateway_customer_reference); + return redirect()->route('client.payment_methods.index'); } @@ -99,11 +116,103 @@ class AuthorizePaymentMethod } - private function addCreditCardToClient(ClientGatewayToken $client_gateway_token, $data) + private function createClientGatewayToken($payment_profile, $gateway_customer_reference) { - //add a payment profile to the client profile + $client_gateway_token = new ClientGatewayToken(); + $client_gateway_token->company_id = $this->client->company_id; + $client_gateway_token->client_id = $this->client->id; + $client_gateway_token->token = $payment_profile->getCustomerPaymentProfileId(); + $client_gateway_token->company_gateway_id = $this->authorize->company_gateway->id; + $client_gateway_token->gateway_type_id = $this->payment_method; + $client_gateway_token->gateway_customer_reference = $gateway_customer_reference; + $client_gateway_token->meta = $this->buildPaymentMethod($payment_profile); + $client_gateway_token->save(); + } + + public function buildPaymentMethod($payment_profile) + { + $payment_meta = new \stdClass; + $payment_meta->exp_month = $stripe_payment_method_obj['card']['exp_month']; + $payment_meta->exp_year = $stripe_payment_method_obj['card']['exp_year']; + $payment_meta->brand = $stripe_payment_method_obj['card']['brand']; + $payment_meta->last4 = $stripe_payment_method_obj['card']['last4']; + $payment_meta->type = $this->payment_method; + + return $payment_meta; + } + + private function addPaymentMethodToClient($gateway_customer_reference, $data) + { + + error_reporting (E_ALL & ~E_DEPRECATED); + + $merchantAuthentication = $this->authorize->init(); + + // Set the transaction's refId + $refId = 'ref' . time(); + + // Set the payment data for the payment profile to a token obtained from Accept.js + $op = new OpaqueDataType(); + $op->setDataDescriptor($data['dataDescriptor']); + $op->setDataValue($data['dataValue']); + $paymentOne = new PaymentType(); + $paymentOne->setOpaqueData($op); + + $contact = $this->client->primary_contact()->first(); + + if($contact){ + // Create the Bill To info for new payment type + $billto = new CustomerAddressType(); + $billto->setFirstName($contact->present()->first_name()); + $billto->setLastName($contact->present()->last_name()); + $billto->setCompany($this->client->present()->name()); + $billto->setAddress($this->client->address1); + $billto->setCity($this->client->city); + $billto->setState($this->client->state); + $billto->setZip($this->client->postal_code); + $billto->setCountry("USA"); + $billto->setPhoneNumber($this->client->phone); + } + + // Create a new Customer Payment Profile object + $paymentprofile = new CustomerPaymentProfileType(); + $paymentprofile->setCustomerType('individual'); + + if($billto) + $paymentprofile->setBillTo($billto); + + $paymentprofile->setPayment($paymentOne); + $paymentprofile->setDefaultPaymentProfile(true); + $paymentprofiles[] = $paymentprofile; + + // Assemble the complete transaction request + $paymentprofilerequest = new CreateCustomerPaymentProfileRequest(); + $paymentprofilerequest->setMerchantAuthentication($merchantAuthentication); + + // Add an existing profile id to the request + $paymentprofilerequest->setCustomerProfileId($gateway_customer_references); + $paymentprofilerequest->setPaymentProfile($paymentprofile); + $paymentprofilerequest->setValidationMode("liveMode"); + + // Create the controller and get the response + $controller = new CreateCustomerPaymentProfileController($paymentprofilerequest); + $response = $controller->executeWithApiResponse($this->authorize->mode()); + + if (($response != null) && ($response->getMessages()->getResultCode() == "Ok") ) { + return $response; + } else { + + $errorMessages = $response->getMessages()->getMessage(); + + $message = "Unable to add customer to Authorize.net gateway"; + + if(is_array($errorMessages)) + $message = $errorMessages[0]->getCode() . " " .$errorMessages[0]->getText(); + + throw new GenericPaymentDriverFailure($message); + + } - //we only use the $client_gateway_token record as a reference to create a NEW client_gateway_token for this gateway } } diff --git a/composer.lock b/composer.lock index df46734a207f..7eac0213d354 100644 --- a/composer.lock +++ b/composer.lock @@ -107,16 +107,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.138.10", + "version": "3.140.4", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "cf197a033ad75cd9e3a90a207cf5ec8935aafa48" + "reference": "298ec070adad5760c4b90348219bb3e6bd7a9322" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/cf197a033ad75cd9e3a90a207cf5ec8935aafa48", - "reference": "cf197a033ad75cd9e3a90a207cf5ec8935aafa48", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/298ec070adad5760c4b90348219bb3e6bd7a9322", + "reference": "298ec070adad5760c4b90348219bb3e6bd7a9322", "shasum": "" }, "require": { @@ -187,7 +187,7 @@ "s3", "sdk" ], - "time": "2020-05-28T18:12:07+00:00" + "time": "2020-06-09T18:11:16+00:00" }, { "name": "beganovich/omnipay-checkout", @@ -410,16 +410,16 @@ }, { "name": "composer/composer", - "version": "1.10.6", + "version": "1.10.7", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "be81b9c4735362c26876bdbfd3b5bc7e7f711c88" + "reference": "956608ea4f7de9e58c53dfb019d85ae62b193c39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/be81b9c4735362c26876bdbfd3b5bc7e7f711c88", - "reference": "be81b9c4735362c26876bdbfd3b5bc7e7f711c88", + "url": "https://api.github.com/repos/composer/composer/zipball/956608ea4f7de9e58c53dfb019d85ae62b193c39", + "reference": "956608ea4f7de9e58c53dfb019d85ae62b193c39", "shasum": "" }, "require": { @@ -427,7 +427,7 @@ "composer/semver": "^1.0", "composer/spdx-licenses": "^1.2", "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "justinrainbow/json-schema": "^5.2.10", "php": "^5.3.2 || ^7.0", "psr/log": "^1.0", "seld/jsonlint": "^1.4", @@ -492,12 +492,16 @@ "url": "https://packagist.com", "type": "custom" }, + { + "url": "https://github.com/composer", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2020-05-06T08:28:10+00:00" + "time": "2020-06-03T08:03:56+00:00" }, { "name": "composer/package-versions-deprecated", @@ -687,16 +691,16 @@ }, { "name": "composer/xdebug-handler", - "version": "1.4.1", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7" + "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1ab9842d69e64fb3a01be6b656501032d1b78cb7", - "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", + "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", "shasum": "" }, "require": { @@ -727,7 +731,21 @@ "Xdebug", "performance" ], - "time": "2020-03-01T12:26:26+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-06-04T11:16:35+00:00" }, { "name": "czproject/git-php", @@ -1626,22 +1644,22 @@ }, { "name": "google/apiclient", - "version": "v2.4.1", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client.git", - "reference": "1fdfe942f9aaf3064e621834a5e3047fccb3a6da" + "reference": "9ab9cc07f66e2c7274ea2753f102ae24d1271410" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/1fdfe942f9aaf3064e621834a5e3047fccb3a6da", - "reference": "1fdfe942f9aaf3064e621834a5e3047fccb3a6da", + "url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/9ab9cc07f66e2c7274ea2753f102ae24d1271410", + "reference": "9ab9cc07f66e2c7274ea2753f102ae24d1271410", "shasum": "" }, "require": { "firebase/php-jwt": "~2.0||~3.0||~4.0||~5.0", "google/apiclient-services": "~0.13", - "google/auth": "^1.0", + "google/auth": "^1.9", "guzzlehttp/guzzle": "~5.3.1||~6.0", "guzzlehttp/psr7": "^1.2", "monolog/monolog": "^1.17|^2.0", @@ -1683,20 +1701,20 @@ "keywords": [ "google" ], - "time": "2020-03-26T15:30:32+00:00" + "time": "2020-05-26T22:29:38+00:00" }, { "name": "google/apiclient-services", - "version": "v0.137", + "version": "v0.139", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "92ae53e812037230b23d373bac12516f90c330cc" + "reference": "84e99f792cae7bd92b8b54c75b0ad3502d628db6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/92ae53e812037230b23d373bac12516f90c330cc", - "reference": "92ae53e812037230b23d373bac12516f90c330cc", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/84e99f792cae7bd92b8b54c75b0ad3502d628db6", + "reference": "84e99f792cae7bd92b8b54c75b0ad3502d628db6", "shasum": "" }, "require": { @@ -1720,7 +1738,7 @@ "keywords": [ "google" ], - "time": "2020-05-25T00:24:28+00:00" + "time": "2020-06-08T00:24:31+00:00" }, { "name": "google/auth", @@ -2404,16 +2422,16 @@ }, { "name": "laravel/framework", - "version": "v6.18.16", + "version": "v6.18.19", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "73f18a6bc58fb91aa83925161db25aa3674b73e9" + "reference": "69321afec31f4a908112e5dc8995fc91024fd971" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/73f18a6bc58fb91aa83925161db25aa3674b73e9", - "reference": "73f18a6bc58fb91aa83925161db25aa3674b73e9", + "url": "https://api.github.com/repos/laravel/framework/zipball/69321afec31f4a908112e5dc8995fc91024fd971", + "reference": "69321afec31f4a908112e5dc8995fc91024fd971", "shasum": "" }, "require": { @@ -2424,7 +2442,7 @@ "ext-mbstring": "*", "ext-openssl": "*", "league/commonmark": "^1.3", - "league/flysystem": "^1.0.8", + "league/flysystem": "^1.0.34", "monolog/monolog": "^1.12|^2.0", "nesbot/carbon": "^2.0", "opis/closure": "^3.1", @@ -2547,7 +2565,7 @@ "framework", "laravel" ], - "time": "2020-05-26T14:31:44+00:00" + "time": "2020-06-09T13:59:34+00:00" }, { "name": "laravel/slack-notification-channel", @@ -2608,29 +2626,30 @@ }, { "name": "laravel/socialite", - "version": "v4.3.2", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "4bd66ee416fea04398dee5b8c32d65719a075db4" + "reference": "80951df0d93435b773aa00efe1fad6d5015fac75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/4bd66ee416fea04398dee5b8c32d65719a075db4", - "reference": "4bd66ee416fea04398dee5b8c32d65719a075db4", + "url": "https://api.github.com/repos/laravel/socialite/zipball/80951df0d93435b773aa00efe1fad6d5015fac75", + "reference": "80951df0d93435b773aa00efe1fad6d5015fac75", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/guzzle": "~6.0", + "guzzlehttp/guzzle": "^6.0|^7.0", "illuminate/http": "~5.7.0|~5.8.0|^6.0|^7.0", "illuminate/support": "~5.7.0|~5.8.0|^6.0|^7.0", - "league/oauth1-client": "~1.0", + "league/oauth1-client": "^1.0", "php": "^7.1.3" }, "require-dev": { "illuminate/contracts": "~5.7.0|~5.8.0|^6.0|^7.0", "mockery/mockery": "^1.0", + "orchestra/testbench": "^3.7|^3.8|^4.0|^5.0", "phpunit/phpunit": "^7.0|^8.0" }, "type": "library", @@ -2668,7 +2687,7 @@ "laravel", "oauth" ], - "time": "2020-02-04T15:30:01+00:00" + "time": "2020-06-03T13:30:03+00:00" }, { "name": "laravel/tinker", @@ -2925,16 +2944,16 @@ }, { "name": "league/flysystem-aws-s3-v3", - "version": "1.0.24", + "version": "1.0.25", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "4382036bde5dc926f9b8b337e5bdb15e5ec7b570" + "reference": "d409b97a50bf85fbde30cbc9fc10237475e696ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/4382036bde5dc926f9b8b337e5bdb15e5ec7b570", - "reference": "4382036bde5dc926f9b8b337e5bdb15e5ec7b570", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/d409b97a50bf85fbde30cbc9fc10237475e696ea", + "reference": "d409b97a50bf85fbde30cbc9fc10237475e696ea", "shasum": "" }, "require": { @@ -2968,7 +2987,7 @@ } ], "description": "Flysystem adapter for the AWS S3 SDK v3.x", - "time": "2020-02-23T13:31:58+00:00" + "time": "2020-06-02T18:41:58+00:00" }, { "name": "league/flysystem-cached-adapter", @@ -3259,22 +3278,22 @@ }, { "name": "livewire/livewire", - "version": "v1.1.0", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "ee22192220ca7b4f50dec2b0b6ea4da9e49ccf11" + "reference": "874ba1b8d6b12efa472147697942fe2f78a5d371" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/ee22192220ca7b4f50dec2b0b6ea4da9e49ccf11", - "reference": "ee22192220ca7b4f50dec2b0b6ea4da9e49ccf11", + "url": "https://api.github.com/repos/livewire/livewire/zipball/874ba1b8d6b12efa472147697942fe2f78a5d371", + "reference": "874ba1b8d6b12efa472147697942fe2f78a5d371", "shasum": "" }, "require": { - "illuminate/database": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/support": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/validation": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", + "illuminate/database": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0", + "illuminate/support": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0", + "illuminate/validation": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0", "php": "^7.1.3", "symfony/http-kernel": "^4.0|^5.0" }, @@ -3318,7 +3337,7 @@ "type": "github" } ], - "time": "2020-05-13T15:22:11+00:00" + "time": "2020-06-08T15:12:38+00:00" }, { "name": "maennchen/zipstream-php", @@ -3742,16 +3761,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.4.0", + "version": "v4.5.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120" + "reference": "53c2753d756f5adb586dca79c2ec0e2654dd9463" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", - "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/53c2753d756f5adb586dca79c2ec0e2654dd9463", + "reference": "53c2753d756f5adb586dca79c2ec0e2654dd9463", "shasum": "" }, "require": { @@ -3790,7 +3809,7 @@ "parser", "php" ], - "time": "2020-04-10T16:34:50+00:00" + "time": "2020-06-03T07:24:19+00:00" }, { "name": "nwidart/laravel-modules", @@ -3865,16 +3884,16 @@ }, { "name": "omnipay/common", - "version": "v3.0.3", + "version": "v3.0.4", "source": { "type": "git", "url": "https://github.com/thephpleague/omnipay-common.git", - "reference": "24ea70aa6e0f76d8b85d7a35d8a6560c746f566f" + "reference": "d6a1bed63cae270da32b2171fe31f820d334d452" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay-common/zipball/24ea70aa6e0f76d8b85d7a35d8a6560c746f566f", - "reference": "24ea70aa6e0f76d8b85d7a35d8a6560c746f566f", + "url": "https://api.github.com/repos/thephpleague/omnipay-common/zipball/d6a1bed63cae270da32b2171fe31f820d334d452", + "reference": "d6a1bed63cae270da32b2171fe31f820d334d452", "shasum": "" }, "require": { @@ -3943,7 +3962,7 @@ "payment", "purchase" ], - "time": "2020-02-12T12:28:23+00:00" + "time": "2020-06-02T05:57:19+00:00" }, { "name": "omnipay/paypal", @@ -4066,16 +4085,16 @@ }, { "name": "opis/closure", - "version": "3.5.3", + "version": "3.5.4", "source": { "type": "git", "url": "https://github.com/opis/closure.git", - "reference": "cac47092144043d5d676e2e7cf8d0d2f83fc89ca" + "reference": "1d0deef692f66dae5d70663caee2867d0971306b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/cac47092144043d5d676e2e7cf8d0d2f83fc89ca", - "reference": "cac47092144043d5d676e2e7cf8d0d2f83fc89ca", + "url": "https://api.github.com/repos/opis/closure/zipball/1d0deef692f66dae5d70663caee2867d0971306b", + "reference": "1d0deef692f66dae5d70663caee2867d0971306b", "shasum": "" }, "require": { @@ -4123,7 +4142,7 @@ "serialization", "serialize" ], - "time": "2020-05-25T09:32:45+00:00" + "time": "2020-06-07T11:41:29+00:00" }, { "name": "paragonie/random_compat", @@ -4595,16 +4614,16 @@ }, { "name": "phpoption/phpoption", - "version": "1.7.3", + "version": "1.7.4", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae" + "reference": "b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/4acfd6a4b33a509d8c88f50e5222f734b6aeebae", - "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3", + "reference": "b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3", "shasum": "" }, "require": { @@ -4646,7 +4665,17 @@ "php", "type" ], - "time": "2020-03-21T18:07:53+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2020-06-07T10:40:07+00:00" }, { "name": "phpseclib/phpseclib", @@ -5695,16 +5724,16 @@ }, { "name": "sentry/sentry-laravel", - "version": "1.7.1", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-laravel.git", - "reference": "8ec4695c5c6fa28d952c0f361e02997e84920354" + "reference": "912731d2b704fb6a97cef89c7a8b5c367cbf6088" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/8ec4695c5c6fa28d952c0f361e02997e84920354", - "reference": "8ec4695c5c6fa28d952c0f361e02997e84920354", + "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/912731d2b704fb6a97cef89c7a8b5c367cbf6088", + "reference": "912731d2b704fb6a97cef89c7a8b5c367cbf6088", "shasum": "" }, "require": { @@ -5770,7 +5799,7 @@ "type": "custom" } ], - "time": "2020-04-01T10:30:44+00:00" + "time": "2020-06-02T12:39:20+00:00" }, { "name": "spatie/browsershot", @@ -5934,16 +5963,16 @@ }, { "name": "spatie/temporary-directory", - "version": "1.2.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/spatie/temporary-directory.git", - "reference": "fcb127e615700751dac2aefee0ea2808ff3f5bb1" + "reference": "eeb84a7a3543e90759cd852ccb468e3d3340d99d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/fcb127e615700751dac2aefee0ea2808ff3f5bb1", - "reference": "fcb127e615700751dac2aefee0ea2808ff3f5bb1", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/eeb84a7a3543e90759cd852ccb468e3d3340d99d", + "reference": "eeb84a7a3543e90759cd852ccb468e3d3340d99d", "shasum": "" }, "require": { @@ -5976,7 +6005,7 @@ "spatie", "temporary-directory" ], - "time": "2019-12-15T18:52:09+00:00" + "time": "2020-06-08T08:58:45+00:00" }, { "name": "staudenmeir/eloquent-has-many-deep", @@ -6023,16 +6052,16 @@ }, { "name": "stripe/stripe-php", - "version": "v7.36.1", + "version": "v7.37.0", "source": { "type": "git", "url": "https://github.com/stripe/stripe-php.git", - "reference": "80979c8959dff86bf7b0610e44599a67132ebcd3" + "reference": "246871743edb26c7a7657784205218daf7d99a73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stripe/stripe-php/zipball/80979c8959dff86bf7b0610e44599a67132ebcd3", - "reference": "80979c8959dff86bf7b0610e44599a67132ebcd3", + "url": "https://api.github.com/repos/stripe/stripe-php/zipball/246871743edb26c7a7657784205218daf7d99a73", + "reference": "246871743edb26c7a7657784205218daf7d99a73", "shasum": "" }, "require": { @@ -6076,7 +6105,7 @@ "payment processing", "stripe" ], - "time": "2020-05-28T18:11:30+00:00" + "time": "2020-06-09T22:55:43+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -8202,16 +8231,16 @@ }, { "name": "turbo124/beacon", - "version": "0.8.2", + "version": "0.83", "source": { "type": "git", "url": "https://github.com/turbo124/beacon.git", - "reference": "2797b47faf30a3595e8ce5f5ad8e79e49989cc9a" + "reference": "97157e507fcca352d1cc445b8a3a1970ec448eee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/turbo124/beacon/zipball/2797b47faf30a3595e8ce5f5ad8e79e49989cc9a", - "reference": "2797b47faf30a3595e8ce5f5ad8e79e49989cc9a", + "url": "https://api.github.com/repos/turbo124/beacon/zipball/97157e507fcca352d1cc445b8a3a1970ec448eee", + "reference": "97157e507fcca352d1cc445b8a3a1970ec448eee", "shasum": "" }, "require": { @@ -8258,31 +8287,31 @@ "lightlogs", "turbo124" ], - "time": "2020-05-08T00:53:52+00:00" + "time": "2020-06-09T07:24:25+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v3.6.5", + "version": "v3.6.6", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "8b64814b356b96a90d2bc942b152c80d8888b8d4" + "reference": "4669484ccbc38fe7c4e0c50456778f2010566aad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8b64814b356b96a90d2bc942b152c80d8888b8d4", - "reference": "8b64814b356b96a90d2bc942b152c80d8888b8d4", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/4669484ccbc38fe7c4e0c50456778f2010566aad", + "reference": "4669484ccbc38fe7c4e0c50456778f2010566aad", "shasum": "" }, "require": { "php": "^5.4 || ^7.0 || ^8.0", - "phpoption/phpoption": "^1.5", - "symfony/polyfill-ctype": "^1.9" + "phpoption/phpoption": "^1.5.2", + "symfony/polyfill-ctype": "^1.16" }, "require-dev": { "ext-filter": "*", "ext-pcre": "*", - "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0" }, "suggest": { "ext-filter": "Required to use the boolean validator.", @@ -8331,7 +8360,7 @@ "type": "tidelift" } ], - "time": "2020-05-23T09:42:03+00:00" + "time": "2020-06-02T14:08:54+00:00" }, { "name": "webpatser/laravel-countries", @@ -8730,16 +8759,16 @@ }, { "name": "darkaonline/l5-swagger", - "version": "6.0.3", + "version": "6.0.4", "source": { "type": "git", "url": "https://github.com/DarkaOnLine/L5-Swagger.git", - "reference": "df9e72d705e7757a700ac58d41c62b10c6ddc48c" + "reference": "690a2db0db6091139504f454c42fcdfb7a46f405" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DarkaOnLine/L5-Swagger/zipball/df9e72d705e7757a700ac58d41c62b10c6ddc48c", - "reference": "df9e72d705e7757a700ac58d41c62b10c6ddc48c", + "url": "https://api.github.com/repos/DarkaOnLine/L5-Swagger/zipball/690a2db0db6091139504f454c42fcdfb7a46f405", + "reference": "690a2db0db6091139504f454c42fcdfb7a46f405", "shasum": "" }, "require": { @@ -8790,7 +8819,13 @@ "laravel", "swagger" ], - "time": "2019-11-08T17:08:43+00:00" + "funding": [ + { + "url": "https://github.com/DarkaOnLine", + "type": "github" + } + ], + "time": "2020-06-05T05:07:26+00:00" }, { "name": "doctrine/annotations", @@ -9414,70 +9449,6 @@ ], "time": "2018-11-21T21:40:54+00:00" }, - { - "name": "omnipay/authorizenet", - "version": "3.3.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/omnipay-authorizenet.git", - "reference": "8ccce3190c00d0a129c62dc1d1451d0125bab640" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay-authorizenet/zipball/8ccce3190c00d0a129c62dc1d1451d0125bab640", - "reference": "8ccce3190c00d0a129c62dc1d1451d0125bab640", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-libxml": "*", - "ext-simplexml": "*", - "omnipay/common": "^3" - }, - "require-dev": { - "omnipay/tests": "^3", - "phpro/grumphp": "^0.14", - "squizlabs/php_codesniffer": "^3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Omnipay\\AuthorizeNet\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Adrian Macneil", - "email": "adrian@adrianmacneil.com" - }, - { - "name": "Omnipay Contributors", - "homepage": "https://github.com/thephpleague/omnipay-authorizenet/contributors" - } - ], - "description": "Authorize.Net gateway for the Omnipay payment processing library", - "homepage": "https://github.com/thephpleague/omnipay-authorizenet", - "keywords": [ - "authorize", - "authorize net", - "authorize.net", - "gateway", - "merchant", - "omnipay", - "pay", - "payment" - ], - "time": "2019-04-27T22:33:23+00:00" - }, { "name": "phar-io/manifest", "version": "1.0.3", @@ -10760,16 +10731,16 @@ }, { "name": "swagger-api/swagger-ui", - "version": "v3.25.5", + "version": "v3.26.0", "source": { "type": "git", "url": "https://github.com/swagger-api/swagger-ui.git", - "reference": "28b7d7c54866f3581f0f703f3971422a09ebd649" + "reference": "b9064157e710d0c56d4459b5a7c16751ad0ae72c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/28b7d7c54866f3581f0f703f3971422a09ebd649", - "reference": "28b7d7c54866f3581f0f703f3971422a09ebd649", + "url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/b9064157e710d0c56d4459b5a7c16751ad0ae72c", + "reference": "b9064157e710d0c56d4459b5a7c16751ad0ae72c", "shasum": "" }, "type": "library", @@ -10813,7 +10784,7 @@ "swagger", "ui" ], - "time": "2020-05-28T17:37:47+00:00" + "time": "2020-06-05T00:57:11+00:00" }, { "name": "symfony/yaml", @@ -10978,16 +10949,16 @@ }, { "name": "wildbit/postmark-php", - "version": "2.10.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/wildbit/postmark-php.git", - "reference": "3e2ed1deaebb5e6284ccfd143d852d7dec3cba0e" + "reference": "dd738b4de6d7dc3d296a1a7bad8f0b26f9693410" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wildbit/postmark-php/zipball/3e2ed1deaebb5e6284ccfd143d852d7dec3cba0e", - "reference": "3e2ed1deaebb5e6284ccfd143d852d7dec3cba0e", + "url": "https://api.github.com/repos/wildbit/postmark-php/zipball/dd738b4de6d7dc3d296a1a7bad8f0b26f9693410", + "reference": "dd738b4de6d7dc3d296a1a7bad8f0b26f9693410", "shasum": "" }, "require": { @@ -11008,7 +10979,7 @@ "MIT" ], "description": "The officially supported client for Postmark (http://postmarkapp.com)", - "time": "2020-04-09T10:02:15+00:00" + "time": "2020-06-08T08:42:08+00:00" }, { "name": "zircote/swagger-php",