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