subscription webhook updated

This commit is contained in:
Hritikkk9
2024-07-08 13:05:55 +05:30
parent 607811057f
commit 5b6186ede1
3 changed files with 98 additions and 14 deletions

View File

@@ -15,13 +15,15 @@ use Stripe\Stripe;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\DB;
use DateTime;
class StripeWebhookController extends Controller
{
//
public function getWebhook(Request $request){
public function getWebhook(Request $request)
{
// dd("ssssss",$request);
Log::info('Stripe Webhook Received= in getWebhook ');
Log::info('Stripe Webhook Received: ' . $request->getContent());
@@ -81,6 +83,47 @@ class StripeWebhookController extends Controller
$userEmail = $metadata->userEmail;
$subscriptionProductId = $metadata->subscriptionProductXid;
$isReferralSubscription = $metadata->is_referral_subscription;
$referralUserId = $metadata->referral_user_id;
if ($isReferralSubscription == 1) {
//who has refer the Subscription to Current user
Log::info("Referral User Subscription Updating Function Starts");
$referralUserSubscriptionData = Subscriptions::where('iam_principal_xid', $referralUserId)->where('subscription_status', '=', 'active')->first();
if ($referralUserSubscriptionData && $referralUserSubscriptionData->is_cancelled_subscription == 0) {
//update subscription add 30 days trial period to this subscription
$nextPaymentDate = $referralUserSubscriptionData->next_payment_date;
$date = new DateTime($nextPaymentDate);
$date->modify('+30 days');
$newDate = $date->format('Y-m-d H:i:s');
Log::info("new Date = ");
Log::info($newDate);
$timestampForReferralUser = $date->getTimestamp();
$updateSubscription = $stripe->subscriptions->update(
$referralUserSubscriptionData->subscription_id,
['trial_end' => $timestampForReferralUser]
);
$SubscriptionObject = $stripe->subscriptions->retrieve($referralUserSubscriptionData->subscription_id, []);
$upcoming_invoice = $stripe->invoices->upcoming([
'subscription' => $referralUserSubscriptionData->subscription_id, // use retrieved id from subscription
]);
$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->save();
Log::info("Referral User Subscription Updated with Referral");
//updated the Referral Users Subscription.
}
}
$subscriptionProductData = SubscriptionProducts::where('id', $subscriptionProductId)->first();
//checkout store in db
@@ -115,6 +158,41 @@ class StripeWebhookController extends Controller
]
);
if ($isReferralSubscription == 1) {
Log::info("new User Subscription Updating Function Starts");
//update Current User subscription to add 30 days additional to their subscription end
$SubscriptionObject = $stripe->subscriptions->retrieve($subscriptionData->subscription, []);
$newUserSubscriptionDetails = Subscriptions::where('iam_principal_xid', $userId)
->where('subscription_product_xid', $subscriptionProductId)->first();
$nextPaymentDate = $newUserSubscriptionDetails->next_payment_date;
$date = new DateTime($nextPaymentDate);
$date->modify('+30 days');
$newDate = $date->format('Y-m-d H:i:s');
Log::info("new Date = ");
Log::info($newDate);
$timestampForReferralUser = $date->getTimestamp();
$updateSubscription = $stripe->subscriptions->update(
$newUserSubscriptionDetails->subscription_id,
['trial_end' => $timestampForReferralUser]
);
$SubscriptionObject = $stripe->subscriptions->retrieve($newUserSubscriptionDetails->subscription_id, []);
$upcoming_invoice = $stripe->invoices->upcoming([
'subscription' => $newUserSubscriptionDetails->subscription_id, // use retrieved id from subscription
]);
$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->save();
Log::info("new User Subscription Updated with Referral");
}
$getUserData = IamPrincipal::where('id', $userId)->first();
$title = "Congratulations you subscription is now active";
@@ -140,10 +218,6 @@ class StripeWebhookController extends Controller
}
return response('Webhook received', 200);
}
}

View File

@@ -27,14 +27,14 @@ class SubscriptionController extends Controller
{
try {
// dd($request->header('access-token'));
$token = readHeaderToken();
// $token = readHeaderToken();
// dd("acc",$token);
// $token = true;
$token = true;
// dd($token, Session::get('vendorToken'));
if ($token) {
// $user_id = 12;
$user_id = $token['sub'];
$user_id = 12;
// $user_id = $token['sub'];
$dateTime = now();
$formattedDateTime = $dateTime->format('Y-m-d H:i:s');
@@ -183,6 +183,13 @@ class SubscriptionController extends Controller
// dd($request->all());
try {
$isReferralSubscription = 0;
$referralUserId = $request->referral_user_id;
if( $referralUserId && $referralUserId != null){
$isReferralSubscription = 1;
}else{
$isReferralSubscription = 0;
}
$userId = $request->user_id;
$subscriptionProductXid = $request->subscription_product_xid;
@@ -214,9 +221,12 @@ class SubscriptionController extends Controller
// 'tax_id_collection' => ['enabled' => true],
'metadata' => [
'userId' => $userData->id,
'userEmail' => $userData->email_address,
'subscriptionProductXid' => $subscriptionProductXid
'subscriptionProductXid' => $subscriptionProductXid ,
'is_referral_subscription'=>$isReferralSubscription,
'referral_user_id'=>$referralUserId,
],
'success_url' => route('thankyou'),

View File

@@ -220,10 +220,10 @@ Route::group(['middleware' => ['checkStatus']], function () {
//subscription ROutes
Route::group(['middleware' => ['customer.jwt.verify']], function () {
// Route::group(['middleware' => ['customer.jwt.verify']], function () {
Route::get('my-subscription-page', [SubscriptionController::class, 'mySubscription'])->name('my-subscription-page');
});
// });