PHP code example of cleaniquecoders / laravel-billing
1. Go to this page and download the library: Download cleaniquecoders/laravel-billing library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
cleaniquecoders / laravel-billing example snippets
use CleaniqueCoders\LaravelBilling\Contracts\Billable;
use CleaniqueCoders\LaravelBilling\Concerns\HasSubscriptions;
class User extends Authenticatable implements Billable
{
use HasSubscriptions;
public function billingAddress(): array
{
return ['No. 1, Jalan Contoh', '50000 Kuala Lumpur'];
}
}
$user->subscription(); // current access-granting subscription, or null
$user->subscribedTo('pro'); // bool
$user->onTrial(); // bool
$user->onGracePeriod(); // bool (access until current_period_end)
$user->plan(); // active Plan, or the configured default/free
$user->invoices(); // MorphMany
$user->canConsume('seats', 1); // gated by plan limits
$user->recordUsage('seats', 1);
use CleaniqueCoders\LaravelBilling\Services\PlanRepository;
$plans = app(PlanRepository::class)->all(); // Collection<Plan>
$plan = app(PlanRepository::class)->find('pro'); // ?Plan
$free = app(PlanRepository::class)->default(); // Plan
use CleaniqueCoders\LaravelBilling\Facades\Billing;
use CleaniqueCoders\LaravelBilling\Enums\PlanInterval;
$plan = app(PlanRepository::class)->find('pro');
$intent = Billing::checkout($user, $plan, PlanInterval::Monthly, route('billing.done'));
return redirect($intent->redirectUrl);
use CleaniqueCoders\LaravelBilling\Facades\Billing;
Route::post('/webhooks/{gateway}', function (Request $request, string $gateway) {
$event = Billing::gateway($gateway)->parseWebhook($request);
abort_if($event === null, 401);
Billing::handle($event); // dedups on providerEventId, transitions state, issues invoices, fires events
return response()->noContent();
});
namespace App\Billing;
use CleaniqueCoders\LaravelBilling\Contracts\{Billable, PaymentGateway};
use CleaniqueCoders\LaravelBilling\DataTransferObjects\{CheckoutIntent, WebhookEvent};
use CleaniqueCoders\LaravelBilling\Enums\{PlanInterval, WebhookEventType};
use CleaniqueCoders\LaravelBilling\Models\{Plan, Subscription};
use Illuminate\Http\Request;
class BayarCashGateway implements PaymentGateway
{
public function createCheckout(Billable $billable, Plan $plan, PlanInterval $interval, string $returnUrl): CheckoutIntent
{
// call your SDK / HTTP here
return new CheckoutIntent(redirectUrl: $url, externalId: $reference);
}
public function cancel(Subscription $subscription): void { /* … */ }
public function parseWebhook(Request $request): ?WebhookEvent
{
// verify signature; return null if invalid
return new WebhookEvent(
type: WebhookEventType::SubscriptionActivated,
externalId: $request->input('reference'),
amountCents: (int) $request->input('amount') * 100,
providerEventId: $request->input('event_id'),
rawPayload: $request->all(),
);
}
}