Search by

nafiswatsiq / subbase-payment

Payment gateway integration plugin for Subbase subscriptions

Maintainers

Package info

github.com/nafiswatsiq/subbase-payment

pkg:composer/nafiswatsiq/subbase-payment

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.0 2026-09-05 21:27 UTC

This package is auto-updated.

Last update: 2026-09-06 12:24:04 UTC


README

Latest Version on Packagist Software License Total Downloads

Payment gateway integrations for nafiswatsiq/subbase. Out-of-the-box support for popular gateways, public checkout pages, webhook handling, and payment events for subscription activation.

Quick links: Features · Requirements · Installation · Public Checkout · Events · Email Invoices · Configuration

Features

  • 💳 Multiple Gateway Drivers — Built-in support for PayPal, Stripe, Midtrans, and Xendit.
  • ⚙️ Custom Gateway Support — Extensible architecture to build your own payment driver.
  • 🛒 Hosted Public Checkout — Modern, responsive checkout UI automatically connected with Subbase plan components.
  • 🔔 Idempotent Webhooks — Secure, signature-verified webhook handling to update payment status safely.
  • Automated CLI Setup — Interactively install, configure, reset, or switch gateway drivers via php artisan subbase-payment:install.
  • 📧 Email Invoices — Optional email receipt/invoice delivery upon verified payment completion.
  • 🔄 Custom Redirect Flow — Easily redirect customers to named routes or external URLs after payment.

Requirements

Installation

1. Install via Composer

composer require nafiswatsiq/subbase-payment

2. Publish Configuration & Migrations

php artisan vendor:publish --tag=subbase-payment-config
php artisan vendor:publish --tag=subbase-payment-migrations

3. Interactive Gateway Installer

Run the interactive installer to configure your driver:

php artisan subbase-payment:install

Or pass the driver explicitly:

php artisan subbase-payment:install --driver=paypal

Available Drivers for --driver:

  • paypal — PayPal REST API Gateway
  • stripe — Stripe Checkout Sessions Gateway
  • midtrans — Midtrans Snap Gateway (Indonesia)
  • xendit — Xendit Invoice Gateway (SE Asia)
  • custom — Custom/Manual Gateway Driver

CI / Non-interactive setup:

php artisan subbase-payment:install --driver=paypal --no-interaction

The install command updates your .env file with SUBBASE_PAYMENT_DRIVER and the corresponding provider credentials.

4. Run Migrations

php artisan migrate

Reset / Switch Driver

Reset current driver configuration and clear driver env keys:

php artisan subbase-payment:reset

Reset and immediately switch to another driver:

php artisan subbase-payment:reset --driver=stripe --force

Public Checkout

Auto-links from Subbase <x-subbase::plan-list /> component:

/checkout/{plan-slug}

Route name: subbase-payment.checkout
Customize path/middleware/redirects in config/subbase-payment.php:

'checkout' => [
    'path' => 'checkout',
    'middleware' => ['web'],
    'return_url' => null,  // named route or full URL after successful payment
    'cancel_url' => null,  // named route or full URL after canceled payment
],

Page shows plan features, locale-aware price, collects name/email before payment.

Custom Redirect After Payment

Set return_url / cancel_url to override the default status page:

Value Behavior
null (default) Show built-in status page (status.blade.php)
Named route (e.g. dashboard) redirect()->route('dashboard', $plan->slug)
Full URL (e.g. https://app.example/success) redirect()->away('https://app.example/success')

Example — redirect to dashboard after payment:

'checkout' => [
    'return_url' => 'dashboard',
    'cancel_url' => 'plans.index',
],

Example — external URLs:

'checkout' => [
    'return_url' => 'https://app.example.com/payment/success',
    'cancel_url' => 'https://app.example.com/payment/cancel',
],

Events & Subscription Lifecycle

Webhook verifies payment → dispatches PaymentReceived event.

Handle in your app (e.g. AppServiceProvider):

use Nafiswatsiq\SubbasePayment\Events\PaymentReceived;
use Nafiswatsiq\Subbase\Models\Plan;
use Illuminate\Support\Facades\Event;

Event::listen(PaymentReceived::class, function (PaymentReceived $event) {
    $payment = $event->paymentRecord;
    $planId  = $event->metadata['plan_id'] ?? null;

    $user = \App\Models\User::where('email', $payment->customer_email)->first();
    $plan = Plan::find($planId);

    if ($user && $plan) {
        $user->newSubscription('default', $plan);
    }
});

Payment Driver & Documentation

Payment Payment Driver Driver Option Guide
PayPal PayPal paypal PayPal Setup Guide
Stripe Stripe stripe Stripe Setup Guide
Midtrans Midtrans midtrans Midtrans Setup Guide
Xendit Xendit xendit Xendit Setup Guide
⚙️ Custom custom Custom Gateway Guide

Configuration

Published config/subbase-payment.php:

Key Default Description
driver null Selected gateway (paypal, stripe, midtrans, etc.)
checkout.path checkout Public checkout URL prefix
checkout.middleware ['web'] Middleware on checkout routes
checkout.return_url null Named route or full URL after successful payment
checkout.cancel_url null Named route or full URL after canceled payment
mail.send_invoice false Send email invoice to buyer on verified payment
webhook.path subbase-payment/webhook Webhook endpoint path
webhook.middleware [] Middleware on webhook (keep empty for PayPal)
gateways [] Per-gateway config (see driver guides)

Email Invoices

Optional email invoice sending to customer upon verified payment. Disabled by default.

Enable via .env

Add to your .env file:

SUBBASE_PAYMENT_SEND_INVOICE=true

Enable via Configuration

Or update config/subbase-payment.php:

'mail' => [
    'send_invoice' => true,
],

The email view can be published and customized using:

php artisan vendor:publish --tag=subbase-payment-views

Look for resources/views/vendor/subbase-payment/mail/invoice.blade.php.

Publishing Assets & Views

Publish configuration file:

php artisan vendor:publish --tag=subbase-payment-config

Publish Blade views (checkout.blade.php, status.blade.php to resources/views/vendor/subbase-payment):

php artisan vendor:publish --tag=subbase-payment-views

Development

composer install
composer validate --strict
composer test

Support

License

The MIT License (MIT). Please see License File for more information.