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