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