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 / InvoicePaymentSucceeded.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
InvoicePaymentSucceeded.php
86 lines
1 <?php
2
3 namespace ProfilePress\Core\Membership\PaymentMethods\Stripe\WebhookHandlers;
4
5 use ProfilePress\Core\Membership\Models\Order\OrderEntity;
6 use ProfilePress\Core\Membership\Models\Order\OrderFactory;
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\Repositories\SubscriptionRepository;
11
12 class InvoicePaymentSucceeded implements WebhookHandlerInterface
13 {
14 public function handle($event_data)
15 {
16 $subs = SubscriptionRepository::init()->retrieveBy([
17 'profile_id' => $event_data['subscription'],
18 'number' => 1
19 ]);
20
21 if (empty($subs)) return;
22
23 $subscription = $subs[0];
24
25 if ($event_data['billing_reason'] == 'subscription_create') {
26
27 $parent_order = OrderFactory::fromId($subscription->parent_order_id);
28
29 if ($parent_order->exists() && ! $parent_order->is_completed()) {
30 $parent_order->complete_order($event_data['payment_intent']);
31
32 $this->set_customer_default_payment_method($parent_order, $event_data['customer']);
33 }
34 }
35
36 if ($event_data['billing_reason'] == 'subscription_cycle') {
37
38 // This is a renewal charge
39 $order_id = $subscription->add_renewal_order([
40 'transaction_id' => $event_data['payment_intent'],
41 'total_amount' => PaymentHelpers::stripe_amount_to_ppress_amount($event_data['amount_paid']),
42 ]);
43
44 if ( ! empty($order_id)) {
45 // we are not changing the expiration date because it is always in sync with stripe via
46 // CustomerSubscriptionUpdated event.
47 $subscription->renew(false);
48 }
49 }
50 }
51
52 /**
53 * @param OrderEntity $order
54 * @param string $stripe_customer_id
55 *
56 * @return void
57 */
58 public function set_customer_default_payment_method($order, $stripe_customer_id)
59 {
60 try {
61
62 $setup_intent_id = $order->get_meta('stripe_setup_intent');
63
64 if ( ! empty($setup_intent_id) && ! empty($stripe_customer_id)) {
65
66 $response = APIClass::stripeClient()->setupIntents->retrieve($setup_intent_id, []);
67
68 if ( ! empty($response->payment_method)) {
69
70 APIClass::stripeClient()->customers->update(
71 $stripe_customer_id,
72 [
73 'invoice_settings' => [
74 'default_payment_method' => $response->payment_method
75 ]
76 ]
77 );
78 }
79 }
80
81 } catch (\Exception $e) {
82 // Ignore, not critical enough to cause an error
83 }
84 }
85 }
86