subscription webhook updated

This commit is contained in:
Hritikkk9
2024-07-16 12:17:11 +05:30
parent 9156be0de1
commit f5e7487877

View File

@@ -142,8 +142,8 @@ class StripeWebhookController extends Controller
$referralUserSubscriptionData->current_period_start = date('Y-m-d H:i:s', $SubscriptionObject->current_period_start);
$referralUserSubscriptionData->current_period_end = date('Y-m-d H:i:s', $SubscriptionObject->current_period_end);
$referralUserSubscriptionData->next_payment_date = date('Y-m-d H:i:s', $upcoming_invoice->next_payment_attempt);
$referralUserSubscriptionData->next_invoice_amount = $upcoming_invoice->amount_due / 100;
$referralUserSubscriptionData->next_invoice_amount = $upcoming_invoice->amount_due / 100;
$referralUserSubscriptionData->save();
Log::info("Referral User Subscription Updated with Referral");
@@ -192,7 +192,7 @@ class StripeWebhookController extends Controller
'status' => 'complete',
'next_payment_date' => date('Y-m-d H:i:s', $upcoming_invoice->next_payment_attempt),
'next_invoice_amount' => $upcoming_invoice->amount_due / 100
]
);
@@ -230,8 +230,8 @@ class StripeWebhookController extends Controller
$newUserSubscriptionDetails->current_period_start = date('Y-m-d H:i:s', $SubscriptionObject->current_period_start);
$newUserSubscriptionDetails->current_period_end = date('Y-m-d H:i:s', $SubscriptionObject->current_period_end);
$newUserSubscriptionDetails->next_payment_date = date('Y-m-d H:i:s', $upcoming_invoice->next_payment_attempt);
$newUserSubscriptionDetails->next_invoice_amount = $upcoming_invoice->amount_due / 100;
$newUserSubscriptionDetails->next_invoice_amount = $upcoming_invoice->amount_due / 100;
$newUserSubscriptionDetails->save();
Log::info("new User Subscription Updated with Referral");
@@ -272,6 +272,71 @@ class StripeWebhookController extends Controller
//end
}
if ($event->type === 'invoice.payment_succeeded') {
try {
DB::beginTransaction();
$invoice = $event->data->object;
$metadata = $invoice->metadata;
//
$productID = $invoice->lines->data[0]->price->product;
$subscriptionProductData = SubscriptionProducts::where('stripe_product_id', $productID)->first();
$customerID = $invoice->customer;
$subscriptionId = $invoice->lines->data[0]->subscription;
$subscriptionObject = $stripe->subscriptions->retrieve($subscriptionId, []);
$upcoming_invoice = $stripe->invoices->upcoming([
'subscription' => $subscriptionId, // use retrieved id from subscription
]);
$isCustomerStoredInSubscriptionTable = Subscriptions::where('stripe_customer_id', $customerID)->first();
if ($isCustomerStoredInSubscriptionTable == null) {
return response('Webhook received at null ', 200);
}
$subscriptionInDatabase = Subscriptions::where('stripe_customer_id', $customerID)->where('subscription_id', $subscriptionId)->where('is_cancelled_subscription', 0)->first();
$subscriptionInDatabase->subscription_status = $subscriptionObject->status;
$subscriptionInDatabase->current_period_end = date('Y-m-d H:i:s', $upcoming_invoice->next_payment_attempt);
$subscriptionInDatabase->status = 'complete';
$subscriptionInDatabase->next_payment_date = date('Y-m-d H:i:s', $upcoming_invoice->next_payment_attempt);
$subscriptionInDatabase->save();
$iamPrincialData = IamPrincipal::where('id', $subscriptionInDatabase->iam_principal_xid)->first();
$title = "Congratulations your Subscription has been Renewed";
$message = $iamPrincialData->first_name . " has subscribed for " . $subscriptionProductData->product_name;
$content_type = "recurring_subscription";
onesignalhelper::sendNotificationApi($iamPrincialData->one_signal_player_id, $title, $message, $content_type, $image = null, $id = null);
Log::info("Recurring Subscription has been Updated");
DB::commit();
} catch (\Exception $e) {
Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage());
// return response()->json(['error' => __('something_went_wrong')], 500);
DB::rollBack();
Log::error('Customer Subscription Invoice payment function failed:' . $e->getMessage());
}
// write your code here
// after successful event this actions will be taken
//hritik code
}
return response('Webhook received', 200);
}