subscription webhook updated
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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'),
|
||||
|
||||
|
||||
@@ -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');
|
||||
});
|
||||
// });
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user