From b9a6bc05ff7b4e40f2b5c24494ca376400478b79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Carodej?= Date: Tue, 10 May 2022 06:58:34 +0200 Subject: [PATCH] PayPal connection test --- .../Actions/TestPayPalConnectionAction.php | 62 +++++++++++++++++++ ...orePaymentServiceCredentialsController.php | 8 +++ 2 files changed, 70 insertions(+) create mode 100644 src/Domain/Settings/Actions/TestPayPalConnectionAction.php diff --git a/src/Domain/Settings/Actions/TestPayPalConnectionAction.php b/src/Domain/Settings/Actions/TestPayPalConnectionAction.php new file mode 100644 index 00000000..d14b78b9 --- /dev/null +++ b/src/Domain/Settings/Actions/TestPayPalConnectionAction.php @@ -0,0 +1,62 @@ + [ + 'secret' => $credentials['secret'], + 'id' => $credentials['key'], + 'webhook_id' => $credentials['webhook'], + 'is_live' => $credentials['live'], + ], + ]); + + // Define test plan + $data = CreateFixedPlanData::fromArray([ + 'type' => 'fixed', + 'name' => 'Test Plan', + 'description' => null, + 'features' => [ + 'max_storage_amount' => 200, + 'max_team_members' => 20, + ], + 'currency' => 'EUR', + 'amount' => 99, + 'interval' => 'month', + ]); + + // Create test plan + $plan = $this->subscription + ->driver('paypal') + ->createFixedPlan($data); + + // Delete plan + $this->subscription + ->driver('paypal') + ->deletePlan($plan['id']); + + } catch (ErrorException $error) { + abort( + response()->json([ + 'type' => 'service-connection-error', + 'title' => 'Service Connection Error', + 'message' => $error->getMessage(), + ], 401) + ); + } + } +} \ No newline at end of file diff --git a/src/Domain/Settings/Controllers/StorePaymentServiceCredentialsController.php b/src/Domain/Settings/Controllers/StorePaymentServiceCredentialsController.php index f1501ab6..bfebd051 100644 --- a/src/Domain/Settings/Controllers/StorePaymentServiceCredentialsController.php +++ b/src/Domain/Settings/Controllers/StorePaymentServiceCredentialsController.php @@ -5,6 +5,7 @@ use Artisan; use Illuminate\Http\Response; use Domain\Settings\Models\Setting; use Domain\Settings\Actions\TestStripeConnectionAction; +use Domain\Settings\Actions\TestPayPalConnectionAction; use Domain\Settings\Actions\TestPaystackConnectionAction; use Domain\Settings\Requests\StorePaymentServiceCredentialsRequest; @@ -13,6 +14,7 @@ class StorePaymentServiceCredentialsController public function __construct( public TestPaystackConnectionAction $testPaystackConnection, public TestStripeConnectionAction $testStripeConnection, + public TestPayPalConnectionAction $testPayPalConnection, ) {} /** @@ -61,6 +63,12 @@ class StorePaymentServiceCredentialsController 'secret' => $request->input('secret'), 'webhook' => $request->input('webhook'), ]), + 'paypal' => ($this->testPayPalConnection)([ + 'key' => $request->input('key'), + 'secret' => $request->input('secret'), + 'webhook' => $request->input('webhook'), + 'live' => $request->has('live') ? (string)$request->input('live') : $PayPalDefaultMode, + ]), default => null };