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