PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
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