diff --git a/app/Http/Controllers/APIs/Customer_API/SubscriptionController.php b/app/Http/Controllers/APIs/Customer_API/SubscriptionController.php index e62aa68..025e2ff 100644 --- a/app/Http/Controllers/APIs/Customer_API/SubscriptionController.php +++ b/app/Http/Controllers/APIs/Customer_API/SubscriptionController.php @@ -3,9 +3,18 @@ namespace App\Http\Controllers\APIs\Customer_API; use App\Http\Controllers\Controller; +use App\Models\IamPrincipal; +use App\Models\SubscriptionProducts; +use App\Models\Subscriptions; use App\Services\APIs\CustomerAPIs\RulesApiServices; use Illuminate\Support\Facades\Log; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; + + +use Illuminate\Support\Facades\Validator; + +use Illuminate\Support\Facades\Redirect; class SubscriptionController extends Controller { @@ -17,19 +26,48 @@ class SubscriptionController extends Controller public function mySubscription(Request $request) { try { + // dd($request->header('access-token')); + $token = readHeaderToken(); + // dd("acc",$token); + // $token = true; + + // dd($token, Session::get('vendorToken')); + if ($token) { + // $user_id = 12; + $user_id = $token['sub']; + + $dateTime = now(); + $formattedDateTime = $dateTime->format('Y-m-d H:i:s'); + $isSubscribedUser = Subscriptions::where('iam_principal_xid', $user_id) + ->where('next_payment_date', '>=', $formattedDateTime) + ->first(); + + $userData = IamPrincipal::where('id', $user_id)->first(); + + // $request['iam_principal_id'] = $user_id; + $products = SubscriptionProducts::where('is_active', '1')->get(); - return view('Admin.pages.subscriptions.my-subscription'); + if ($isSubscribedUser) { + + return view("Admin.pages.subscriptions.my-subscription", compact('user_id', 'userData', 'isSubscribedUser', 'products')); + } + $productList = SubscriptionProducts::where('is_active', 1)->first(); + + return view('Admin.pages.subscriptions.list-of-products', compact('productList','userData')); + } else { + return jsonResponseWithErrorMessageApi(__('auth.user_deleted'), 409); + } } catch (\Exception $e) { Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage(), ['exception' => $e]); - return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); + return jsonResponseWithErrorMessage(__('auth.something_went_wrong')); } } - //created by; Hritik + //created by; Hritik //On - 28th June ,2024 //use - to get Data of User in Webview and show list of product @@ -37,10 +75,9 @@ class SubscriptionController extends Controller public function listOfProduct(Request $request) { try { + $productList = SubscriptionProducts::where('is_active', 1)->first(); - - - return view('Admin.pages.subscriptions.list-of-products'); + return view('Admin.pages.subscriptions.list-of-products', compact('productList')); } catch (\Exception $e) { Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage(), ['exception' => $e]); @@ -51,190 +88,165 @@ class SubscriptionController extends Controller //created by; Hritik - //On - 18th May ,2024 - //use - to get Data of Detailed List Of Product , Monthly & Yearly - public function nextPage(Request $request) - { + //On - 02th July ,2024 + //use - to Create Subscription Product & price for Monthly - try { - // $token = readHeaderToken(); - $token = true; - // dd($request); - if ($token) { - // $user_id = $token['sub']; - - // $validator = $this->validateSubscriptionsForm($request); - - // if ($validator->fails()) { - // $validationErrors = $validator->errors()->all(); - // Log::error("Razorpay subscriptions plan validation error: " . implode(", ", $validationErrors)); - // return jsonResponseWithErrorMessageApi($validationErrors, 203); - // } - - // $request['iam_principal_id'] = $user_id; - $productTypeXid = $request->query('selected_product_type_id'); - - $userId = $request->query('user_id'); - $products = Products::with('productType', 'productTier') - ->where('product_type_xid', $productTypeXid) - ->where('is_active', '1')->get(); - - foreach ($products as $k => $val) { - - $products[$k]['product_image'] = ListingImageUrl('product_image', $val['product_image']); - } - - $user = IamPrincipal::where('id', $userId)->where('is_active', 1)->first(); - - $user_name = $user->user_name; - $user_contact_no = $user->phone_number; - $user_email = $user->email_address; - - - return view( - 'admin-dashboard.pages.razorpay-subscription.subscription-product-detail-pay', - compact( - 'products', - 'userId', - 'user_name', - 'user_contact_no', - 'user_email', - - ) - ); - } else { - return jsonResponseWithErrorMessageApi(__('auth.user_deleted'), 409); - } - } catch (Exception $e) { - Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage(), ['exception' => $e]); - return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); - } - } - - //created by :-Hritik - // On - 16th may ,2024 - //subscription to a particular project based on plans and returning the subscription id to web to open Subscription screen - public function subscribeToProduct(Request $request) + public function createStripeProduct(Request $request) { try { + DB::beginTransaction(); - // $token = readHeaderToken(); - $iamId = $request->iam_principal_xid; - $razorPayPlanId = $request->razorpay_plan_id; - $productId = $request->product_id; + $stripeSecret = (config('constants.subscription.stripe_secret_key')); - $user = IamPrincipal::where('id', $iamId)->where('is_active', 1)->first(); - $id = $user->id; - $phone = $user->phone_number; - $email = $user->email_address; + // $stripeSecret = env('STRIPE_SECRET'); + $stripe = new \Stripe\StripeClient($stripeSecret); + // dd($stripeSecret,$stripe,$request->all()); - $product = Products::where('razorpay_plan_id', $razorPayPlanId) - ->where('is_active', 1) - ->first(); + $validator = $this->validateSubscriptionsproductForm($request); - if ($product && $product->product_tier_xid == 1) { - //if product tier is monthly then we are setting count to 1200 means 100 years - $total_count = 1200; - } else if ($product && $product->product_tier_xid == 2) { - //if product tier is Yearly then we are setting count to 100 means 100 years - - $total_count = 100; - } else { - - //if product tier is not found then we are setting to 1 - - $total_count = 1; + if ($validator->fails()) { + $validationErrors = $validator->errors()->all(); + Log::error("Stripe subscriptions plan validation error: " . implode(", ", $validationErrors)); + return jsonResponseWithErrorMessageApi($validationErrors, 203); } - - $api = new Api(config('constants.razorpay.key_id'), config('constants.razorpay.key_secret')); - $plan_id = $product->razorpay_plan_id; - - // Call the subscription create method with request parameters - $response = $api->subscription->create([ - 'plan_id' => $plan_id, - 'total_count' => $total_count, - 'quantity' => '1', - - 'notes' => [ - 'product_id' => intval($product->id), - 'iam_principal_xid' => intval($iamId) - ], - 'notify_info' => [ - 'notify_phone' => $phone, - 'notify_email' => $email - ], - // 'callback_url' => route('my-subscription-page') + $id = SubscriptionProducts::create([ + 'product_name' => $request->product_name, + 'product_value' => $request->product_value, + 'product_details' => $request->product_details, ]); - $notes = $response->notes; - $notesArray = [ - 'product_id' => $notes->product_id, - 'iam_principal_xid' => $notes->iam_principal_xid, - ]; + $productCreate = $stripe->products->create([ + 'name' => $request->product_name, + ]); + + $updateCreatedPlan = SubscriptionProducts::where('id', $id->id)->update([ + 'stripe_product_id' => $productCreate->id + ]); + + + $totalPrice = $request->product_value; + if ($totalPrice && $totalPrice != 0 && $totalPrice != null) { + $productPrice1 = $stripe->prices->create([ + 'unit_amount' => $totalPrice * 100, + // amount entered by Admin (in cents) + 'currency' => 'usd', + 'recurring' => ['interval' => 'month'], + 'product' => $productCreate->id, + 'nickname' => 'Monthly Price', + + ]); + + $updateCreatedPlan = SubscriptionProducts::where('id', $id->id)->update([ + 'stripe_price_id' => $productPrice1->id + ]); + } DB::commit(); - - // return response()->json($response); - - return response()->json([ - 'subId' => $response->id, - 'userId' => $iamId, - - - ]); - return jsonResponseWithSuccessMessage(__('success.save_data', $response->short_url)); - - // return Redirect::away($response->short_url); - - } catch (Exception $e) { + return jsonResponseWithSuccessMessage(__('success.save_data'), 200); + } catch (\Exception $ex) { DB::rollBack(); - - Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage(), ['exception' => $e]); - return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); + Log::error('Favourite Restaurant service failed: ' . $ex->getMessage()); + return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500); } + + + + } - public function validateSubscriptionsForm(Request $request) + public function validateSubscriptionsproductForm(Request $request) { return Validator::make( $request->all(), [ - 'plan_id' => 'required', + + 'product_name' => 'required', + 'product_value' => 'required', + 'product_details' => 'required', ] ); } + + + //created by; Hritik + //On - 02th July ,2024 + //use - to Create Subscription + + public function subscriptionToPlan(Request $request) + { + // dd($request->all()); + + try { + + $userId = $request->user_id; + $subscriptionProductXid = $request->subscription_product_xid; + + $stripeSecret = (config('constants.subscription.stripe_secret_key')); + + $stripe = new \Stripe\StripeClient($stripeSecret); + // $taxId = (config('services.stripe.tax_id')); + + $userData = IamPrincipal::where('id', $userId)->first(); + + if ($userData) { + + $subscriptionPlan = SubscriptionProducts::where('id', $subscriptionProductXid)->first(); + + + if ($subscriptionPlan && $subscriptionPlan->stripe_price_id && $subscriptionPlan->stripe_price_id != null) { + $checkout = $stripe->checkout->sessions->create([ + 'customer_email' => $userData->email_address, + 'line_items' => [ + [ + 'price' => $subscriptionPlan->stripe_price_id, + 'quantity' => 1, + // 'tax_rates'=>[$taxId], + ], + ], + 'mode' => 'subscription', + // 'allow_promotion_codes' => true, + // 'tax_id_collection' => ['enabled' => true], + 'metadata' => [ + 'userId' => $userData->id, + + 'userEmail' => $userData->email_address, + 'subscriptionProductXid' => $subscriptionProductXid + ], + 'success_url' => "{{route('thankyou')}}", + // 'cancel_url' => "http://localhost/cheerstothe_season_2_o/my-subscription-page", + ]); + + return Redirect::away($checkout->url); + //note:-for now i am just sending the cveonly=0 and lmacve=1 for reference .'&lmacve=1&cveonly=0' + }else{ + return redirect()->back()->with(['error' => "Something went wrong while subscription!" ]); + + } + + } + + + } catch (\Exception $e) { + Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage(), ['exception' => $e]); + return jsonResponseWithErrorMessage(__('auth.something_went_wrong')); + // return redirect()->back()->with(['error' => "Something went wrong while subscription!" . $e->getMessage()]); + + } + + } + + + public function thankyou(Request $request) { - $userId = $request->query('user_xid'); - if ($userId) { - //store data in DATABSE - - RazorpayWebhookUsers::updateOrCreate( - ['iam_principal_xid' => $userId], - ['isSuccessPayment' => 1] - ); - } - return view('admin-dashboard.pages.razorpay-subscription.thankyou'); + + return view('Admin.pages.subscriptions.thank-you'); } - public function cancelThankYou(Request $request) - { - $endAt = $request->query('end_date'); - if ($endAt) { - $endDate = $endAt; - } else { - $endDate = null; - } - return view('admin-dashboard.pages.razorpay-subscription.cancel-thank-you', compact('endDate')); - } - - - - //created by; Hritik //On - 28th May ,2024 //use - To cancel the subscription of user on end of subscription end period @@ -307,7 +319,7 @@ class SubscriptionController extends Controller // { // // dd($request->all()); - // $razorPayPlanId = $request->razorpay_plan_id; + // $razorPaysubscriptionProductXid = $request->razorpay_plan_id; // $productTypeId = $request->product_type_xid; // $productTierId = $request->product_tier_xid; // $iamId = $request->iam_principal_xid; @@ -323,7 +335,7 @@ class SubscriptionController extends Controller // $products = Products::where('product_type_xid', $productTypeId) // ->where('product_tier_xid', $productTierId) - // ->where('razorpay_plan_id', $razorPayPlanId) + // ->where('razorpay_plan_id', $razorPaysubscriptionProductXid) // ->where('is_active', '1')->first(); // if (!$products) { diff --git a/app/Http/Controllers/StripeWebhookController.php b/app/Http/Controllers/StripeWebhookController.php new file mode 100644 index 0000000..1de749b --- /dev/null +++ b/app/Http/Controllers/StripeWebhookController.php @@ -0,0 +1,146 @@ +getContent(); + $sigHeader = $request->header('Stripe-Signature'); + $event = null; + + + try { + $event = Event::constructFrom( + json_decode($payload, true), + $sigHeader, + config('constant.subscription.webhook_secret') + ); + + + } catch (\UnexpectedValueException $e) { + // Invalid payload + return response()->json(['error' => 'Invalid payload'], 400); + } catch (\Stripe\Exception\SignatureVerificationException $e) { + // Signature verification failed + return response()->json(['error' => 'Signature verification failed'], 400); + } + $stripeSecret = config('services.stripe.key'); + + + + $stripe = new \Stripe\StripeClient($stripeSecret); + + if ($event->type === 'checkout.session.completed') { + try { + + DB::beginTransaction(); + // Handle successful subscription payment + // You can access event data like $event->data->object + + // Session::flush(); + $session = $event->data->object; + + $metadata = $session->metadata; + if ($metadata == null || empty($metadata)) { + return response('Webhook Metadata received at null ', 200); + } + $userId = $metadata->userId; + $userEmail = $metadata->userEmail; + $subscriptionProductId = $metadata->subscriptionProductXid; + + $subscriptionProductData = SubscriptionProducts::where('id', $subscriptionProductId)->first(); + + //checkout store in db + $subscriptionData = $stripe->checkout->sessions->retrieve($session->id, []); + $SubscriptionObject = $stripe->subscriptions->retrieve($subscriptionData->subscription, []); + $priceObject = $stripe->prices->retrieve($SubscriptionObject->plan->id, []); + + $amountSubtotalDollars = $subscriptionData->amount_total / 100; + // Log::info('Subscription has been started '); + + + + $subscriptionObjectFromInvoice = $stripe->subscriptions->retrieve($subscriptionData->subscription, []); + + $upcoming_invoice = $stripe->invoices->upcoming([ + 'subscription' => $subscriptionData->subscription, // use retrieved id from subscription + ]); + + $id = Subscriptions::updateOrCreate( + ['iam_principal_xid' => $userId, 'subscription_product_xid' => $subscriptionProductId], + [ + 'subscription_id' => $subscriptionData->subscription, + 'amount' => $amountSubtotalDollars, + 'stripe_customer_id' => $subscriptionData->customer, + 'subscription_status' => $subscriptionObjectFromInvoice->status, + 'current_period_start' => date('Y-m-d H:i:s', $SubscriptionObject->current_period_start), + 'current_period_end' => date('Y-m-d H:i:s', $SubscriptionObject->current_period_end), + + 'status' => 'complete', + 'next_payment_date' => date('Y-m-d H:i:s', $upcoming_invoice->next_payment_attempt) + + ] + ); + + $getUserData = IamPrincipal::where('id', $userId)->first(); + + $title = "Congratulations you subscription is now active"; + $message = $getUserData->first_name . " has subscribed for " . $subscriptionProductData->_name . " subscription"; + $content_type = "new_subscription"; + + onesignalhelper::sendNotificationApi($getUserData->one_signal_player_id, $title, $message, $content_type, $image = null, $id = null); + + + + + //Log::info('Subscription Taken Successfully by ' . $getCaregiverData->iamprincipal->user_name); + DB::commit(); + } catch (\Exception $e) { + // Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage()); + // return response()->json(['error' => __('something_went_wrong')], 500); + //Log::error('Customer Subscription Checkout session function failed: ' . $e->getMessage()); + DB::rollBack(); + + + } + //end + } + + + + + + + return response('Webhook received', 200); + } +} \ No newline at end of file diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index 9e86521..a067f42 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -12,6 +12,6 @@ class VerifyCsrfToken extends Middleware * @var array */ protected $except = [ - // + 'stripe/webhook', ]; } diff --git a/app/Models/SubscriptionProducts.php b/app/Models/SubscriptionProducts.php new file mode 100644 index 0000000..8b42b81 --- /dev/null +++ b/app/Models/SubscriptionProducts.php @@ -0,0 +1,17 @@ +=5.6.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "3.5.0", + "phpstan/phpstan": "^1.2", + "phpunit/phpunit": "^5.7 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Stripe\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Stripe and contributors", + "homepage": "https://github.com/stripe/stripe-php/contributors" + } + ], + "description": "Stripe PHP Library", + "homepage": "https://stripe.com/", + "keywords": [ + "api", + "payment processing", + "stripe" + ], + "support": { + "issues": "https://github.com/stripe/stripe-php/issues", + "source": "https://github.com/stripe/stripe-php/tree/v15.0.0" + }, + "time": "2024-06-24T23:05:11+00:00" + }, { "name": "symfony/clock", "version": "v7.1.0", @@ -9862,5 +9921,5 @@ "php": "^8.2" }, "platform-dev": [], - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.3.0" } diff --git a/config/constants.php b/config/constants.php new file mode 100644 index 0000000..ff75c52 --- /dev/null +++ b/config/constants.php @@ -0,0 +1,25 @@ + TRUE, + 'DIMENTIONS' => [ + "THUMBNAIL" => "300*160 pixels (3:2), Max Size 2MB and .jpg format image", + ], + 'SIZE' => [ + "THUMBNAIL" => "7168" + ], + 'PLATFORM' => ['ios', 'android', 'web'], + + + + 'subscription' => [ + 'stripe_private_key' => env('STRIPE_KEY'), + 'stripe_secret_key' => env('STRIPE_SECRET'), + 'webhook_secret' => env('STRIPE_WEBHOOK_SECRET'), + ], + +]; diff --git a/database/migrations/2024_07_02_082457_subscription_products.php b/database/migrations/2024_07_02_082457_subscription_products.php new file mode 100644 index 0000000..2d1ccfe --- /dev/null +++ b/database/migrations/2024_07_02_082457_subscription_products.php @@ -0,0 +1,42 @@ +id(); + $table->string('product_name')->nullable(); + $table->string('product_value')->nullable(); + $table->longText('product_details')->nullable(); + + $table->string('stripe_product_id')->nullable(); + $table->string('stripe_price_id')->nullable(); + + + $table->boolean('is_active')->default(1)->comment('1=Active, 0=Expired'); + $table->softDeletes(); + $table->integer('created_by')->nullable(); + $table->integer('modified_by')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + Schema::dropIfExists('subscription_products'); + + } +}; diff --git a/database/migrations/2024_07_02_103309_create_subscriptions_table.php b/database/migrations/2024_07_02_103309_create_subscriptions_table.php new file mode 100644 index 0000000..40d87eb --- /dev/null +++ b/database/migrations/2024_07_02_103309_create_subscriptions_table.php @@ -0,0 +1,51 @@ +id(); + + $table->unsignedBigInteger('subscription_product_xid'); + $table->unsignedBigInteger('iam_principal_xid'); + + $table->foreign('subscription_product_xid')->references('id')->on('subscription_products')->onDelete('cascade'); + $table->foreign('iam_principal_xid')->references('id')->on('iam_principal')->onDelete('cascade'); + + $table->string('amount')->nullable(); + $table->string('stripe_customer_id')->nullable(); + $table->string('payment_intent_id')->nullable(); + $table->string('payment_intent_client_secret')->nullable(); + $table->string('subscription_id')->nullable(); + $table->string('subscription_status')->nullable(); + $table->dateTime('current_period_start')->nullable(); + $table->dateTime('current_period_end')->nullable(); + $table->string('status')->nullable(); + $table->dateTime('next_payment_date')->nullable(); + $table->boolean('is_cancelled_subscription')->default(0)->comment('1=Cancelled, 0=Not Cancelled'); + $table->dateTime('cancelled_at')->nullable(); + + $table->boolean('is_active')->default(1)->comment('1=Active, 0=Expired'); + $table->softDeletes(); + $table->integer('created_by')->nullable(); + $table->integer('modified_by')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('subscriptions'); + } +}; diff --git a/resources/views/Admin/pages/subscriptions/list-of-products.blade.php b/resources/views/Admin/pages/subscriptions/list-of-products.blade.php index 1017563..9f1493f 100644 --- a/resources/views/Admin/pages/subscriptions/list-of-products.blade.php +++ b/resources/views/Admin/pages/subscriptions/list-of-products.blade.php @@ -2,161 +2,206 @@ - - - + + + - - List Of Products + + List Of Products + -
-
-

- - {{-- --}} +
+

-
- -
-

Subscribe to Cheers to the Season app to gain access to free cocktails* at - local - restaurants. -

-

*Free cocktail stipulations vary by state in accordance with local liquor - laws.

-
-

Subscription

-
-
-

Monthly Plan

-

Billed monthly

-
-
-

$2.99

-
-
-
-
-
- -
-
- -
- -
-
-
-
-

Applied Discount

-

First Month free

-
- -
-

$2.99

-
-
-
-
-
-

Total Payment

-
- -
-

$0.00

-
-
- -

You will be charged $2.99 every month after your free trial period ends. -

-

Subscription will be renewed monthly until cancelled.

-
-
-
- -
-

Program/Redemption Rules

-
-
-
- -
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et - dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco - laboris nisi ut aliquip ex ea commodo consequat.
-
-
-
- - -
- -
+ +
+

Program/Redemption Rules

+
+
+
+ +
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut + labore et + dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco + laboris nisi ut aliquip ex ea commodo consequat. +
+
+
+
+ + +
+
+ + +
+
+
+
+ + + + - - - - - + - + - + - + - \ No newline at end of file + diff --git a/resources/views/Admin/pages/subscriptions/thank-you.blade.php b/resources/views/Admin/pages/subscriptions/thank-you.blade.php new file mode 100644 index 0000000..3b50198 --- /dev/null +++ b/resources/views/Admin/pages/subscriptions/thank-you.blade.php @@ -0,0 +1,73 @@ + + + + + + + + + + List Of Products + + + + + + + + + {{-- --}} + + + + + + + + + + + + + + diff --git a/routes/customer_api.php b/routes/customer_api.php index f4bca26..eeb46c5 100644 --- a/routes/customer_api.php +++ b/routes/customer_api.php @@ -8,6 +8,7 @@ use App\Http\Controllers\APIs\Customer_API\FeedbackApiController; use App\Http\Controllers\APIs\Customer_API\NotificationController; use App\Http\Controllers\APIs\Customer_API\RestaurantControllerApi; use App\Http\Controllers\APIs\Customer_API\RulesControllerAPI; +use App\Http\Controllers\APIs\Customer_API\SubscriptionController; use App\Http\Controllers\ReferralCodeController; use Illuminate\Support\Facades\Route; @@ -16,6 +17,11 @@ use Illuminate\Support\Facades\Route; Route::middleware(['customerApiBasicAuth'])->group(function () { + + + Route::post('/v1/create-subscription-plans', [SubscriptionController::class, 'createStripeProduct']); + + Route::post('/v1/check-age', [AuthController::class, 'checkAge']); Route::get('/v1/list-states', [AuthController::class, 'viewstates']); Route::post('/v1/register', [AuthController::class, 'register']); @@ -80,4 +86,6 @@ Route::middleware(['customerApiBasicAuth'])->group(function () { //*******************************************************Rules ******************************************************** Route::get('/v1/voucher-rules', [RulesControllerAPI::class, 'getVoucherRules']); }); + + }); diff --git a/routes/web.php b/routes/web.php index 6f26bc3..42c8c36 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ name('login'); Route::post('/check_login', [LoginController::class, 'login_check']); Route::get('/forgot_password', [LoginController::class, 'forgot_password']); @@ -36,6 +48,8 @@ Route::post('/password_update', [LoginController::class, 'updatePassword']); Route::get('/logout', [LoginController::class, 'logout'])->name('logout'); + + Route::group(['middleware' => ['checkStatus']], function () { @@ -197,19 +211,24 @@ Route::group(['middleware' => ['checkStatus']], function () { //subscription ROutes -// Route::group(['middleware' => ['vendor.jwt.verify']], function () { +Route::group(['middleware' => ['customer.jwt.verify']], function () { Route::get('my-subscription-page', [SubscriptionController::class, 'mySubscription'])->name('my-subscription-page'); -// }); +}); + + // Route::middleware(['checkToken'])->group(function () { - Route::get('list-of-plans', [SubscriptionController::class, 'listOfProduct'])->name('next.page.route'); -// }); + Route::get('list-of-plans', [SubscriptionController::class, 'listOfProduct'])->name('list-of-products'); + + + // }); + Route::post('subscribe-to-plan', [SubscriptionController::class, 'subscriptionToPlan'])->name('subscribe-to-plan'); + Route::get('thank-you', [SubscriptionController::class, 'thankyou'])->name('thankyou'); // Route::post('subscribe-to-product', [SubscriptionController::class, 'subscribeToProduct'])->name('subscribe-to-product'); // Route::post('cancel-subscription', [SubscriptionController::class, 'cancelSubscription'])->name('cancel-subscription'); -// Route::get('thank-you', [SubscriptionController::class, 'thankyou'])->name('thankyou'); // Route::get('cancel-thank-you', [SubscriptionController::class, 'cancelThankYou'])->name('cancel-thank-you'); // Route::post('subscription-upgrade', [SubscriptionController::class, 'subscriptionUpgrade'])->name('subscription-upgrade');