PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.17.3
GiveWP – Donation Plugin and Fundraising Platform v2.17.3
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 / ServiceProviders / PaymentGateways.php
give / src / ServiceProviders Last commit date
LegacyServiceProvider.php 4 years ago Onboarding.php 4 years ago PaymentGateways.php 4 years ago RestAPI.php 4 years ago Routes.php 4 years ago ServiceProvider.php 4 years ago
PaymentGateways.php
227 lines
1 <?php
2
3 namespace Give\ServiceProviders;
4
5 use Give\Controller\PayPalWebhooks;
6 use Give\Framework\Migrations\MigrationsRegister;
7 use Give\Helpers\Hooks;
8 use Give\PaymentGateways\PaymentGateway;
9 use Give\PaymentGateways\PayPalCommerce\AdvancedCardFields;
10 use Give\PaymentGateways\PayPalCommerce\AjaxRequestHandler;
11 use Give\PaymentGateways\PayPalCommerce\DonationProcessor;
12 use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail;
13 use Give\PaymentGateways\PayPalCommerce\onBoardingRedirectHandler;
14 use Give\PaymentGateways\PayPalCommerce\PayPalClient;
15 use Give\PaymentGateways\PayPalCommerce\PayPalCommerce;
16 use Give\PaymentGateways\PayPalCommerce\RefreshToken;
17 use Give\PaymentGateways\PayPalCommerce\Repositories\MerchantDetails;
18 use Give\PaymentGateways\PayPalCommerce\Repositories\PayPalAuth;
19 use Give\PaymentGateways\PayPalCommerce\Repositories\Webhooks;
20 use Give\PaymentGateways\PayPalCommerce\ScriptLoader;
21 use Give\PaymentGateways\PayPalCommerce\Webhooks\WebhookRegister;
22 use Give\PaymentGateways\PaypalSettingPage;
23 use Give\PaymentGateways\PayPalStandard\Migrations\RemovePayPalIPNVerificationSetting;
24 use Give\PaymentGateways\PayPalStandard\Migrations\SetPayPalStandardGatewayId;
25 use Give\PaymentGateways\PayPalStandard\PayPalStandard;
26 use Give\PaymentGateways\Stripe\Admin\AccountManagerSettingField;
27 use Give\PaymentGateways\Stripe\Admin\CreditCardSettingField;
28 use Give\PaymentGateways\Stripe\ApplicationFee;
29 use Give\PaymentGateways\Stripe\Controllers\DisconnectStripeAccountController;
30 use Give\PaymentGateways\Stripe\Controllers\GetStripeAccountDetailsController;
31 use Give\PaymentGateways\Stripe\Controllers\NewStripeAccountOnBoardingController;
32 use Give\PaymentGateways\Stripe\Controllers\SetDefaultStripeAccountController;
33 use Give\PaymentGateways\Stripe\DonationFormElements;
34 use Give\PaymentGateways\Stripe\DonationFormSettingPage;
35 use Give\PaymentGateways\Stripe\Repositories\AccountDetail as AccountDetailRepository;
36
37 /**
38 * Class PaymentGateways
39 *
40 * The Service Provider for loading the Payment Gateways
41 *
42 * @since 2.8.0
43 */
44 class PaymentGateways implements ServiceProvider
45 {
46 /**
47 * Array of PaymentGateway classes to be bootstrapped
48 *
49 * @var string[]
50 */
51 public $gateways = [
52 PayPalStandard::class,
53 PayPalCommerce::class,
54 ];
55
56 /**
57 * Array of SettingPage classes to be bootstrapped
58 *
59 * @var string[]
60 */
61 private $gatewaySettingsPages = [
62 PaypalSettingPage::class,
63 ];
64
65 /**
66 * @inheritDoc
67 */
68 public function register()
69 {
70 give()->bind(
71 'PAYPAL_COMMERCE_ATTRIBUTION_ID',
72 static function () {
73 return 'GiveWP_SP_PCP';
74 }
75 ); // storage
76
77 give()->singleton(PayPalWebhooks::class);
78 give()->singleton(Webhooks::class);
79 give()->singleton(DonationFormElements::class);
80 give()->singleton(
81 ApplicationFee::class,
82 function () {
83 return new ApplicationFee(
84 give(AccountDetailRepository::class)->getAccountDetail(
85 give_stripe_get_connected_account_options()['stripe_account']
86 )
87 );
88 }
89 );
90
91 $this->registerPayPalCommerceClasses();
92 }
93
94 /**
95 * @inheritDoc
96 */
97 public function boot()
98 {
99 add_filter('give_register_gateway', [$this, 'bootGateways']);
100 add_action('admin_init', [$this, 'handleSellerOnBoardingRedirect']);
101 add_action('give-settings_start', [$this, 'registerPayPalSettingPage']);
102 Hooks::addFilter('give_form_html_tags', DonationFormElements::class, 'addFormHtmlTags', 99);
103 Hooks::addAction('wp_ajax_give_stripe_set_account_default', SetDefaultStripeAccountController::class);
104 Hooks::addAction('wp_ajax_disconnect_stripe_account', DisconnectStripeAccountController::class);
105 Hooks::addAction('wp_ajax_give_stripe_account_get_details', GetStripeAccountDetailsController::class);
106 Hooks::addAction('admin_init', NewStripeAccountOnBoardingController::class);
107 Hooks::addFilter('give_metabox_form_data_settings', DonationFormSettingPage::class, '__invoke', 10, 2);
108
109 $this->registerMigrations();
110 $this->registerStripeCustomFields();
111 }
112
113 /**
114 * Handle seller on boarding redirect.
115 *
116 * @since 2.8.0
117 */
118 public function handleSellerOnBoardingRedirect()
119 {
120 give(onBoardingRedirectHandler::class)->boot();
121 }
122
123 /**
124 * Register all payment gateways setting pages with GiveWP.
125 *
126 * @since 2.8.0
127 */
128 public function registerPayPalSettingPage()
129 {
130 foreach ($this->gatewaySettingsPages as $page) {
131 give()->make($page)->boot();
132 }
133 }
134
135 /**
136 * Registers all of the payment gateways with GiveWP
137 *
138 * @since 2.8.0
139 *
140 * @param array $gateways
141 *
142 * @return array
143 */
144 public function bootGateways(array $gateways)
145 {
146 foreach ($this->gateways as $gateway) {
147 /** @var PaymentGateway $gateway */
148 $gateway = give($gateway);
149
150 $gateways[$gateway->getId()] = [
151 'admin_label' => $gateway->getName(),
152 'checkout_label' => $gateway->getPaymentMethodLabel(),
153 ];
154
155 $gateway->boot();
156 }
157
158 return $gateways;
159 }
160
161 /**
162 * Registers the classes for the PayPal Commerce gateway
163 *
164 * @since 2.8.0
165 */
166 private function registerPayPalCommerceClasses()
167 {
168 give()->singleton(AdvancedCardFields::class);
169 give()->singleton(DonationProcessor::class);
170 give()->singleton(PayPalClient::class);
171 give()->singleton(RefreshToken::class);
172 give()->singleton(AjaxRequestHandler::class);
173 give()->singleton(ScriptLoader::class);
174 give()->singleton(WebhookRegister::class);
175 give()->singleton(Webhooks::class);
176 give()->singleton(MerchantDetails::class);
177 give()->singleton(PayPalAuth::class);
178
179 give()->singleton(
180 MerchantDetail::class,
181 static function () {
182 /** @var MerchantDetails $repository */
183 $repository = give(MerchantDetails::class);
184
185 return $repository->getDetails();
186 }
187 );
188
189 give()->resolving(
190 MerchantDetails::class,
191 static function (MerchantDetails $details) {
192 $details->setMode(give_is_test_mode() ? 'sandbox' : 'live');
193 }
194 );
195
196 give()->resolving(
197 Webhooks::class,
198 static function (Webhooks $repository) {
199 $repository->setMode(give_is_test_mode() ? 'sandbox' : 'live');
200 }
201 );
202 }
203
204 /**
205 * Register migrations
206 *
207 * @since 2.9.1
208 */
209 private function registerMigrations()
210 {
211 /* @var MigrationsRegister $migrationRegisterer */
212 $migrationRegisterer = give(MigrationsRegister::class);
213
214 $migrationRegisterer->addMigration(SetPayPalStandardGatewayId::class);
215 $migrationRegisterer->addMigration(RemovePayPalIPNVerificationSetting::class);
216 }
217
218 /**
219 * @since 2.13.0
220 */
221 private function registerStripeCustomFields()
222 {
223 Hooks::addAction('give_admin_field_stripe_account_manager', AccountManagerSettingField::class, 'handle');
224 Hooks::addAction('give_admin_field_stripe_credit_card_format', CreditCardSettingField::class, 'handle', 10, 2);
225 }
226 }
227