PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.11.0
GiveWP – Donation Plugin and Fundraising Platform v3.11.0
4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 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 / Gateways / Stripe / StripePaymentElementGateway / StripePaymentElementGateway.php
give / src / PaymentGateways / Gateways / Stripe / StripePaymentElementGateway Last commit date
Actions 2 years ago DataTransferObjects 2 years ago Webhooks 2 years ago resources 2 years ago StripePaymentElementGateway.php 2 years ago StripePaymentElementRepository.php 2 years ago stripePaymentElementGateway.tsx 2 years ago
StripePaymentElementGateway.php
160 lines
1 <?php
2
3 namespace Give\PaymentGateways\Gateways\Stripe\StripePaymentElementGateway;
4
5 use Give\Donations\Models\Donation;
6 use Give\Framework\PaymentGateways\Commands\GatewayCommand;
7 use Give\Framework\PaymentGateways\Commands\RespondToBrowser;
8 use Give\Framework\PaymentGateways\PaymentGateway;
9 use Give\Framework\Support\Scripts\Concerns\HasScriptAssetFile;
10 use Give\Helpers\Language;
11 use Give\PaymentGateways\Gateways\Stripe\StripePaymentElementGateway\DataTransferObjects\StripeGatewayData;
12 use Stripe\Exception\ApiErrorException;
13
14 /**
15 * @since 3.0.0
16 */
17 class StripePaymentElementGateway extends PaymentGateway
18 {
19 use StripePaymentElementRepository;
20 use HasScriptAssetFile;
21
22 /**
23 * @inheritDoc
24 */
25 public static function id(): string
26 {
27 return 'stripe_payment_element';
28 }
29
30 /**
31 * @inheritDoc
32 */
33 public function getId(): string
34 {
35 return self::id();
36 }
37
38 /**
39 * @inheritDoc
40 */
41 public function getName(): string
42 {
43 return __('Stripe - Payment Element', 'give');
44 }
45
46 /**
47 * @inheritDoc
48 */
49 public function getPaymentMethodLabel(): string
50 {
51 return __('Stripe Payment Element', 'give');
52 }
53
54 /**
55 * @since 3.1.0 set translations for script
56 * @since 3.0.0
57 */
58 public function enqueueScript(int $formId)
59 {
60 $assets = $this->getScriptAsset(GIVE_PLUGIN_DIR . 'build/stripePaymentElementGateway.asset.php');
61 $handle = $this::id();
62
63 wp_enqueue_script(
64 $handle,
65 GIVE_PLUGIN_URL . 'build/stripePaymentElementGateway.js',
66 $assets['dependencies'],
67 $assets['version'],
68 true
69 );
70
71 Language::setScriptTranslations($handle);
72 }
73
74 /**
75 * @since 3.0.0
76 */
77 public function formSettings(int $formId): array
78 {
79 $this->setUpStripeAppInfo($formId);
80
81 $stripePublishableKey = $this->getStripePublishableKey($formId);
82 $stripeConnectedAccountKey = $this->getStripeConnectedAccountKey($formId);
83
84 return [
85 'formId' => $formId,
86 'stripeKey' => $stripePublishableKey,
87 'stripeConnectedAccountId' => $stripeConnectedAccountKey,
88 ];
89 }
90
91 /**
92 * @inheritDoc
93 * @throws ApiErrorException
94 */
95 public function createPayment(Donation $donation, $gatewayData): GatewayCommand
96 {
97 /**
98 * Initialize the Stripe SDK using Stripe::setAppInfo()
99 */
100 $this->setUpStripeAppInfo($donation->formId);
101
102 /**
103 * Get data from client request
104 */
105 $stripeGatewayData = StripeGatewayData::fromRequest($gatewayData);
106
107 /**
108 * Get or create a Stripe customer
109 */
110 $customer = $this->getOrCreateStripeCustomerFromDonation(
111 $stripeGatewayData->stripeConnectedAccountId,
112 $donation
113 );
114
115
116 /**
117 * Setup Stripe Payment Intent args
118 */
119 $intentData = $this->getPaymentIntentDataFromDonation(
120 $donation,
121 $customer
122 );
123
124 /**
125 * Generate Payment Intent
126 */
127 $intent = $this->generateStripePaymentIntent(
128 $stripeGatewayData->stripeConnectedAccountId,
129 $intentData
130 );
131
132 /**
133 * Update Donation Meta
134 */
135 $this->updateDonationMetaFromPaymentIntent($donation, $intent);
136
137 /**
138 * Return response to client.
139 * 'clientSecret' is required to confirm payment intent on client side.
140 * 'returnUrl' is required to redirect user to success page.
141 */
142 return new RespondToBrowser([
143 'clientSecret' => $intent->client_secret,
144 'returnUrl' => $stripeGatewayData->successUrl,
145 'billingDetails' => [
146 'name' => trim("$donation->firstName $donation->lastName"),
147 'email' => $donation->email
148 ],
149 ]);
150 }
151
152 /**
153 * @inheritDoc
154 */
155 public function refundDonation(Donation $donation)
156 {
157 // TODO: Implement refundDonation() method.
158 }
159 }
160