PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.24.2
GiveWP – Donation Plugin and Fundraising Platform v2.24.2
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
147 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\PaymentGateways\PaymentGatewayRegister;
9 use Give\PaymentGateways\Gateways\PayPalStandard\PayPalStandard;
10 use Give\PaymentGateways\Gateways\Stripe\Actions\GetPaymentMethodFromRequest;
11 use Give\PaymentGateways\Gateways\Stripe\BECSGateway as StripeBECSGateway;
12 use Give\PaymentGateways\Gateways\Stripe\CheckoutGateway as StripeCheckoutGateway;
13 use Give\PaymentGateways\Gateways\Stripe\CreditCardGateway as StripeCreditCardGateway;
14 use Give\PaymentGateways\Gateways\Stripe\SEPAGateway as StripeSEPAGateway;
15 use Give\PaymentGateways\Gateways\TestGateway\TestGateway;
16 use Give\PaymentGateways\Gateways\TestGateway\TestGatewayOffsite;
17 use Give\PaymentGateways\PayPalCommerce\Actions\GetPayPalOrderFromRequest;
18 use Give\PaymentGateways\PayPalCommerce\PayPalCommerce;
19
20 class RegisterPaymentGateways
21 {
22 /**
23 * Array of Stripe payment method PaymentGateway classes to be bootstrapped
24 *
25 * @var string[]
26 */
27 private $stripePaymentMethods = [
28 StripeBECSGateway::class,
29 StripeCheckoutGateway::class,
30 StripeCreditCardGateway::class,
31 StripeSEPAGateway::class,
32 ];
33
34 /**
35 * Array of PaymentGateway classes to be bootstrapped
36 *
37 * @var string[]
38 */
39 public $gateways = [
40 // When complete, the Test Gateway will eventually replace The legacy Manual Gateway.
41 // TestGateway::class,
42 // TestGatewayOffsite::class,
43 PayPalStandard::class,
44 PayPalCommerce::class,
45 ];
46
47 /**
48 * Registers all the payment gateways with GiveWP
49 *
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 return $gateways;
80 }
81
82 /**
83 * Register 3rd party payment gateways
84 *
85 * @since 2.21.0 use givewp prefix for action
86 * @since 2.18.0
87 *
88 * @param PaymentGatewayRegister $paymentGatewayRegister
89 */
90 private function register3rdPartyPaymentGateways(PaymentGatewayRegister $paymentGatewayRegister)
91 {
92 do_action('givewp_register_payment_gateway', $paymentGatewayRegister);
93 }
94
95 /**
96 * Unregister 3rd party payment gateways
97 *
98 * @since 2.21.0 use givewp prefix for action
99 * @since 2.18.0
100 *
101 * @param PaymentGatewayRegister $paymentGatewayRegister
102 */
103 private function unregister3rdPartyPaymentGateways(PaymentGatewayRegister $paymentGatewayRegister)
104 {
105 do_action('givewp_unregister_payment_gateway', $paymentGatewayRegister);
106 }
107
108 /**
109 * @since 2.21.2
110 */
111 private function addGatewayDataToStripPaymentMethods()
112 {
113 foreach ($this->stripePaymentMethods as $gatewayClass) {
114 add_filter(
115 sprintf(
116 'givewp_create_payment_gateway_data_%1$s',
117 $gatewayClass::id()
118 ),
119 function ($gatewayData, Donation $donation) {
120 $gatewayData['stripePaymentMethod'] = (new GetPaymentMethodFromRequest)($donation);
121
122 return $gatewayData;
123 },
124 10,
125 2
126 );
127 }
128 }
129
130 /**
131 * @since 2.21.2
132 */
133 private function addGatewayDataToPayPalCommerce()
134 {
135 add_filter(
136 sprintf(
137 'givewp_create_payment_gateway_data_%1$s',
138 PayPalCommerce::id()
139 ),
140 function ($gatewayData) {
141 $gatewayData['paypalOrder'] = (new GetPayPalOrderFromRequest())();
142 return $gatewayData;
143 }
144 );
145 }
146 }
147