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