PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.16.19
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.16.19
4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / Membership / PaymentMethods / Stripe / WebhookHandlers / CheckoutSessionCompleted.php
wp-user-avatar / src / Membership / PaymentMethods / Stripe / WebhookHandlers Last commit date
ChargeRefunded.php 11 months ago CheckoutSessionAsyncPaymentFailed.php 4 months ago CheckoutSessionAsyncPaymentSucceeded.php 4 months ago CheckoutSessionCompleted.php 4 months ago CustomerSubscriptionCreated.php 2 years ago CustomerSubscriptionDeleted.php 3 years ago CustomerSubscriptionUpdated.php 11 months ago InvoicePaymentSucceeded.php 2 years ago PaymentIntentSucceeded.php 3 years ago index.php 3 years ago
CheckoutSessionCompleted.php
77 lines
1 <?php
2
3 namespace ProfilePress\Core\Membership\PaymentMethods\Stripe\WebhookHandlers;
4
5 use ProfilePress\Core\Membership\Models\Order\OrderFactory;
6 use ProfilePress\Core\Membership\Models\Subscription\SubscriptionFactory;
7 use ProfilePress\Core\Membership\PaymentMethods\Stripe\APIClass;
8 use ProfilePress\Core\Membership\PaymentMethods\Stripe\PaymentHelpers;
9 use ProfilePress\Core\Membership\PaymentMethods\WebhookHandlerInterface;
10 use ProfilePress\Core\Membership\Services\Calculator;
11
12 class CheckoutSessionCompleted implements WebhookHandlerInterface
13 {
14 public function handle($event_data)
15 {
16 if ( ! in_array($event_data['mode'], ['subscription', 'payment'], true)) return;
17
18 /** ensures checkout is paid for because of delayed payment methods
19 * @see https://stripe.com/docs/payments/checkout/fulfill-orders#delayed-notification
20 */
21 if ($event_data['payment_status'] != 'paid') return;
22
23 $order = OrderFactory::fromOrderKey($event_data['client_reference_id']);
24
25 $subscription = SubscriptionFactory::fromId($order->subscription_id);
26
27 if ($event_data['mode'] == 'subscription') {
28
29 $stripe_subscription = APIClass::stripeClient()->subscriptions->retrieve($event_data['subscription'], [
30 'expand' => ['latest_invoice']
31 ])->toArray();
32
33 $transaction_id = $stripe_subscription['latest_invoice']['payment_intent'];
34
35 } else {
36
37 $transaction_id = $event_data['payment_intent'];
38 }
39
40 if ($order->exists() && ! $order->is_completed()) {
41
42 if (isset($event_data['total_details']['amount_tax'])) {
43
44 if (Calculator::init($event_data['total_details']['amount_tax'])->isGreaterThanZero()) {
45
46 $order->tax = PaymentHelpers::stripe_amount_to_ppress_amount($event_data['total_details']['amount_tax']);
47
48 $order->subtotal = PaymentHelpers::stripe_amount_to_ppress_amount($event_data['amount_subtotal']);
49
50 $order->total = PaymentHelpers::stripe_amount_to_ppress_amount($event_data['amount_total']);
51
52 $order->save();
53 }
54 }
55
56 $order->complete_order($transaction_id);
57 }
58
59 if ( $subscription->exists() && ! $subscription->is_active()) {
60
61 if ($event_data['mode'] == 'subscription') {
62
63 $subscription->profile_id = $event_data['subscription'];
64
65 if ($subscription->has_trial()) {
66 $subscription->enable_subscription_trial();
67 } else {
68 $subscription->activate_subscription();
69 }
70
71 } else {
72 $subscription->activate_subscription();
73 }
74 }
75 }
76 }
77