Working on Authorize.net

This commit is contained in:
David Bomba 2020-06-10 15:21:11 +10:00
parent 17d10f5f66
commit d6a8ef8de4
8 changed files with 407 additions and 189 deletions

View File

@ -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()) {

View File

@ -0,0 +1,11 @@
<?php
namespace App\Exceptions;
use Exception;
use Throwable;
class GenericPaymentDriverFailure extends Exception
{
// ..
}

View File

@ -11,6 +11,7 @@
namespace App\Exceptions;
use App\Exceptions\GenericPaymentDriverFailure;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Auth\AuthenticationException;
@ -115,8 +116,14 @@ class Handler extends ExceptionHandler
return response()->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);
}

View File

@ -0,0 +1,56 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Jobs\Ninja;
use App\Helpers\Email\InvoiceEmail;
use App\Jobs\Invoice\EmailInvoice;
use App\Libraries\MultiDB;
use App\Models\Account;
use App\Models\SystemLog;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Turbo124\Beacon\Jobs\Database\MySQL\DbStatus;
class CheckDbStatus implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
info("checking db status");
DbStatus::dispatch('db-ninja-01', 'db.status.db-ninja-01');
DbStatus::dispatch('db-ninja-02', 'db.status.db-ninja-02');
}
}

View File

@ -25,4 +25,14 @@ class ClientContactPresenter extends EntityPresenter
{
return $this->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 ?: '';
}
}

View File

@ -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);
}
}
}

View File

@ -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
}
}

331
composer.lock generated
View File

@ -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",