Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Below are the php codes to implement the stripe connect process in any platform.

Please add the following routes.

Code Block
Route::get('/stripe/connect', [StripeController::class, 'viewStripeConnectPage'])->name('stripe.connect');
Route::get('/create/stripe/connect', [StripeController::class, 'generateStripeConnect'])->name('create.stripe.connect');
Route::get('/stripe/connect/refresh', [StripeController::class, 'stripeConnectRefresh'])->name('stripe.connect.refresh');
Route::get('/stripe/connect/return', [StripeController::class, 'stripeConnectReturn'])->name('stripe.connect.return');

StripeController will look like below.

Code Block
<?php

namespace App\Http\Controllers\Services;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;

class StripeController extends Controller
{
    public function generateStripeConnect()
    {
        $stripe = new \Stripe\StripeClient('sk_test_51MmGiGHMOCsDa4DfO8dHJ8nP0D4S07GVFknrZgSUqNoJkaCGCZ28NHYkc6QfqtU33JY513NipZivmqd4vtubFjKH00aVYBrOrk');
        $account = $stripe->accounts->create(['type' => 'standard']);
        $accountLinks = $stripe->accountLinks->create([
            'account' => $account->id,
            'refresh_url' => route('stripe.connect.refresh'),
            'return_url' => route('stripe.connect.return'),
            'type' => 'account_onboarding',
          ]);
        if(isset($accountLinks->url))
        {
            $accountUrl = $accountLinks->url;
            return redirect($accountUrl);
        }
    }

    public function viewStripeConnectPage()
    {
        return view('public.stripe-connect');
    }

    public function stripeConnectRefresh()
    {
        Session::flash('message', 'Stripe link expired. Please generate again!'); 
        Session::flash('alert-class', 'alert-danger');
        
        return redirect()->route('stripe.connect');
    }
    public function stripeConnectReturn()
    {
        Session::flash('message', 'On boarded successfully! You can login now'); 
        Session::flash('alert-class', 'alert-success');
        
        return redirect()->route('stripe.connect');
    }
}

Stripe connect view page will be in the following structure.

Code Block
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Blink</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css">
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
 
<div class="container">
@if(Session::has('message'))
<p class="alert {{ Session::get('alert-class', 'alert-info') }}">{{ Session::get('message') }}</p>
@endif
  <div class="card">
    <div class="card-body">
      <h4 class="card-title">Stripe connect</h4>
      <p class="card-text">Stripe onboarding</p>
      <a href="{{ route('create.stripe.connect') }}" class="card-link">Connect stripe account</a>
      <a href="https://dashboard.stripe.com/login" class="card-link">Stripe Login</a>
    </div>
  </div>
</div>

</body>
</html>