<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
expdev07 / laravel-cashier-stripe-connect example snippets
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use ExpDev07\CashierConnect\Contracts\StripeAccount;
use Laravel\Cashier\Billable as CashierBillable;
use ExpDev07\CashierConnect\Billable as ConnectBillable;
class User extends Authenticatable implements StripeAccount
{
use CashierBillable;
use ConnectBillable;
///
}
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use URL;
class StripeController extends Controller
{
/**
* Creates an onboarding link and redirects the user there.
*
* @param Request $request
* @return RedirectResponse
*/
public function board(Request $request): RedirectResponse
{
return $this->handleBoardingRedirect($request->user());
}
/**
* Handles returning from completing the onboarding process.
*
* @param Request $request
* @return RedirectResponse
*/
public function returning(Request $request): RedirectResponse
{
return $this->handleBoardingRedirect($request->user());
}
/**
* Handles refreshing of onboarding process.
*
* @param Request $request
* @return RedirectResponse
*/
public function refresh(Request $request): RedirectResponse
{
return $this->handleBoardingRedirect($request->user());
}
/**
* Handles the redirection logic of Stripe onboarding for the given user. Will
* create account and redirect user to onboarding process or redirect to account
* dashboard if they have already completed the process.
*
* @param User $user
* @return RedirectResponse
*/
private function handleBoardingRedirect(User $user): RedirectResponse
{
// Redirect to dashboard if onboarding is already completed.
if ($user->hasStripeAccountId() && $user->hasCompletedOnboarding()) {
return $user->redirectToAccountDashboard();
}
// Delete account if already exists and create new express account with
// weekly payouts.
$user->deleteAndCreateStripeAccount('express', [
'settings' => [
'payouts' => [
'schedule' => [
'interval' => 'weekly',
'weekly_anchor' => 'friday',
]
]
]
]);
// Redirect to Stripe account onboarding, with return and refresh url, otherwise.
return $user->redirectToAccountOnboarding(
URL::to('/api/stripe/return?api_token=' . $user->api_token),
URL::to('/api/stripe/refresh?api_token=' . $user->api_token)
);
}
}
// Get user. This user has added the Billable trait and implements StripeAccount.
$user = User::query()->find(1);
// Transfer 10 USD to the user.
$user->transferToStripeAccount(1000);
// Payout 5 dollars to the user's bank account, which will arrive in 1 week.
$user->payoutStripeAccount(500, Date::now()->addWeek());
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.