PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.11.2
GiveWP – Donation Plugin and Fundraising Platform v2.11.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
LegacyServiceProvider.php 5 years ago Onboarding.php 5 years ago PaymentGateways.php 5 years ago RestAPI.php 5 years ago Routes.php 5 years ago ServiceProvider.php 5 years ago
PaymentGateways.php
195 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\DonationFormElements;
26 use Give\PaymentGateways\Stripe\ApplicationFee;
27 use Give\PaymentGateways\Stripe\Repositories\AccountDetail as AccountDetailRepository;
28
29 /**
30 * Class PaymentGateways
31 *
32 * The Service Provider for loading the Payment Gateways
33 *
34 * @since 2.8.0
35 */
36 class PaymentGateways implements ServiceProvider {
37 /**
38 * Array of PaymentGateway classes to be bootstrapped
39 *
40 * @var string[]
41 */
42 public $gateways = [
43 PayPalStandard::class,
44 PayPalCommerce::class,
45 ];
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 give()->bind(
61 'PAYPAL_COMMERCE_ATTRIBUTION_ID',
62 static function() {
63 return 'GiveWP_SP_PCP';
64 }
65 ); // storage
66
67 give()->singleton( PayPalWebhooks::class );
68 give()->singleton( Webhooks::class );
69 give()->singleton( DonationFormElements::class );
70 give()->singleton(
71 ApplicationFee::class,
72 function() {
73 return new ApplicationFee(
74 give( AccountDetailRepository::class )->getAccountDetail(
75 give_stripe_get_connected_account_options()['stripe_account']
76 )
77 );
78 }
79 );
80
81 $this->registerPayPalCommerceClasses();
82 }
83
84 /**
85 * @inheritDoc
86 */
87 public function boot() {
88 add_filter( 'give_register_gateway', [ $this, 'bootGateways' ] );
89 add_action( 'admin_init', [ $this, 'handleSellerOnBoardingRedirect' ] );
90 add_action( 'give-settings_start', [ $this, 'registerPayPalSettingPage' ] );
91 Hooks::addFilter( 'give_form_html_tags', DonationFormElements::class, 'addFormHtmlTags', 99 );
92
93 $this->registerMigrations();
94 }
95
96 /**
97 * Handle seller on boarding redirect.
98 *
99 * @since 2.8.0
100 */
101 public function handleSellerOnBoardingRedirect() {
102 give( onBoardingRedirectHandler::class )->boot();
103 }
104
105 /**
106 * Register all payment gateways setting pages with GiveWP.
107 *
108 * @since 2.8.0
109 */
110 public function registerPayPalSettingPage() {
111 foreach ( $this->gatewaySettingsPages as $page ) {
112 give()->make( $page )->boot();
113 }
114 }
115
116 /**
117 * Registers all of the payment gateways with GiveWP
118 *
119 * @since 2.8.0
120 *
121 * @param array $gateways
122 *
123 * @return array
124 */
125 public function bootGateways( array $gateways ) {
126 foreach ( $this->gateways as $gateway ) {
127 /** @var PaymentGateway $gateway */
128 $gateway = give( $gateway );
129
130 $gateways[ $gateway->getId() ] = [
131 'admin_label' => $gateway->getName(),
132 'checkout_label' => $gateway->getPaymentMethodLabel(),
133 ];
134
135 $gateway->boot();
136 }
137
138 return $gateways;
139 }
140
141 /**
142 * Registers the classes for the PayPal Commerce gateway
143 *
144 * @since 2.8.0
145 */
146 private function registerPayPalCommerceClasses() {
147 give()->singleton( AdvancedCardFields::class );
148 give()->singleton( DonationProcessor::class );
149 give()->singleton( PayPalClient::class );
150 give()->singleton( RefreshToken::class );
151 give()->singleton( AjaxRequestHandler::class );
152 give()->singleton( ScriptLoader::class );
153 give()->singleton( WebhookRegister::class );
154 give()->singleton( Webhooks::class );
155 give()->singleton( MerchantDetails::class );
156 give()->singleton( PayPalAuth::class );
157
158 give()->singleton(
159 MerchantDetail::class,
160 static function () {
161 /** @var MerchantDetails $repository */
162 $repository = give( MerchantDetails::class );
163
164 return $repository->getDetails();
165 }
166 );
167
168 give()->resolving(
169 MerchantDetails::class,
170 static function ( MerchantDetails $details ) {
171 $details->setMode( give_is_test_mode() ? 'sandbox' : 'live' );
172 }
173 );
174
175 give()->resolving(
176 Webhooks::class,
177 static function ( Webhooks $repository ) {
178 $repository->setMode( give_is_test_mode() ? 'sandbox' : 'live' );
179 }
180 );
181 }
182
183 /**
184 * Register migrations
185 *
186 * @since 2.9.1
187 */
188 private function registerMigrations() {
189 /* @var MigrationsRegister $migrationRegisterer */
190 $migrationRegisterer = give( MigrationsRegister::class );
191
192 $migrationRegisterer->addMigration( SetPayPalStandardGatewayId::class );
193 }
194 }
195