PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.0
GiveWP – Donation Plugin and Fundraising Platform v2.22.0
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
CreatePaymentAction.php 4 years ago CreateSubscriptionAction.php 4 years ago GetGatewayDataFromRequest.php 3 years ago RegisterPaymentGateways.php 3 years ago
RegisterPaymentGateways.php
145 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\PayPalCommerce\Actions\GetPayPalOrderFromRequest;
16 use Give\PaymentGateways\PayPalCommerce\PayPalCommerce;
17
18 class RegisterPaymentGateways
19 {
20 /**
21 * Array of Stripe payment method PaymentGateway classes to be bootstrapped
22 *
23 * @var string[]
24 */
25 private $stripePaymentMethods = [
26 StripeBECSGateway::class,
27 StripeCheckoutGateway::class,
28 StripeCreditCardGateway::class,
29 StripeSEPAGateway::class,
30 ];
31
32 /**
33 * Array of PaymentGateway classes to be bootstrapped
34 *
35 * @var string[]
36 */
37 public $gateways = [
38 // When complete, the Test Gateway will eventually replace The legacy Manual Gateway.
39 //TestGateway::class,
40 //TestGatewayOffsite::class,
41 PayPalStandard::class,
42 PayPalCommerce::class,
43 ];
44
45 /**
46 * Registers all the payment gateways with GiveWP
47 *
48 * @since 2.18.0
49 *
50 * @param array $gateways
51 *
52 * @return array
53 *
54 * @throws InvalidArgumentException|Exception
55 *
56 */
57 public function __invoke(array $gateways): array
58 {
59 $this->gateways = array_merge(
60 $this->gateways,
61 $this->stripePaymentMethods
62 );
63
64 /** @var PaymentGatewayRegister $paymentGatewayRegister */
65 $paymentGatewayRegister = give(PaymentGatewayRegister::class);
66
67 foreach ($this->gateways as $gateway) {
68 $paymentGatewayRegister->registerGateway($gateway);
69 }
70
71 $this->addGatewayDataToStripPaymentMethods();
72 $this->addGatewayDataToPayPalCommerce();
73
74 $this->register3rdPartyPaymentGateways($paymentGatewayRegister);
75 $this->unregister3rdPartyPaymentGateways($paymentGatewayRegister);
76
77 return $gateways;
78 }
79
80 /**
81 * Register 3rd party payment gateways
82 *
83 * @since 2.21.0 use givewp prefix for action
84 * @since 2.18.0
85 *
86 * @param PaymentGatewayRegister $paymentGatewayRegister
87 */
88 private function register3rdPartyPaymentGateways(PaymentGatewayRegister $paymentGatewayRegister)
89 {
90 do_action('givewp_register_payment_gateway', $paymentGatewayRegister);
91 }
92
93 /**
94 * Unregister 3rd party payment gateways
95 *
96 * @since 2.21.0 use givewp prefix for action
97 * @since 2.18.0
98 *
99 * @param PaymentGatewayRegister $paymentGatewayRegister
100 */
101 private function unregister3rdPartyPaymentGateways(PaymentGatewayRegister $paymentGatewayRegister)
102 {
103 do_action('givewp_unregister_payment_gateway', $paymentGatewayRegister);
104 }
105
106 /**
107 * @since 2.21.2
108 */
109 private function addGatewayDataToStripPaymentMethods()
110 {
111 foreach ($this->stripePaymentMethods as $gatewayClass) {
112 add_filter(
113 sprintf(
114 'givewp_create_payment_gateway_data_%1$s',
115 $gatewayClass::id()
116 ),
117 function ($gatewayData, Donation $donation) {
118 $gatewayData['stripePaymentMethod'] = (new GetPaymentMethodFromRequest)($donation);
119
120 return $gatewayData;
121 },
122 10,
123 2
124 );
125 }
126 }
127
128 /**
129 * @since 2.21.2
130 */
131 private function addGatewayDataToPayPalCommerce()
132 {
133 add_filter(
134 sprintf(
135 'givewp_create_payment_gateway_data_%1$s',
136 PayPalCommerce::id()
137 ),
138 function ($gatewayData) {
139 $gatewayData['paypalOrder'] = (new GetPayPalOrderFromRequest())();
140 return $gatewayData;
141 }
142 );
143 }
144 }
145