PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.33.0
GiveWP – Donation Plugin and Fundraising Platform v2.33.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 2 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
91 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.33.0 no longer store the payment intent secret
31 * @since 2.19.0
32 *
33 * @throws InvalidPropertyName
34 * @throws Exception
35 */
36 public function __invoke(
37 Donation $donation,
38 DonationSummary $donationSummary,
39 \Give_Stripe_Customer $giveStripeCustomer,
40 PaymentMethod $paymentMethod
41 ): PaymentIntent {
42 /**
43 * This filter hook is used to update the payment intent arguments.
44 *
45 * @since 2.5.0
46 */
47 $intent_args = apply_filters(
48 'give_stripe_create_intent_args',
49 array_merge([
50 'amount' => $donation->amount->formatToMinorAmount(),
51 'currency' => $donation->amount->getCurrency(),
52 'payment_method_types' => ['card'],
53 'statement_descriptor' => give_stripe_get_statement_descriptor(),
54 'description' => $donationSummary->getSummaryWithDonor(),
55 'metadata' => give_stripe_prepare_metadata($donation->id),
56 'customer' => $giveStripeCustomer->get_id(),
57 'payment_method' => $paymentMethod->id(),
58 'confirm' => true,
59 'return_url' => give_get_success_page_uri(),
60 ], $this->defaultIntentArgs)
61 );
62
63 // Send Stripe Receipt emails when enabled.
64 if (give_is_setting_enabled(give_get_option('stripe_receipt_emails'))) {
65 $intent_args['receipt_email'] = $donation->email;
66 }
67
68 $intent = give(PaymentIntent::class)->create($intent_args);
69
70 DonationNote::create([
71 'donationId' => $donation->id,
72 'content' => sprintf(__('Stripe Charge/Payment Intent ID: %s', 'give'), $intent->id())
73 ]);
74
75 if ('requires_action' === $intent->status()) {
76 DonationNote::create([
77 'donationId' => $donation->id,
78 'content' => __('Stripe requires additional action to be fulfilled. Check your Stripe account.', 'give')
79 ]);
80
81 give_update_meta(
82 $donation->id,
83 '_give_stripe_payment_intent_require_action_url',
84 $intent->nextActionRedirectUrl()
85 );
86 }
87
88 return $intent;
89 }
90 }
91