PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.25.2
GiveWP – Donation Plugin and Fundraising Platform v2.25.2
4.16.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 / PaymentGateways / Actions / RegisterPaymentGateways.php
give / src / PaymentGateways / Actions Last commit date
GetGatewayDataFromRequest.php 3 years ago RegisterPaymentGateways.php 3 years ago
RegisterPaymentGateways.php
165 lines
1 <?php
2
3 namespace Give\PaymentGateways\Actions;
4
5 use Give\Donations\Models\Donation;
6 use Give\Framework\Exceptions\Primitives\Exception;
7 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
8 use Give\Framework\LegacyPaymentGateways\Adapters\LegacyPaymentGatewayRegisterAdapter;
9 use Give\Framework\PaymentGateways\PaymentGatewayRegister;
10 use Give\PaymentGateways\Gateways\PayPalStandard\PayPalStandard;
11 use Give\PaymentGateways\Gateways\Stripe\Actions\GetPaymentMethodFromRequest;
12 use Give\PaymentGateways\Gateways\Stripe\BECSGateway as StripeBECSGateway;
13 use Give\PaymentGateways\Gateways\Stripe\CheckoutGateway as StripeCheckoutGateway;
14 use Give\PaymentGateways\Gateways\Stripe\CreditCardGateway as StripeCreditCardGateway;
15 use Give\PaymentGateways\Gateways\Stripe\SEPAGateway as StripeSEPAGateway;
16 use Give\PaymentGateways\PayPalCommerce\Actions\GetPayPalOrderFromRequest;
17 use Give\PaymentGateways\PayPalCommerce\PayPalCommerce;
18
19 class RegisterPaymentGateways
20 {
21 /**
22 * Array of Stripe payment method PaymentGateway classes to be bootstrapped
23 *
24 * @var string[]
25 */
26 private $stripePaymentMethods = [
27 StripeBECSGateway::class,
28 StripeCheckoutGateway::class,
29 StripeCreditCardGateway::class,
30 StripeSEPAGateway::class,
31 ];
32
33 /**
34 * Array of PaymentGateway classes to be bootstrapped
35 *
36 * @var string[]
37 */
38 public $gateways = [
39 // When complete, the Test Gateway will eventually replace The legacy Manual Gateway.
40 //TestGateway::class,
41 //TestGatewayOffsite::class,
42 PayPalStandard::class,
43 PayPalCommerce::class,
44 ];
45
46 /**
47 * Registers all the payment gateways with GiveWP
48 *
49 * @since 2.25.0 add afterRegisteredGateways
50 * @since 2.18.0
51 *
52 * @param array $gateways
53 *
54 * @return array
55 *
56 * @throws InvalidArgumentException|Exception
57 *
58 */
59 public function __invoke(array $gateways): array
60 {
61 $this->gateways = array_merge(
62 $this->gateways,
63 $this->stripePaymentMethods
64 );
65
66 /** @var PaymentGatewayRegister $paymentGatewayRegister */
67 $paymentGatewayRegister = give(PaymentGatewayRegister::class);
68
69 foreach ($this->gateways as $gateway) {
70 $paymentGatewayRegister->registerGateway($gateway);
71 }
72
73 $this->addGatewayDataToStripPaymentMethods();
74 $this->addGatewayDataToPayPalCommerce();
75
76 $this->register3rdPartyPaymentGateways($paymentGatewayRegister);
77 $this->unregister3rdPartyPaymentGateways($paymentGatewayRegister);
78
79 $this->afterRegisteredGateways();
80
81 return $gateways;
82 }
83
84 /**
85 * Register 3rd party payment gateways
86 *
87 * @since 2.21.0 use givewp prefix for action
88 * @since 2.18.0
89 *
90 * @param PaymentGatewayRegister $paymentGatewayRegister
91 */
92 private function register3rdPartyPaymentGateways(PaymentGatewayRegister $paymentGatewayRegister)
93 {
94 do_action('givewp_register_payment_gateway', $paymentGatewayRegister);
95 }
96
97 /**
98 * Unregister 3rd party payment gateways
99 *
100 * @since 2.21.0 use givewp prefix for action
101 * @since 2.18.0
102 *
103 * @param PaymentGatewayRegister $paymentGatewayRegister
104 */
105 private function unregister3rdPartyPaymentGateways(PaymentGatewayRegister $paymentGatewayRegister)
106 {
107 do_action('givewp_unregister_payment_gateway', $paymentGatewayRegister);
108 }
109
110 /**
111 * @since 2.21.2
112 */
113 private function addGatewayDataToStripPaymentMethods()
114 {
115 foreach ($this->stripePaymentMethods as $gatewayClass) {
116 add_filter(
117 sprintf(
118 'givewp_create_payment_gateway_data_%1$s',
119 $gatewayClass::id()
120 ),
121 function ($gatewayData, Donation $donation) {
122 $gatewayData['stripePaymentMethod'] = (new GetPaymentMethodFromRequest)($donation);
123
124 return $gatewayData;
125 },
126 10,
127 2
128 );
129 }
130 }
131
132 /**
133 * @since 2.21.2
134 */
135 private function addGatewayDataToPayPalCommerce()
136 {
137 add_filter(
138 sprintf(
139 'givewp_create_payment_gateway_data_%1$s',
140 PayPalCommerce::id()
141 ),
142 function ($gatewayData) {
143 $gatewayData['paypalOrder'] = (new GetPayPalOrderFromRequest())();
144 return $gatewayData;
145 }
146 );
147 }
148
149 /**
150 * After gateways have been registered, connect to legacy payment gateway adapter
151 */
152 private function afterRegisteredGateways()
153 {
154 /** @var PaymentGatewayRegister $paymentGatewayRegister */
155 $paymentGatewayRegister = give(PaymentGatewayRegister::class);
156
157 /** @var LegacyPaymentGatewayRegisterAdapter $legacyPaymentGatewayRegisterAdapter */
158 $legacyPaymentGatewayRegisterAdapter = give(LegacyPaymentGatewayRegisterAdapter::class);
159
160 foreach ($paymentGatewayRegister->getPaymentGateways() as $gatewayClass) {
161 $legacyPaymentGatewayRegisterAdapter->connectGatewayToLegacyPaymentGatewayAdapter($gatewayClass);
162 }
163 }
164 }
165