From a0a6054faa58c528b5abb9461b6b6a173b81e166 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 12 Sep 2023 10:27:30 +1000 Subject: [PATCH] Fixes for Checkout v3 --- app/PaymentDrivers/CheckoutCom/CreditCard.php | 100 +++---- app/PaymentDrivers/CheckoutCom/Utilities.php | 12 +- .../CheckoutComPaymentDriver.php | 173 +++++++------ app/Services/Payment/RefundPayment.php | 2 +- composer.lock | 245 +++++++++--------- 5 files changed, 261 insertions(+), 271 deletions(-) diff --git a/app/PaymentDrivers/CheckoutCom/CreditCard.php b/app/PaymentDrivers/CheckoutCom/CreditCard.php index 116123e16796..8a0166eb0cdb 100644 --- a/app/PaymentDrivers/CheckoutCom/CreditCard.php +++ b/app/PaymentDrivers/CheckoutCom/CreditCard.php @@ -12,25 +12,25 @@ namespace App\PaymentDrivers\CheckoutCom; -use App\Exceptions\PaymentFailed; -use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest; -use App\Jobs\Util\SystemLogger; -use App\Models\ClientGatewayToken; -use App\Models\GatewayType; use App\Models\SystemLog; -use App\PaymentDrivers\CheckoutComPaymentDriver; -use App\PaymentDrivers\Common\MethodInterface; +use Illuminate\View\View; +use App\Models\GatewayType; +use Illuminate\Http\Request; +use App\Jobs\Util\SystemLogger; use App\Utils\Traits\MakesHash; +use App\Exceptions\PaymentFailed; +use App\Models\ClientGatewayToken; use Checkout\CheckoutApiException; +use Illuminate\Contracts\View\Factory; use Checkout\CheckoutArgumentException; use Checkout\CheckoutAuthorizationException; -use Checkout\Payments\Four\Request\PaymentRequest; -use Checkout\Payments\Four\Request\Source\RequestTokenSource; -use Checkout\Payments\PaymentRequest as PaymentsPaymentRequest; -use Checkout\Payments\Source\RequestTokenSource as SourceRequestTokenSource; -use Illuminate\Contracts\View\Factory; -use Illuminate\Http\Request; -use Illuminate\View\View; +use Checkout\Payments\Request\PaymentRequest; +use App\PaymentDrivers\Common\MethodInterface; +use App\PaymentDrivers\CheckoutComPaymentDriver; +use Checkout\Payments\Previous\Source\RequestTokenSource; +use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest; +use Checkout\Payments\Previous\PaymentRequest as PreviousPaymentRequest; +use Checkout\Payments\Request\Source\RequestTokenSource as SourceRequestTokenSource; class CreditCard implements MethodInterface { @@ -67,12 +67,12 @@ class CreditCard implements MethodInterface if ($this->checkout->is_four_api) { $token_source = new RequestTokenSource(); $token_source->token = $token; - $request = new PaymentRequest(); + $request = new PreviousPaymentRequest(); $request->source = $token_source; } else { $token_source = new SourceRequestTokenSource(); $token_source->token = $token; - $request = new PaymentsPaymentRequest(); + $request = new PaymentRequest(); $request->source = $token_source; } @@ -120,44 +120,24 @@ class CreditCard implements MethodInterface return redirect()->route('client.payment_methods.show', $payment_method->hashed_id); } } catch (CheckoutApiException $e) { - // API error - $request_id = $e->request_id ?: ''; - $http_status_code = $e->http_status_code ?: ''; + $error_details = $e->error_details; - if (is_array($error_details)) { + if (isset($e->error_details['error_codes']) ?? false) { $error_details = end($e->error_details['error_codes']); } + else { + $error_details = $e->getMessage(); + } - $human_exception = $error_details ? $error_details : $e->getMessage(); - - $human_exception = "{$human_exception} - Request ID: {$request_id}"; - - throw new PaymentFailed($human_exception, $http_status_code); + throw new PaymentFailed($error_details, $e->getCode()); } catch (CheckoutArgumentException $e) { // Bad arguments - - $error_details = $e->error_details; - - if (is_array($error_details)) { - $error_details = end($e->error_details['error_codes']); - } - - $human_exception = $error_details ? $error_details : $e->getMessage(); - - throw new PaymentFailed($human_exception, 422); + throw new PaymentFailed($e->getMessage(), $e->getCode()); } catch (CheckoutAuthorizationException $e) { // Bad Invalid authorization - - $error_details = $e->error_details; - - if (is_array($error_details)) { - $error_details = end($e->error_details['error_codes']); - } - $human_exception = $error_details ? $error_details : $e->getMessage(); - - throw new PaymentFailed($human_exception, 401); + throw new PaymentFailed("There is a problem with your Checkout Gateway API keys", 401); } } @@ -280,8 +260,6 @@ class CreditCard implements MethodInterface } } catch (CheckoutApiException $e) { // API error - $request_id = $e->request_id; - $http_status_code = $e->http_status_code; $error_details = $e->error_details; if (is_array($error_details)) { @@ -293,7 +271,7 @@ class CreditCard implements MethodInterface $human_exception = $error_details ? new \Exception($error_details, 400) : $e; SystemLogger::dispatch( - $human_exception->getMessage(), + $e->getMessage(), SystemLog::CATEGORY_GATEWAY_RESPONSE, SystemLog::EVENT_GATEWAY_ERROR, SystemLog::TYPE_CHECKOUT, @@ -304,19 +282,11 @@ class CreditCard implements MethodInterface return $this->checkout->processInternallyFailedPayment($this->checkout, $human_exception); } catch (CheckoutArgumentException $e) { // Bad arguments - - $error_details = $e->error_details; - - if (is_array($error_details)) { - $error_details = end($e->error_details['error_codes']); - } $this->checkout->unWindGatewayFees($this->checkout->payment_hash); - $human_exception = $error_details ? new \Exception($error_details, 400) : $e; - SystemLogger::dispatch( - $human_exception->getMessage(), + $e->getMessage(), SystemLog::CATEGORY_GATEWAY_RESPONSE, SystemLog::EVENT_GATEWAY_ERROR, SystemLog::TYPE_CHECKOUT, @@ -324,23 +294,15 @@ class CreditCard implements MethodInterface $this->checkout->client->company, ); - return $this->checkout->processInternallyFailedPayment($this->checkout, $human_exception); + return new PaymentFailed($e->getMessage(), $e->getCode()); + // return $this->checkout->processInternallyFailedPayment($this->checkout, $human_exception); } catch (CheckoutAuthorizationException $e) { // Bad Invalid authorization - $error_details = $e->error_details; - - if (is_array($error_details)) { - $error_details = end($e->error_details['error_codes']); - } - $this->checkout->unWindGatewayFees($this->checkout->payment_hash); - $human_exception = $error_details ? new \Exception($error_details, 400) : $e; - - SystemLogger::dispatch( - $human_exception->getMessage(), + $e->getMessage(), SystemLog::CATEGORY_GATEWAY_RESPONSE, SystemLog::EVENT_GATEWAY_ERROR, SystemLog::TYPE_CHECKOUT, @@ -348,7 +310,9 @@ class CreditCard implements MethodInterface $this->checkout->client->company, ); - return $this->checkout->processInternallyFailedPayment($this->checkout, $human_exception); + return new PaymentFailed("There was a problem communicating with the API credentials for Checkout", $e->getCode()); + + // return $this->checkout->processInternallyFailedPayment($this->checkout, $human_exception); } } } diff --git a/app/PaymentDrivers/CheckoutCom/Utilities.php b/app/PaymentDrivers/CheckoutCom/Utilities.php index ef37688c305a..860240e0a596 100644 --- a/app/PaymentDrivers/CheckoutCom/Utilities.php +++ b/app/PaymentDrivers/CheckoutCom/Utilities.php @@ -94,6 +94,16 @@ trait Utilities $error_message = 'Error processing payment.'; } + if(isset($_payment['actions'][0]['response_summary']) ?? false) { + $error_message = $_payment['actions'][0]['response_summary']; + } + + if(isset($_payment['actions'][0]['response_code']) ?? false) { + $error_code = $_payment['actions'][0]['response_code']; + } + else + $error_code = 400; + $this->getParent()->sendFailureMail($error_message); $message = [ @@ -111,7 +121,7 @@ trait Utilities ); if ($throw_exception) { - throw new PaymentFailed($error_message, 500); + throw new PaymentFailed($error_message, $error_code); } } diff --git a/app/PaymentDrivers/CheckoutComPaymentDriver.php b/app/PaymentDrivers/CheckoutComPaymentDriver.php index bfeee03569d9..a4ca85e95032 100644 --- a/app/PaymentDrivers/CheckoutComPaymentDriver.php +++ b/app/PaymentDrivers/CheckoutComPaymentDriver.php @@ -25,29 +25,28 @@ use App\Models\Payment; use App\Models\PaymentHash; use App\Models\PaymentType; use App\Models\SystemLog; +use App\PaymentDrivers\CheckoutCom\CheckoutWebhook; use App\PaymentDrivers\CheckoutCom\CreditCard; use App\PaymentDrivers\CheckoutCom\Utilities; -use App\PaymentDrivers\CheckoutCom\CheckoutWebhook; use App\Utils\Traits\SystemLogTrait; -use Checkout\CheckoutApi; use Checkout\CheckoutApiException; use Checkout\CheckoutArgumentException; use Checkout\CheckoutAuthorizationException; -use Checkout\CheckoutDefaultSdk; -use Checkout\CheckoutFourSdk; +use Checkout\CheckoutSdk; use Checkout\Common\Phone; use Checkout\Customers\CustomerRequest; -use Checkout\Customers\Four\CustomerRequest as FourCustomerRequest; use Checkout\Environment; -use Checkout\Models\Payments\Refund; -use Checkout\Payments\Four\Request\PaymentRequest; -use Checkout\Payments\Four\Request\Source\RequestIdSource as SourceRequestIdSource; -use Checkout\Payments\PaymentRequest as PaymentsPaymentRequest; +use Checkout\Payments\Previous\PaymentRequest as PreviousPaymentRequest; +use Checkout\Payments\Previous\Source\RequestIdSource as SourceRequestIdSource; use Checkout\Payments\RefundRequest; -use Checkout\Payments\Source\RequestIdSource; +use Checkout\Payments\Request\PaymentRequest; +use Checkout\Payments\Request\Source\RequestIdSource; use Exception; use Illuminate\Support\Facades\Auth; +//use Checkout\Customers\Four\CustomerRequest as FourCustomerRequest; +//use Checkout\Payments\Four\Request\Source\RequestIdSource as SourceRequestIdSource; + class CheckoutComPaymentDriver extends BaseDriver { use SystemLogTrait, Utilities; @@ -70,7 +69,7 @@ class CheckoutComPaymentDriver extends BaseDriver public $is_four_api = false; /** - * @var CheckoutApi; + * @var CheckoutSdk; */ public $gateway; @@ -117,45 +116,61 @@ class CheckoutComPaymentDriver extends BaseDriver */ public function init() { - $config = [ - 'secret' => $this->company_gateway->getConfigField('secretApiKey'), - 'public' => $this->company_gateway->getConfigField('publicApiKey'), - 'sandbox' => $this->company_gateway->getConfigField('testMode'), - ]; - if (strlen($config['secret']) <= 38) { - $this->is_four_api = true; - $builder = CheckoutFourSdk::staticKeys(); - $builder->setPublicKey($config['public']); // optional, only required for operations related with tokens - $builder->setSecretKey($config['secret']); - $builder->setEnvironment($config['sandbox'] ? Environment::sandbox() : Environment::production()); + if (str_contains($this->company_gateway->getConfigField('secretApiKey'), '-')) { + + $this->is_four_api = true; //was four api, now known as previous. + + $builder = CheckoutSdk::builder() + ->previous() + ->staticKeys() + ->environment($this->company_gateway->getConfigField('testMode') ? Environment::sandbox() : Environment::production()) + ->publicKey($this->company_gateway->getConfigField('publicApiKey')) + ->secretKey($this->company_gateway->getConfigField('secretApiKey')); + $this->gateway = $builder->build(); + } else { - $builder = CheckoutDefaultSdk::staticKeys(); - $builder->setPublicKey($config['public']); // optional, only required for operations related with tokens - $builder->setSecretKey($config['secret']); - $builder->setEnvironment($config['sandbox'] ? Environment::sandbox() : Environment::production()); - $this->gateway = $builder->build(); - } + + $builder = CheckoutSdk::builder()->staticKeys() + ->publicKey($this->company_gateway->getConfigField('publicApiKey')) + ->secretKey($this->company_gateway->getConfigField('secretApiKey')) + ->environment($this->company_gateway->getConfigField('testMode') ? Environment::sandbox() : Environment::production()); + $this->gateway = $builder->build(); + + } return $this; } /** * Process different view depending on payment type + * * @param int $gateway_type_id The gateway type - * @return string The view string + * @return string The view string */ public function viewForType($gateway_type_id) { return 'gateways.checkout.credit_card.pay'; } - + + /** + * Authorize View + * + * @param array $data + * @return \Illuminate\View\View + */ public function authorizeView($data) { return $this->payment_method->authorizeView($data); } - + + /** + * Authorize Response + * + * @param array $data + * @return \Illuminate\View\View + */ public function authorizeResponse($data) { return $this->payment_method->authorizeResponse($data); @@ -165,7 +180,7 @@ class CheckoutComPaymentDriver extends BaseDriver * Payment View * * @param array $data Payment data array - * @return \Illuminate\View\View + * @return \Illuminate\View\View */ public function processPaymentView(array $data) { @@ -176,13 +191,19 @@ class CheckoutComPaymentDriver extends BaseDriver * Process the payment response * * @param \Illuminate\Http\Request $request The payment request - * @return \Illuminate\View\View + * @return \Illuminate\View\View */ public function processPaymentResponse($request) { return $this->payment_method->paymentResponse($request); } - + + /** + * Store PaymentMethod + * + * @param array $data + * @return ?ClientGatewayToken $token + */ public function storePaymentMethod(array $data) { return $this->storeGatewayToken($data); @@ -197,7 +218,7 @@ class CheckoutComPaymentDriver extends BaseDriver $request->amount = $this->convertToCheckoutAmount($amount, $this->client->getCurrencyCode()); try { - // or, refundPayment("payment_id") for a full refund + $response = $this->gateway->getPaymentsClient()->refundPayment($payment->transaction_reference, $request); return [ @@ -213,7 +234,7 @@ class CheckoutComPaymentDriver extends BaseDriver } catch (CheckoutArgumentException $e) { // Bad arguments - throw new PaymentFailed($e->getMessage(), $e->getCode()); + // throw new PaymentFailed($e->getMessage(), $e->getCode()); return [ 'transaction_reference' => null, @@ -223,9 +244,8 @@ class CheckoutComPaymentDriver extends BaseDriver 'code' => $e->getCode(), ]; } catch (CheckoutAuthorizationException $e) { - // Bad Invalid authorization - throw new PaymentFailed($e->getMessage(), $e->getCode()); + // throw new PaymentFailed("The was a problem with the Checkout Gateway Credentials.", $e->getCode()); return [ 'transaction_reference' => null, @@ -244,12 +264,9 @@ class CheckoutComPaymentDriver extends BaseDriver return $response; } catch (\Exception $e) { - if ($this->is_four_api) { - $request = new FourCustomerRequest(); - } else { - $request = new CustomerRequest(); - } - + + $request = new CustomerRequest(); + $phone = new Phone(); // $phone->number = $this->client->present()->phone(); $phone->number = substr(str_pad($this->client->present()->phone(), 6, "0", STR_PAD_RIGHT), 0, 24); @@ -262,59 +279,45 @@ class CheckoutComPaymentDriver extends BaseDriver $response = $this->gateway->getCustomersClient()->create($request); } catch (CheckoutApiException $e) { // API error - $request_id = $e->request_id; - $http_status_code = $e->http_status_code; $error_details = $e->error_details; - if (is_array($error_details)) { + if (isset($error_details['error_codes']) ?? false) { $error_details = end($e->error_details['error_codes']); + } else { + $error_details = $e->getMessage(); } - $human_exception = $error_details ? new \Exception($error_details, 400) : $e; - - - throw new PaymentFailed($human_exception); + throw new PaymentFailed($error_details, 400); } catch (CheckoutArgumentException $e) { - // Bad arguments - $error_details = $e->error_details; - - if (is_array($error_details)) { - $error_details = end($e->error_details['error_codes']); - } - - $human_exception = $error_details ? new \Exception($error_details, 400) : $e; - - throw new PaymentFailed($human_exception); + throw new PaymentFailed($e->getMessage(), $e->getCode()); } catch (CheckoutAuthorizationException $e) { // Bad Invalid authorization - - $error_details = $e->error_details; - - if (is_array($error_details)) { - $error_details = end($e->error_details['error_codes']); - } - $human_exception = $error_details ? new \Exception($error_details, 400) : $e; - - throw new PaymentFailed($human_exception); + throw new PaymentFailed("Checkout Gateway credentials are invalid", 400); } return $response; } } - + + /** + * Boots a request for a token payment + * + * @param string $token + * @return PreviousPaymentRequest | PaymentRequest + */ public function bootTokenRequest($token) { if ($this->is_four_api) { $token_source = new SourceRequestIdSource(); $token_source->id = $token; - $request = new PaymentRequest(); + $request = new PreviousPaymentRequest(); $request->source = $token_source; } else { $token_source = new RequestIdSource(); $token_source->id = $token; - $request = new PaymentsPaymentRequest(); + $request = new PaymentRequest(); $request->source = $token_source; } @@ -325,6 +328,8 @@ class CheckoutComPaymentDriver extends BaseDriver { $amount = array_sum(array_column($payment_hash->invoices(), 'amount')) + $payment_hash->fee_total; $invoice = Invoice::query()->whereIn('id', $this->transformKeys(array_column($payment_hash->invoices(), 'invoice_id')))->withTrashed()->first(); + $this->client = $invoice->client; + $this->payment_hash = $payment_hash; $this->init(); @@ -340,7 +345,6 @@ class CheckoutComPaymentDriver extends BaseDriver $request->request->add(['payment_hash' => $payment_hash->hash]); try { - // $response = $this->gateway->payments()->request($payment); $response = $this->gateway->getPaymentsClient()->requestPayment($paymentRequest); if ($response['status'] == 'Authorized') { @@ -386,25 +390,27 @@ class CheckoutComPaymentDriver extends BaseDriver return false; } - } catch (Exception | CheckoutApiException $e) { + } catch (CheckoutApiException $e) { + $this->unWindGatewayFees($payment_hash); - $message = $e->getMessage(); - $error_details = ''; + $error_details = $e->error_details; - if (property_exists($e, 'error_details')) { - $error_details = $e->error_details; + if (isset($error_details['error_codes']) ?? false) { + $error_details = end($e->error_details['error_codes']); + } else { + $error_details = $e->getMessage(); } - + $data = [ 'status' => $e->error_details, 'error_type' => '', 'error_code' => $e->getCode(), 'param' => '', - 'message' => $message, + 'message' => $e->getMessage(), ]; - $this->sendFailureMail($message); + $this->sendFailureMail($e->getMessage()); SystemLogger::dispatch( $data, @@ -425,8 +431,7 @@ class CheckoutComPaymentDriver extends BaseDriver if($request->header('cko-signature') == hash_hmac('sha256', $webhook_payload, $this->company_gateway->company->company_key)) { CheckoutWebhook::dispatch($request->all(), $request->company_key, $this->company_gateway->id)->delay(10); - } - else { + } else { nlog("Hash Mismatch = {$request->header('cko-signature')} ".hash_hmac('sha256', $webhook_payload, $this->company_gateway->company->company_key)); nlog($request->all()); } diff --git a/app/Services/Payment/RefundPayment.php b/app/Services/Payment/RefundPayment.php index 007f1df6efbf..b5b67358abcf 100644 --- a/app/Services/Payment/RefundPayment.php +++ b/app/Services/Payment/RefundPayment.php @@ -88,7 +88,7 @@ class RefundPayment /** * Process the refund through the gateway. * - * @var array $response + * $response * [ * 'transaction_reference' => (string), * 'transaction_response' => (string), diff --git a/composer.lock b/composer.lock index fb13b2f575ac..ba232aa837fc 100644 --- a/composer.lock +++ b/composer.lock @@ -525,16 +525,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.280.2", + "version": "3.281.4", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "d68b83b3bc39b70bf33e9b8b5166facbe3e4fe9b" + "reference": "c37035bcfb67a9d54f91dae303b3fe8f98ea59f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d68b83b3bc39b70bf33e9b8b5166facbe3e4fe9b", - "reference": "d68b83b3bc39b70bf33e9b8b5166facbe3e4fe9b", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c37035bcfb67a9d54f91dae303b3fe8f98ea59f4", + "reference": "c37035bcfb67a9d54f91dae303b3fe8f98ea59f4", "shasum": "" }, "require": { @@ -614,9 +614,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.280.2" + "source": "https://github.com/aws/aws-sdk-php/tree/3.281.4" }, - "time": "2023-09-01T18:06:10+00:00" + "time": "2023-09-11T18:07:49+00:00" }, { "name": "bacon/bacon-qr-code", @@ -830,16 +830,16 @@ }, { "name": "checkout/checkout-sdk-php", - "version": "3.0.13", + "version": "3.0.14", "source": { "type": "git", "url": "https://github.com/checkout/checkout-sdk-php.git", - "reference": "09f50d3df10f99681b535b53c395d2ee1ddab22b" + "reference": "e8a34d34abac3fb6e7b2227731eb2e75f6ff036f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/checkout/checkout-sdk-php/zipball/09f50d3df10f99681b535b53c395d2ee1ddab22b", - "reference": "09f50d3df10f99681b535b53c395d2ee1ddab22b", + "url": "https://api.github.com/repos/checkout/checkout-sdk-php/zipball/e8a34d34abac3fb6e7b2227731eb2e75f6ff036f", + "reference": "e8a34d34abac3fb6e7b2227731eb2e75f6ff036f", "shasum": "" }, "require": { @@ -892,9 +892,9 @@ ], "support": { "issues": "https://github.com/checkout/checkout-sdk-php/issues", - "source": "https://github.com/checkout/checkout-sdk-php/tree/3.0.13" + "source": "https://github.com/checkout/checkout-sdk-php/tree/3.0.14" }, - "time": "2023-06-09T09:09:30+00:00" + "time": "2023-09-07T11:00:14+00:00" }, { "name": "cleverit/ubl_invoice", @@ -2586,16 +2586,16 @@ }, { "name": "google/apiclient-services", - "version": "v0.314.0", + "version": "v0.315.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "fe2f7513dc5a4a6cf82715fd0edf7589423d6535" + "reference": "9fe675be642888cded64be861891901f092ab72d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/fe2f7513dc5a4a6cf82715fd0edf7589423d6535", - "reference": "fe2f7513dc5a4a6cf82715fd0edf7589423d6535", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/9fe675be642888cded64be861891901f092ab72d", + "reference": "9fe675be642888cded64be861891901f092ab72d", "shasum": "" }, "require": { @@ -2624,22 +2624,22 @@ ], "support": { "issues": "https://github.com/googleapis/google-api-php-client-services/issues", - "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.314.0" + "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.315.0" }, - "time": "2023-09-03T01:04:12+00:00" + "time": "2023-09-10T01:10:37+00:00" }, { "name": "google/auth", - "version": "v1.29.1", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-auth-library-php.git", - "reference": "f199ed635b945e5adfd3c1a203543d8d86aff239" + "reference": "6028b072aa444d7edecbed603431322026704627" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/f199ed635b945e5adfd3c1a203543d8d86aff239", - "reference": "f199ed635b945e5adfd3c1a203543d8d86aff239", + "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/6028b072aa444d7edecbed603431322026704627", + "reference": "6028b072aa444d7edecbed603431322026704627", "shasum": "" }, "require": { @@ -2682,9 +2682,9 @@ "support": { "docs": "https://googleapis.github.io/google-auth-library-php/main/", "issues": "https://github.com/googleapis/google-auth-library-php/issues", - "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.29.1" + "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.30.0" }, - "time": "2023-08-23T08:49:35+00:00" + "time": "2023-09-07T19:13:44+00:00" }, { "name": "graham-campbell/result-type", @@ -4331,16 +4331,16 @@ }, { "name": "laravel/framework", - "version": "v10.21.0", + "version": "v10.22.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "96b15c7ac382a9adb4a56d40c640e782d669a112" + "reference": "9234388a895206d4e1df37342b61adc67e5c5d31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/96b15c7ac382a9adb4a56d40c640e782d669a112", - "reference": "96b15c7ac382a9adb4a56d40c640e782d669a112", + "url": "https://api.github.com/repos/laravel/framework/zipball/9234388a895206d4e1df37342b61adc67e5c5d31", + "reference": "9234388a895206d4e1df37342b61adc67e5c5d31", "shasum": "" }, "require": { @@ -4527,7 +4527,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-08-29T13:55:56+00:00" + "time": "2023-09-05T13:20:01+00:00" }, { "name": "laravel/prompts", @@ -4700,16 +4700,16 @@ }, { "name": "laravel/socialite", - "version": "v5.8.1", + "version": "v5.9.0", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "9989b4530331597fae811bca240bf4e8f15e804b" + "reference": "14acfa3262875f180fba51efe3c7aaa089a9ef24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/9989b4530331597fae811bca240bf4e8f15e804b", - "reference": "9989b4530331597fae811bca240bf4e8f15e804b", + "url": "https://api.github.com/repos/laravel/socialite/zipball/14acfa3262875f180fba51efe3c7aaa089a9ef24", + "reference": "14acfa3262875f180fba51efe3c7aaa089a9ef24", "shasum": "" }, "require": { @@ -4766,7 +4766,7 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2023-08-21T13:06:52+00:00" + "time": "2023-09-05T15:20:21+00:00" }, { "name": "laravel/tinker", @@ -5315,16 +5315,16 @@ }, { "name": "league/flysystem", - "version": "3.15.1", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed" + "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a141d430414fcb8bf797a18716b09f759a385bed", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4fdf372ca6b63c6e281b1c01a624349ccb757729", + "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729", "shasum": "" }, "require": { @@ -5333,6 +5333,8 @@ "php": "^8.0.2" }, "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", "aws/aws-sdk-php": "3.209.31 || 3.210.0", "guzzlehttp/guzzle": "<7.0", "guzzlehttp/ringphp": "<1.1.1", @@ -5352,7 +5354,7 @@ "microsoft/azure-storage-blob": "^1.1", "phpseclib/phpseclib": "^3.0.14", "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", + "phpunit/phpunit": "^9.5.11|^10.0", "sabre/dav": "^4.3.1" }, "type": "library", @@ -5387,7 +5389,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.15.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.16.0" }, "funding": [ { @@ -5399,20 +5401,20 @@ "type": "github" } ], - "time": "2023-05-04T09:04:26+00:00" + "time": "2023-09-07T19:22:17+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.15.0", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "d8de61ee10b6a607e7996cff388c5a3a663e8c8a" + "reference": "ded9ba346bb01cb9cc4cc7f2743c2c0e14d18e1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/d8de61ee10b6a607e7996cff388c5a3a663e8c8a", - "reference": "d8de61ee10b6a607e7996cff388c5a3a663e8c8a", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/ded9ba346bb01cb9cc4cc7f2743c2c0e14d18e1c", + "reference": "ded9ba346bb01cb9cc4cc7f2743c2c0e14d18e1c", "shasum": "" }, "require": { @@ -5453,7 +5455,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.15.0" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.16.0" }, "funding": [ { @@ -5465,20 +5467,20 @@ "type": "github" } ], - "time": "2023-05-02T20:02:14+00:00" + "time": "2023-08-30T10:14:57+00:00" }, { "name": "league/flysystem-local", - "version": "3.15.0", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3" + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/543f64c397fefdf9cfeac443ffb6beff602796b3", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ec7383f25642e6fd4bb0c9554fc2311245391781", + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781", "shasum": "" }, "require": { @@ -5513,7 +5515,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.15.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.16.0" }, "funding": [ { @@ -5525,7 +5527,7 @@ "type": "github" } ], - "time": "2023-05-02T20:02:14+00:00" + "time": "2023-08-30T10:23:59+00:00" }, { "name": "league/fractal", @@ -5867,16 +5869,16 @@ }, { "name": "microsoft/microsoft-graph", - "version": "1.105.0", + "version": "1.106.0", "source": { "type": "git", "url": "https://github.com/microsoftgraph/msgraph-sdk-php.git", - "reference": "d137bb44a1f4ec949c814471ee94265db002fc2c" + "reference": "a9f43d74131bb13cb1b5a999101d486b26601b8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/microsoftgraph/msgraph-sdk-php/zipball/d137bb44a1f4ec949c814471ee94265db002fc2c", - "reference": "d137bb44a1f4ec949c814471ee94265db002fc2c", + "url": "https://api.github.com/repos/microsoftgraph/msgraph-sdk-php/zipball/a9f43d74131bb13cb1b5a999101d486b26601b8f", + "reference": "a9f43d74131bb13cb1b5a999101d486b26601b8f", "shasum": "" }, "require": { @@ -5913,9 +5915,9 @@ "homepage": "https://developer.microsoft.com/en-us/graph", "support": { "issues": "https://github.com/microsoftgraph/msgraph-sdk-php/issues", - "source": "https://github.com/microsoftgraph/msgraph-sdk-php/tree/1.105.0" + "source": "https://github.com/microsoftgraph/msgraph-sdk-php/tree/1.106.0" }, - "time": "2023-08-22T13:28:28+00:00" + "time": "2023-09-08T06:02:27+00:00" }, { "name": "mollie/mollie-api-php", @@ -6403,16 +6405,16 @@ }, { "name": "nesbot/carbon", - "version": "2.69.0", + "version": "2.70.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c" + "reference": "d3298b38ea8612e5f77d38d1a99438e42f70341d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4308217830e4ca445583a37d1bf4aff4153fa81c", - "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d3298b38ea8612e5f77d38d1a99438e42f70341d", + "reference": "d3298b38ea8612e5f77d38d1a99438e42f70341d", "shasum": "" }, "require": { @@ -6505,7 +6507,7 @@ "type": "tidelift" } ], - "time": "2023-08-03T09:00:52+00:00" + "time": "2023-09-07T16:43:50+00:00" }, { "name": "nette/schema", @@ -7366,6 +7368,7 @@ "issues": "https://github.com/PayFast/payfast-php-sdk/issues", "source": "https://github.com/PayFast/payfast-php-sdk/tree/v1.1.4" }, + "abandoned": true, "time": "2022-12-20T10:39:51+00:00" }, { @@ -8169,16 +8172,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.23.1", + "version": "1.24.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" + "reference": "3510b0a6274cc42f7219367cb3abfc123ffa09d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/3510b0a6274cc42f7219367cb3abfc123ffa09d6", + "reference": "3510b0a6274cc42f7219367cb3abfc123ffa09d6", "shasum": "" }, "require": { @@ -8210,9 +8213,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.0" }, - "time": "2023-08-03T16:32:59+00:00" + "time": "2023-09-07T20:46:32+00:00" }, { "name": "pragmarx/google2fa", @@ -9152,16 +9155,16 @@ }, { "name": "razorpay/razorpay", - "version": "2.8.6", + "version": "2.8.7", "source": { "type": "git", "url": "https://github.com/razorpay/razorpay-php.git", - "reference": "c151dadbb3d0a64d92574e9789b970196e629cac" + "reference": "2180c8c3c39678623f5cb8f639c39a706de14c44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/razorpay/razorpay-php/zipball/c151dadbb3d0a64d92574e9789b970196e629cac", - "reference": "c151dadbb3d0a64d92574e9789b970196e629cac", + "url": "https://api.github.com/repos/razorpay/razorpay-php/zipball/2180c8c3c39678623f5cb8f639c39a706de14c44", + "reference": "2180c8c3c39678623f5cb8f639c39a706de14c44", "shasum": "" }, "require": { @@ -9213,20 +9216,20 @@ "issues": "https://github.com/Razorpay/razorpay-php/issues", "source": "https://github.com/Razorpay/razorpay-php" }, - "time": "2023-06-16T10:31:14+00:00" + "time": "2023-09-11T08:31:26+00:00" }, { "name": "rmccue/requests", - "version": "v2.0.7", + "version": "v2.0.8", "source": { "type": "git", "url": "https://github.com/WordPress/Requests.git", - "reference": "e14a6f4e7438d3f8da3f2657759e6367b906ee23" + "reference": "fae75bcb83d9d00d0e31ee86a472a036f9f91519" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WordPress/Requests/zipball/e14a6f4e7438d3f8da3f2657759e6367b906ee23", - "reference": "e14a6f4e7438d3f8da3f2657759e6367b906ee23", + "url": "https://api.github.com/repos/WordPress/Requests/zipball/fae75bcb83d9d00d0e31ee86a472a036f9f91519", + "reference": "fae75bcb83d9d00d0e31ee86a472a036f9f91519", "shasum": "" }, "require": { @@ -9244,6 +9247,12 @@ "wp-coding-standards/wpcs": "^2.0", "yoast/phpunit-polyfills": "^1.0.0" }, + "suggest": { + "art4/requests-psr18-adapter": "For using Requests as a PSR-18 HTTP Client", + "ext-curl": "For improved performance", + "ext-openssl": "For secure transport support", + "ext-zlib": "For improved performance when decompressing encoded streams" + }, "type": "library", "autoload": { "files": [ @@ -9294,7 +9303,7 @@ "issues": "https://github.com/WordPress/Requests/issues", "source": "https://github.com/WordPress/Requests" }, - "time": "2023-06-02T07:35:42+00:00" + "time": "2023-09-11T08:27:57+00:00" }, { "name": "sabre/uri", @@ -9583,16 +9592,16 @@ }, { "name": "sentry/sentry-laravel", - "version": "3.7.3", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-laravel.git", - "reference": "2aee4ad217be8ef04ffcde6e9f7dd17af5a3b0bf" + "reference": "c7e7611553f9f90af10ed98dde1a680220f02e4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/2aee4ad217be8ef04ffcde6e9f7dd17af5a3b0bf", - "reference": "2aee4ad217be8ef04ffcde6e9f7dd17af5a3b0bf", + "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/c7e7611553f9f90af10ed98dde1a680220f02e4d", + "reference": "c7e7611553f9f90af10ed98dde1a680220f02e4d", "shasum": "" }, "require": { @@ -9605,6 +9614,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.11", + "laravel/folio": "^1.0", "laravel/framework": "^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0", "mockery/mockery": "^1.3", "orchestra/testbench": "^4.7 | ^5.1 | ^6.0 | ^7.0 | ^8.0", @@ -9658,7 +9668,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-laravel/issues", - "source": "https://github.com/getsentry/sentry-laravel/tree/3.7.3" + "source": "https://github.com/getsentry/sentry-laravel/tree/3.8.0" }, "funding": [ { @@ -9670,7 +9680,7 @@ "type": "custom" } ], - "time": "2023-08-03T10:10:23+00:00" + "time": "2023-09-05T11:02:34+00:00" }, { "name": "setasign/fpdf", @@ -9906,26 +9916,26 @@ }, { "name": "socialiteproviders/apple", - "version": "5.5.2", + "version": "5.6.0", "source": { "type": "git", "url": "https://github.com/SocialiteProviders/Apple.git", - "reference": "82febc9805143d1ebea6c3e66db402d43bf511e1" + "reference": "4f0f06e463824f0df6151c768db2fec6610ea055" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SocialiteProviders/Apple/zipball/82febc9805143d1ebea6c3e66db402d43bf511e1", - "reference": "82febc9805143d1ebea6c3e66db402d43bf511e1", + "url": "https://api.github.com/repos/SocialiteProviders/Apple/zipball/4f0f06e463824f0df6151c768db2fec6610ea055", + "reference": "4f0f06e463824f0df6151c768db2fec6610ea055", "shasum": "" }, "require": { "ext-json": "*", "ext-openssl": "*", - "firebase/php-jwt": "^6.2", + "firebase/php-jwt": "^6.8", "lcobucci/clock": "^2.0 || ^3.0", "lcobucci/jwt": "^4.1.5 || ^5.0.0", - "php": "^7.4 || ^8.0", - "socialiteproviders/manager": "~4.0" + "php": "^8.0", + "socialiteproviders/manager": "^4.4" }, "suggest": { "ahilmurugesan/socialite-apple-helper": "Automatic Apple client key generation and management." @@ -9974,7 +9984,7 @@ "issues": "https://github.com/socialiteproviders/providers/issues", "source": "https://github.com/socialiteproviders/providers" }, - "time": "2023-05-24T23:29:11+00:00" + "time": "2023-09-11T21:59:09+00:00" }, { "name": "socialiteproviders/manager", @@ -15068,16 +15078,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.25.1", + "version": "v3.26.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "8e21d69801de6b5ecb0dbe0bcdf967b335b1260b" + "reference": "d023ba6684055f6ea1da1352d8a02baca0426983" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8e21d69801de6b5ecb0dbe0bcdf967b335b1260b", - "reference": "8e21d69801de6b5ecb0dbe0bcdf967b335b1260b", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d023ba6684055f6ea1da1352d8a02baca0426983", + "reference": "d023ba6684055f6ea1da1352d8a02baca0426983", "shasum": "" }, "require": { @@ -15151,7 +15161,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.25.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.26.1" }, "funding": [ { @@ -15159,7 +15169,7 @@ "type": "github" } ], - "time": "2023-09-04T01:22:52+00:00" + "time": "2023-09-08T19:09:07+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -15870,16 +15880,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.32", + "version": "1.10.33", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44" + "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c47e47d3ab03137c0e121e77c4d2cb58672f6d44", - "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", + "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", "shasum": "" }, "require": { @@ -15928,7 +15938,7 @@ "type": "tidelift" } ], - "time": "2023-08-24T21:54:50+00:00" + "time": "2023-09-04T12:20:53+00:00" }, { "name": "phpunit/php-code-coverage", @@ -16253,16 +16263,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.3.2", + "version": "10.3.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0dafb1175c366dd274eaa9a625e914451506bcd1" + "reference": "241ed4dd0db1c096984e62d414c4e1ac8d5dbff4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0dafb1175c366dd274eaa9a625e914451506bcd1", - "reference": "0dafb1175c366dd274eaa9a625e914451506bcd1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/241ed4dd0db1c096984e62d414c4e1ac8d5dbff4", + "reference": "241ed4dd0db1c096984e62d414c4e1ac8d5dbff4", "shasum": "" }, "require": { @@ -16334,7 +16344,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.3" }, "funding": [ { @@ -16350,7 +16360,7 @@ "type": "tidelift" } ], - "time": "2023-08-15T05:34:23+00:00" + "time": "2023-09-05T04:34:51+00:00" }, { "name": "sebastian/cli-parser", @@ -16787,16 +16797,16 @@ }, { "name": "sebastian/exporter", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" + "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/32ff03d078fed1279c4ec9a407d08c5e9febb480", + "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480", "shasum": "" }, "require": { @@ -16852,7 +16862,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.1" }, "funding": [ { @@ -16860,7 +16871,7 @@ "type": "github" } ], - "time": "2023-02-03T07:06:49+00:00" + "time": "2023-09-08T04:46:58+00:00" }, { "name": "sebastian/global-state",