PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.23.2
GiveWP – Donation Plugin and Fundraising Platform v2.23.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 / 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
101 lines
1 <?php
2
3 namespace Give\PaymentGateways\Gateways\Stripe\Actions;
4
5 use Give\Donations\Models\Donation;
6 use Give\Donations\Models\DonationNote;
7 use Give\Framework\Exceptions\Primitives\Exception;
8 use Give\Framework\PaymentGateways\DonationSummary;
9 use Give\PaymentGateways\Exceptions\InvalidPropertyName;
10 use Give\PaymentGateways\Gateways\Stripe\ValueObjects\PaymentIntent;
11 use Give\PaymentGateways\Gateways\Stripe\ValueObjects\PaymentMethod;
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 public function __construct(array $paymentIntentArgs = [])
25 {
26 $this->defaultIntentArgs = $paymentIntentArgs;
27 }
28
29 /**
30 * @since 2.19.0
31 *
32 * @throws InvalidPropertyName
33 * @throws Exception
34 */
35 public function __invoke(
36 Donation $donation,
37 DonationSummary $donationSummary,
38 \Give_Stripe_Customer $giveStripeCustomer,
39 PaymentMethod $paymentMethod
40 ): PaymentIntent {
41 /**
42 * This filter hook is used to update the payment intent arguments.
43 *
44 * @since 2.5.0
45 */
46 $intent_args = apply_filters(
47 'give_stripe_create_intent_args',
48 array_merge([
49 'amount' => $donation->amount->formatToMinorAmount(),
50 'currency' => $donation->amount->getCurrency(),
51 'payment_method_types' => ['card'],
52 'statement_descriptor' => give_stripe_get_statement_descriptor(),
53 'description' => $donationSummary->getSummaryWithDonor(),
54 'metadata' => give_stripe_prepare_metadata($donation->id),
55 'customer' => $giveStripeCustomer->get_id(),
56 'payment_method' => $paymentMethod->id(),
57 'confirm' => true,
58 'return_url' => give_get_success_page_uri(),
59 ], $this->defaultIntentArgs)
60 );
61
62 // Send Stripe Receipt emails when enabled.
63 if (give_is_setting_enabled(give_get_option('stripe_receipt_emails'))) {
64 $intent_args['receipt_email'] = $donation->email;
65 }
66
67 $intent = give(PaymentIntent::class)->create($intent_args);
68
69 DonationNote::create([
70 'donationId' => $donation->id,
71 'content' => sprintf(__('Stripe Charge/Payment Intent ID: %s', 'give'), $intent->id())
72 ]);
73
74 DonationNote::create([
75 'donationId' => $donation->id,
76 'content' => sprintf(__('Stripe Payment Intent Client Secret: %s', 'give'), $intent->clientSecret())
77 ]);
78
79 give_update_meta(
80 $donation->id,
81 '_give_stripe_payment_intent_client_secret',
82 $intent->clientSecret()
83 );
84
85 if ('requires_action' === $intent->status()) {
86 DonationNote::create([
87 'donationId' => $donation->id,
88 'content' => __('Stripe requires additional action to be fulfilled. Check your Stripe account.', 'give')
89 ]);
90
91 give_update_meta(
92 $donation->id,
93 '_give_stripe_payment_intent_require_action_url',
94 $intent->nextActionRedirectUrl()
95 );
96 }
97
98 return $intent;
99 }
100 }
101