File: //var/www/admin.javaapp.co.uk/app/Http/Controllers/Cafe/StripeController.php
<?php
namespace App\Http\Controllers\Cafe;
use Illuminate\Http\Request;
use Stripe\Stripe;
use Stripe\Account;
use Stripe\AccountLink;
use Illuminate\Support\Facades\Auth;
use App\Models\Cafe;
use App\Http\Controllers\Controller;
class StripeController extends Controller
{
public function index()
{
return view('cafe.stripe.connect');
}
public function createConnectAccount(Request $request)
{
try {
//Stripe::setApiKey('sk_test_51MprpUH68ivyxSXqFagCBFnQrOnnfeY1SASJ4UK5PGSqvcm0miA5EdGCO3ICtZb2HtIRW2eRdSizlet9DH3HkVRa00WT5e9EtX');
Stripe::setApiKey('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');
// Create Express account
$account = Account::create([
'type' => 'express',
'country' => 'GB',
'email' => Auth::user()->email,
'capabilities' => [
'card_payments' => ['requested' => true],
'transfers' => ['requested' => true],
],
'business_profile' => [
'url' => config('app.url')
]
]);
// Save Stripe account ID to user
$user = Auth::user();
$user->stripe_account_id = $account->id;
$user->stripe_onboarding_completed = 1;
$user->save();
// Create account link for onboarding
$accountLink = AccountLink::create([
'account' => $account->id,
'refresh_url' => route('cafe.stripe.refresh'),
'return_url' => route('cafe.stripe.return'),
'type' => 'account_onboarding',
]);
return response()->json([
'status' => 'success',
'url' => $accountLink->url
]);
} catch (\Exception $e) {
return response()->json([
'status' => 'error',
'message' => $e->getMessage()
], 500);
}
}
public function handleReturn()
{
$user = Auth::user();
try {
//Stripe::setApiKey('sk_test_51MprpUH68ivyxSXqFagCBFnQrOnnfeY1SASJ4UK5PGSqvcm0miA5EdGCO3ICtZb2HtIRW2eRdSizlet9DH3HkVRa00WT5e9EtX');
Stripe::setApiKey('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');
$account = Account::retrieve($user->stripe_account_id);
if ($account->details_submitted && $account->payouts_enabled) {
$user->stripe_onboarding_completed = 1;
$user->save();
return redirect()->route('cafe.dashboard')
->with('success', 'Your Stripe account has been connected successfully!');
}
return redirect()->route('cafe.dashboard')
->with('warning', 'Please complete your Stripe onboarding to enable payouts.');
} catch (\Exception $e) {
return redirect()->route('cafe.dashboard')
->with('error', 'There was an error connecting your Stripe account.');
}
}
public function handleRefresh()
{
try {
//Stripe::setApiKey('sk_test_51MprpUH68ivyxSXqFagCBFnQrOnnfeY1SASJ4UK5PGSqvcm0miA5EdGCO3ICtZb2HtIRW2eRdSizlet9DH3HkVRa00WT5e9EtX');
Stripe::setApiKey('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');
$accountLink = AccountLink::create([
'account' => Auth::user()->stripe_account_id,
'refresh_url' => route('cafe.stripe.refresh'),
'return_url' => route('cafe.stripe.return'),
'type' => 'account_onboarding',
]);
return redirect($accountLink->url);
} catch (\Exception $e) {
return redirect()->route('cafe.dashboard')
->with('error', 'Failed to refresh Stripe onboarding link.');
}
}
public function checkStripeAccount()
{
$user = Auth::user();
//Stripe::setApiKey('sk_test_51MprpUH68ivyxSXqFagCBFnQrOnnfeY1SASJ4UK5PGSqvcm0miA5EdGCO3ICtZb2HtIRW2eRdSizlet9DH3HkVRa00WT5e9EtX');
Stripe::setApiKey('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');
// Check if the user has a Stripe account and whether onboarding is complete
if ($user->stripe_account_id) {
$account = Account::retrieve($user->stripe_account_id);
$onboardingCompleted = $account->details_submitted && $account->payouts_enabled;
return response()->json([
'status' => 'success',
'stripe_account_id' => $user->stripe_account_id,
'stripe_onboarding_completed' => $onboardingCompleted
]);
}
return response()->json(['status' => 'success', 'stripe_account_id' => null, 'stripe_onboarding_completed' => false]);
}
public function completeOnboarding(Request $request)
{
$user = Auth::user();
//Stripe::setApiKey('sk_test_51MprpUH68ivyxSXqFagCBFnQrOnnfeY1SASJ4UK5PGSqvcm0miA5EdGCO3ICtZb2HtIRW2eRdSizlet9DH3HkVRa00WT5e9EtX');
Stripe::setApiKey('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');
// Ensure the user has a Stripe account
if (!$user->stripe_account_id) {
return response()->json(['status' => 'error', 'message' => 'No Stripe account found.'], 400);
}
try {
// Retrieve the Stripe account
$account = Account::retrieve($user->stripe_account_id);
// Check if onboarding is completed (details are submitted and payouts are enabled)
if ($account->details_submitted && $account->payouts_enabled) {
// Mark onboarding as complete in the database
$user->stripe_onboarding_completed = 1;
$user->save();
return response()->json([
'status' => 'success',
'message' => 'Onboarding completed successfully.',
'redirect' => route('cafe.dashboard') // Optionally redirect to the dashboard after completing onboarding
]);
} else {
// Generate the account link for completing onboarding if it's not yet finished
$accountLink = AccountLink::create([
'account' => $account->id,
'refresh_url' => route('cafe.stripe.refresh'),
'return_url' => route('cafe.stripe.return'),
'type' => 'account_onboarding',
]);
return response()->json([
'status' => 'success',
'url' => $accountLink->url // Return the onboarding URL to continue
]);
}
} catch (\Exception $e) {
return response()->json([
'status' => 'error',
'message' => $e->getMessage()
], 500);
}
}
}