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