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