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