PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.20.0
GiveWP – Donation Plugin and Fundraising Platform v2.20.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 / PaymentGateways / Gateways / Stripe / Actions / CreatePaymentIntent.php
give / src / PaymentGateways / Gateways / Stripe / Actions Last commit date
CreateCheckoutSession.php 4 years ago CreatePaymentIntent.php 4 years ago GetOrCreateStripeCustomer.php 4 years ago GetPaymentMethodFromRequest.php 4 years ago SaveDonationSummary.php 4 years ago UpdateStripeAccountStatementDescriptor.php 4 years ago ValidatePaymentMethod.php 4 years ago
CreatePaymentIntent.php
108 lines
1 <?php
2
3 namespace Give\PaymentGateways\Gateways\Stripe\Actions;
4
5 use Give\LegacyPaymentGateways\DataTransferObjects\LegacyDonationData;
6 use Give\PaymentGateways\DataTransferObjects\GatewayPaymentData;
7 use Give\Framework\PaymentGateways\DonationSummary;
8 use Give\PaymentGateways\Exceptions\InvalidPropertyName;
9 use Give\PaymentGateways\Gateways\Stripe\ValueObjects\PaymentIntent;
10 use Give\PaymentGateways\Gateways\Stripe\ValueObjects\PaymentMethod;
11 use Give\ValueObjects\Money;
12
13 /**
14 * @since 2.19.0
15 */
16 class CreatePaymentIntent
17 {
18 /** @var array */
19 protected $defaultIntentArgs;
20
21 /**
22 * @since 2.19.0
23 *
24 * @param array $paymentIntentArgs
25 */
26 public function __construct($paymentIntentArgs = [])
27 {
28 $this->defaultIntentArgs = $paymentIntentArgs;
29 }
30
31 /**
32 * @since 2.19.0
33 *
34 * @param GatewayPaymentData $paymentData
35 * @param DonationSummary $donationSummary
36 * @param \Give_Stripe_Customer $giveStripeCustomer
37 * @param PaymentMethod $paymentMethod
38 *
39 * @return PaymentIntent
40 * @throws InvalidPropertyName
41 */
42 public function __invoke(
43 GatewayPaymentData $paymentData,
44 DonationSummary $donationSummary,
45 \Give_Stripe_Customer $giveStripeCustomer,
46 PaymentMethod $paymentMethod
47 ) {
48 /**
49 * This filter hook is used to update the payment intent arguments.
50 *
51 * @since 2.5.0
52 */
53 $intent_args = apply_filters(
54 'give_stripe_create_intent_args',
55 array_merge([
56 'amount' => Money::of($paymentData->price, $paymentData->currency)->getMinorAmount(),
57 'currency' => $paymentData->currency,
58 'payment_method_types' => ['card'],
59 'statement_descriptor' => give_stripe_get_statement_descriptor(),
60 'description' => $donationSummary->getSummaryWithDonor(),
61 'metadata' => give_stripe_prepare_metadata(
62 $paymentData->donationId,
63 new LegacyDonationData($paymentData, $paymentMethod->id())
64 ),
65 'customer' => $giveStripeCustomer->get_id(),
66 'payment_method' => $paymentMethod->id(),
67 'confirm' => true,
68 'return_url' => $paymentData->redirectUrl,
69 ], $this->defaultIntentArgs)
70 );
71
72 // Send Stripe Receipt emails when enabled.
73 if (give_is_setting_enabled(give_get_option('stripe_receipt_emails'))) {
74 $intent_args['receipt_email'] = $paymentData->donorInfo->email;
75 }
76
77 $intent = give(PaymentIntent::class)->create($intent_args);
78
79 give_insert_payment_note(
80 $paymentData->donationId,
81 sprintf(__('Stripe Charge/Payment Intent ID: %s', 'give'), $intent->id())
82 );
83 give_insert_payment_note(
84 $paymentData->donationId,
85 sprintf(__('Stripe Payment Intent Client Secret: %s', 'give'), $intent->clientSecret())
86 );
87 give_update_meta(
88 $paymentData->donationId,
89 '_give_stripe_payment_intent_client_secret',
90 $intent->clientSecret()
91 );
92
93 if ('requires_action' == $intent->status()) {
94 give_insert_payment_note(
95 $paymentData->donationId,
96 __('Stripe requires additional action to be fulfilled. Check your Stripe account.', 'give')
97 );
98 give_update_meta(
99 $paymentData->donationId,
100 '_give_stripe_payment_intent_require_action_url',
101 $intent->nextActionRedirectUrl()
102 );
103 }
104
105 return $intent;
106 }
107 }
108