PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.0
GiveWP – Donation Plugin and Fundraising Platform v2.22.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 / CheckoutGateway.php
give / src / PaymentGateways / Gateways / Stripe Last commit date
Actions 4 years ago Controllers 4 years ago Exceptions 4 years ago Helpers 4 years ago Migrations 4 years ago Traits 4 years ago ValueObjects 4 years ago Webhooks 4 years ago BECSGateway.php 3 years ago CheckoutGateway.php 3 years ago CreditCardGateway.php 3 years ago SEPAGateway.php 3 years ago
CheckoutGateway.php
132 lines
1 <?php
2
3 namespace Give\PaymentGateways\Gateways\Stripe;
4
5 use Give\Donations\Models\Donation;
6 use Give\Framework\Exceptions\Primitives\Exception;
7 use Give\Framework\PaymentGateways\Commands\GatewayCommand;
8 use Give\Framework\PaymentGateways\Commands\RedirectOffsite;
9 use Give\Framework\PaymentGateways\Exceptions\PaymentGatewayException;
10 use Give\Framework\PaymentGateways\PaymentGateway;
11 use Give\Framework\PaymentGateways\PaymentGatewayRegister;
12 use Give\Helpers\Call;
13 use Give\Helpers\Gateways\Stripe;
14 use Give\PaymentGateways\Gateways\Stripe\Exceptions\CheckoutException;
15 use Give\PaymentGateways\Gateways\Stripe\ValueObjects\PaymentMethod;
16
17 /**
18 * @since 2.19.0
19 */
20 class CheckoutGateway extends PaymentGateway
21 {
22 use Traits\CheckoutInstructions;
23 use Traits\CheckoutModal;
24 use Traits\CheckoutRedirect;
25 use Traits\HandlePaymentIntentStatus;
26
27 /**
28 * @inheritDoc
29 * @since 2.19.0
30 *
31 * @param array{stripePaymentMethod: PaymentMethod} $gatewayData
32 *
33 * @throws PaymentGatewayException
34 */
35 public function createPayment(Donation $donation, $gatewayData): GatewayCommand
36 {
37 switch ($this->getCheckoutType()) {
38 case 'modal':
39 return give(PaymentGatewayRegister::class)
40 ->getPaymentGateway(CreditCardGateway::id())
41 ->createPayment($donation, $gatewayData);
42 case 'redirect':
43 return $this->createPaymentRedirect($donation);
44 default:
45 throw new CheckoutException('Invalid Checkout Error');
46 }
47 }
48
49 /**
50 * @since 2.21.2
51 */
52 public function getCheckoutType(): string
53 {
54 return give_stripe_get_checkout_type();
55 }
56
57 /**
58 * @since 2.19.7 fix argument order of CreateCheckoutSession
59 * @since 2.19.0
60 */
61 protected function createPaymentRedirect(Donation $donation): RedirectOffsite
62 {
63 $donationSummary = Call::invoke(Actions\SaveDonationSummary::class, $donation);
64 $stripeCustomer = Call::invoke(Actions\GetOrCreateStripeCustomer::class, $donation);
65 $session = Call::invoke(Actions\CreateCheckoutSession::class, $donation, $donationSummary, $stripeCustomer);
66
67 return new RedirectOffsite(
68 $this->getRedirectUrl($session->id(), give_get_payment_form_id($donation->id))
69 );
70 }
71
72 /**
73 * @inheritDoc
74 */
75 public static function id(): string
76 {
77 return 'stripe_checkout';
78 }
79
80 /**
81 * @inheritDoc
82 */
83 public function getId(): string
84 {
85 return self::id();
86 }
87
88 /**
89 * @inheritDoc
90 */
91 public function getName(): string
92 {
93 return __('Stripe - Checkout', 'give');
94 }
95
96 /**
97 * @inheritDoc
98 */
99 public function getPaymentMethodLabel(): string
100 {
101 return __('Stripe - Checkout', 'give');
102 }
103
104 /**
105 * @inheritDoc
106 *
107 * @return string|void
108 */
109 public function getLegacyFormFieldMarkup(int $formId, array $args): string
110 {
111 Stripe::canShowBillingAddress($formId, $args);
112
113 switch (give_stripe_get_checkout_type()) {
114 case 'modal':
115 return $this->getCheckoutInstructions()
116 . $this->getCheckoutModalHTML($formId, $args);
117 case 'redirect':
118 return $this->getCheckoutInstructions();
119 }
120 }
121
122 /**
123 * @since 2.20.0
124 * @inerhitDoc
125 * @throws Exception
126 */
127 public function refundDonation(Donation $donation)
128 {
129 throw new Exception('Method has not been implemented yet. Please use the legacy method in the meantime.');
130 }
131 }
132