PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.33.4
GiveWP – Donation Plugin and Fundraising Platform v2.33.4
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / PaymentGateways / Controllers / GatewaySubscriptionController.php
give / src / Framework / PaymentGateways / Controllers Last commit date
GatewayPaymentController.php 3 years ago GatewaySubscriptionController.php 2 years ago
GatewaySubscriptionController.php
110 lines
1 <?php
2
3 namespace Give\Framework\PaymentGateways\Controllers;
4
5 use Give\Donations\Models\Donation;
6 use Give\Framework\Exceptions\Primitives\Exception;
7 use Give\Framework\FieldsAPI\Exceptions\TypeNotSupported;
8 use Give\Framework\PaymentGateways\Actions\HandleGatewaySubscriptionCommand;
9 use Give\Framework\PaymentGateways\Commands\GatewayCommand;
10 use Give\Framework\PaymentGateways\Log\PaymentGatewayLog;
11 use Give\Framework\PaymentGateways\PaymentGateway;
12 use Give\Framework\PaymentGateways\Traits\HandleHttpResponses;
13 use Give\Subscriptions\Models\Subscription;
14
15 /**
16 * @since 2.27.0
17 */
18 class GatewaySubscriptionController
19 {
20 use HandleHttpResponses;
21
22 /**
23 * @var PaymentGateway
24 */
25 protected $gateway;
26
27 /**
28 * @since 2.27.0
29 */
30 public function __construct(PaymentGateway $gateway)
31 {
32 $this->gateway = $gateway;
33 }
34
35 /**
36 * @since 2.27.0
37 */
38 public function create(Donation $donation, Subscription $subscription, array $gatewayData = [])
39 {
40 try {
41 $command = $this->gateway->createSubscription($donation, $subscription, $gatewayData);
42 $this->handleGatewayCommand($command, $donation, $subscription);
43 } catch (\Exception $exception) {
44 PaymentGatewayLog::error(
45 $exception->getMessage(),
46 [
47 'Payment Gateway' => $this->gateway::id(),
48 'Donation' => $donation->toArray(),
49 'Subscription' => $subscription->toArray(),
50 ]
51 );
52
53 $message = __(
54 'An unexpected error occurred while processing the subscription. Please try again or contact the site administrator.',
55 'give'
56 );
57
58 $this->handleExceptionResponse($exception, $message);
59 }
60 }
61
62 /**
63 * @since 2.33.0
64 */
65 public function synchronizeSubscription(Subscription $subscription)
66 {
67 try {
68 $command = $this->gateway->synchronizeSubscription($subscription);
69 $this->handleGatewayCommand($command, $subscription->initialDonation(), $subscription);
70 } catch (\Exception $exception) {
71 PaymentGatewayLog::error(
72 $exception->getMessage(),
73 [
74 'Payment Gateway' => $this->gateway::id(),
75 'Donation' => $subscription->initialDonation()->toArray(),
76 'Subscription' => $subscription->toArray(),
77 ]
78 );
79
80 $message = __(
81 'An unexpected error occurred while synchronizing the subscription. Please try again or contact the site administrator.',
82 'give'
83 );
84
85 $this->handleExceptionResponse($exception, $message);
86 }
87 }
88
89 /**
90 * Handle gateway subscription command
91 *
92 * @since 2.27.0 move logic into action
93 * @since 2.26.0 add RespondToBrowser command
94 * @since 2.21.0 Handle RedirectOffsite response.
95 * @since 2.18.0
96 *
97 * @throws TypeNotSupported
98 * @throws Exception
99 */
100 public function handleGatewayCommand(
101 GatewayCommand $command,
102 Donation $donation,
103 Subscription $subscription
104 ) {
105 $response = (new HandleGatewaySubscriptionCommand())($command, $donation, $subscription);
106
107 $this->handleResponse($response);
108 }
109 }
110