diff --git a/app/Http/Controllers/APIs/Customer_API/StripeWebhookController.php b/app/Http/Controllers/APIs/Customer_API/StripeWebhookController.php index b6130ec..b69d0db 100644 --- a/app/Http/Controllers/APIs/Customer_API/StripeWebhookController.php +++ b/app/Http/Controllers/APIs/Customer_API/StripeWebhookController.php @@ -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); }