PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.13.2
GiveWP – Donation Plugin and Fundraising Platform v2.13.2
4.16.4 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 / PaymentGateways / Stripe / Controllers / NewStripeAccountOnBoardingController.php
give / src / PaymentGateways / Stripe / Controllers Last commit date
DisconnectStripeAccountController.php 4 years ago GetStripeAccountDetailsController.php 4 years ago NewStripeAccountOnBoardingController.php 4 years ago SetDefaultStripeAccountController.php 4 years ago
NewStripeAccountOnBoardingController.php
140 lines
1 <?php
2
3 namespace Give\PaymentGateways\Stripe\Controllers;
4
5 use Give\PaymentGateways\Stripe\DataTransferObjects\NewStripeAccountOnBoardingDto;
6 use Give\PaymentGateways\Stripe\Models\AccountDetail as AccountDetailModel;
7 use Give\PaymentGateways\Stripe\Repositories\Settings;
8 use Give_Admin_Settings;
9 use Stripe\Stripe;
10
11 /**
12 * Class NewStripeAccountOnBoardingController
13 * @package Give\PaymentGateways\Stripe\Controllers
14 *
15 * @since 2.13.0
16 */
17 class NewStripeAccountOnBoardingController {
18 /**
19 * @var Settings
20 */
21 private $settings;
22
23 /**
24 * @param Settings $settings
25 */
26 public function __construct( Settings $settings ) {
27 $this->settings = $settings;
28 }
29
30 /**
31 * @since 2.13.0
32 */
33 public function __invoke() {
34 if ( ! current_user_can( 'manage_give_settings' ) ) {
35 return;
36 }
37
38 $requestedData = NewStripeAccountOnBoardingDto::fromArray( give_clean( $_GET ) );
39
40 if ( ! $requestedData->hasValidateData() ) {
41 return;
42 }
43
44 $stripe_accounts = give_stripe_get_all_accounts();
45 $secret_key = ! give_is_test_mode() ? $requestedData->stripeAccessToken : $requestedData->stripeAccessTokenTest;
46
47 Stripe::setApiKey( $secret_key );
48
49 // Get Account Details.
50 $account_details = give_stripe_get_account_details( $requestedData->stripeUserId );
51
52 // Setup Account Details for Connected Stripe Accounts.
53 if ( empty( $account_details->id ) ) {
54 Give_Admin_Settings::add_error(
55 'give-stripe-account-id-fetching-error',
56 sprintf(
57 '<strong>%1$s</strong> %2$s',
58 esc_html__( 'Stripe Error:', 'give' ),
59 esc_html__(
60 'We are unable to connect your Stripe account. Please contact the support team for assistance.',
61 'give'
62 )
63 )
64 );
65
66 return;
67 }
68
69 $account_name = ! empty( $account_details->business_profile->name ) ?
70 $account_details->business_profile->name :
71 $account_details->settings->dashboard->display_name;
72 $account_slug = $account_details->id;
73 $account_email = $account_details->email;
74 $account_country = $account_details->country;
75
76 // Set first Stripe account as default.
77 if ( ! $stripe_accounts ) {
78 give_update_option( '_give_stripe_default_account', $account_slug );
79 }
80
81 try {
82 $accountDetailModel = AccountDetailModel::fromArray(
83 [
84 'type' => 'connect',
85 'account_name' => $account_name,
86 'account_slug' => $account_slug,
87 'account_email' => $account_email,
88 'account_country' => $account_country,
89 'account_id' => $requestedData->stripeUserId,
90 'live_secret_key' => $requestedData->stripeAccessToken,
91 'test_secret_key' => $requestedData->stripeAccessTokenTest,
92 'live_publishable_key' => $requestedData->stripePublishableKey,
93 'test_publishable_key' => $requestedData->stripePublishableKeyTest,
94 ]
95 );
96
97 $this->settings->addNewStripeAccount( $accountDetailModel );
98
99 if ( $requestedData->formId ) {
100 if ( ! $this->settings->getDefaultStripeAccountSlugForDonationForm( $requestedData->formId ) ) {
101 $this->settings->setDefaultStripeAccountSlugForDonationForm(
102 $requestedData->formId,
103 $accountDetailModel->accountSlug
104 );
105 }
106
107 give()->form_meta->update_meta(
108 $requestedData->formId,
109 'give_stripe_per_form_accounts',
110 'enabled'
111 );
112 }
113
114 wp_redirect(
115 add_query_arg(
116 [ 'stripe_account' => 'connected' ],
117 $requestedData->formId ?
118 admin_url( "post.php?post=$requestedData->formId&action=edit&give_tab=stripe_form_account_options" ) :
119 admin_url( 'edit.php?post_type=give_forms&page=give-settings&tab=gateways&section=stripe-settings' )
120 )
121 );
122 exit();
123 } catch ( \Exception $e ) {
124 Give_Admin_Settings::add_error(
125 'give-stripe-account-on-boarding-error',
126 sprintf(
127 '<strong>%1$s</strong> %2$s',
128 esc_html__( 'Stripe Error:', 'give' ),
129 esc_html__(
130 'We are unable to connect your Stripe account. Please contact the support team for assistance.',
131 'give'
132 )
133 )
134 );
135
136 return;
137 }
138 }
139 }
140