133 lines
3.9 KiB
PHP
133 lines
3.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Helpers\FirstParty\Purchase\PurchaseHelper;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Session;
|
|
|
|
class UserPurchaseController extends Controller
|
|
{
|
|
public function pricingPage(Request $request)
|
|
{
|
|
|
|
$subscriptions = PurchaseHelper::getPricingPageSubscriptions();
|
|
|
|
return response()->json([
|
|
'success' => [
|
|
'data' => [
|
|
'subscription' => $subscriptions[0],
|
|
'one_times' => PurchaseHelper::getPricingPageOneTime(),
|
|
],
|
|
],
|
|
]);
|
|
}
|
|
|
|
// SUBSCRIBE (RECURRING)
|
|
|
|
public function subscribe(Request $request)
|
|
{
|
|
$price_id = $request->input('price_id');
|
|
|
|
$payload = [
|
|
'mode' => 'subscription',
|
|
'success_url' => route('subscribe.success').'?'.'session_id={CHECKOUT_SESSION_ID}',
|
|
'cancel_url' => route('subscribe.cancelled').'?'.'session_id={CHECKOUT_SESSION_ID}',
|
|
'line_items' => [[
|
|
'price' => $price_id,
|
|
]],
|
|
];
|
|
|
|
$checkout_session = Auth::user()->checkout([$price_id => 1], $payload);
|
|
|
|
Session::put('checkout_session_id', $checkout_session->id);
|
|
|
|
return response()->json([
|
|
'success' => [
|
|
'data' => [
|
|
'redirect' => $checkout_session->url,
|
|
],
|
|
],
|
|
]);
|
|
}
|
|
|
|
public function subscribeSuccess(Request $request)
|
|
{
|
|
if (! Session::has('checkout_session_id')) {
|
|
abort(401);
|
|
}
|
|
|
|
Session::forget('checkout_session_id');
|
|
|
|
return redirect()->route('home')->with('success', [
|
|
'message' => 'Thank you for subscribing! Your subscription should be active momentarily. Please refresh the page if you do not see your plan.',
|
|
'action' => 'subscription_success',
|
|
]);
|
|
}
|
|
|
|
public function subscribeCancelled(Request $request)
|
|
{
|
|
|
|
if (Session::has('checkout_session_id')) {
|
|
Session::forget('checkout_session_id');
|
|
}
|
|
|
|
return redirect()->route('home')->with('error', [
|
|
'message' => "You've decided not to complete the payment at this time. No charges have been made to your account.",
|
|
'action' => 'subscription_cancelled',
|
|
]);
|
|
}
|
|
|
|
// PURCHASE (ONE TIME)
|
|
|
|
public function purchase(Request $request)
|
|
{
|
|
$price_id = $request->input('price_id');
|
|
|
|
$payload = [
|
|
'success_url' => route('subscribe.success').'?'.'session_id={CHECKOUT_SESSION_ID}',
|
|
'cancel_url' => route('subscribe.cancelled').'?'.'session_id={CHECKOUT_SESSION_ID}',
|
|
];
|
|
|
|
$checkout_session = Auth::user()->checkout([$price_id => 1], $payload);
|
|
|
|
Session::put('checkout_session_id', $checkout_session->id);
|
|
|
|
return response()->json([
|
|
'success' => [
|
|
'data' => [
|
|
'redirect' => $checkout_session->url,
|
|
],
|
|
],
|
|
]);
|
|
}
|
|
|
|
public function purchaseSuccess(Request $request)
|
|
{
|
|
|
|
if (! Session::has('checkout_session_id')) {
|
|
abort(401);
|
|
}
|
|
|
|
Session::forget('checkout_session_id');
|
|
|
|
return redirect()->route('home')->with('success', [
|
|
'message' => 'Thank you for purchasing! Your purchase should be active momentarily. Please refresh the page if you do not see your plan.',
|
|
'action' => 'purchase_success',
|
|
]);
|
|
}
|
|
|
|
public function purchaseCancelled(Request $request)
|
|
{
|
|
if (Session::has('checkout_session_id')) {
|
|
Session::forget('checkout_session_id');
|
|
}
|
|
|
|
return redirect()->route('home')->with('error', [
|
|
'message' => "You've decided not to complete the payment at this time. No charges have been made to your account.",
|
|
'action' => 'purchase_cancelled',
|
|
]);
|
|
}
|
|
}
|