PHP code example of initafricahq / cashier-paystack

1. Go to this page and download the library: Download initafricahq/cashier-paystack 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/ */

    

initafricahq / cashier-paystack example snippets




return [
    /**
     * Public Key From Paystack Dashboard
     *
     */
    'public_key' => env('PAYSTACK_PUBLIC_KEY'),

    /**
     * Secret Key From Paystack Dashboard
     *
     */
    'secret_key' => env('PAYSTACK_SECRET_KEY'),

    /**
     * Paystack Payment URL
     *
     */
    'path' => env('PAYSTACK_PATH'),

    /**
     * Optional email address of the merchant
     *
     */
    'merchant_email' => env('MERCHANT_EMAIL'),

    /**
     * User model for customers
     *
     */
    'model' => env('PAYSTACK_MODEL'),

];

use InitAfricaHQ\Cashier\Billable;

class User extends Authenticatable
{
    use Billable;
}

use InitAfricaHQ\Cashier\Cashier;

Cashier::useCurrency('ngn', '₦');
Cashier::useCurrency('ghs', 'GH₵');

$user = User::find(1);
$plan_name = // Paystack plan name e.g default, main, yakata
$plan_code = // Paystack plan code  e.g PLN_gx2wn530m0i3w3m
$auth_token = // Paystack card auth token for customer
// Accepts an card authorization authtoken for the customer
$user->newSubscription($plan_name, $plan_code)->create($auth_token);
// The customer's most recent authorization would be used to charge subscription
$user->newSubscription($plan_name, $plan_code)->create(); 
// Initialize a new charge for a subscription
$user->newSubscription($plan_name, $plan_code)->charge(); 


$user->newSubscription('default', 'PLN_cgumntiwkkda3cw')->create($auth_token, [
    ',etadata' => json_encode(['pass_through' => 'customer data']),
]);

// Paystack plan name e.g default, main, yakata
if ($user->subscribed('default')) {
    //
}

public function handle($request, Closure $next)
{
    if ($request->user() && ! $request->user()->subscribed('default')) {
        // This user is not a paying customer...
        return redirect('billing');
    }

    return $next($request);
}

if ($user->subscription('default')->onTrial()) {
    //
}

$plan_name = // Paystack plan name e.g default, main, yakata
$plan_code = // Paystack Paystack Code  e.g PLN_gx2wn530m0i3w3m
if ($user->subscribedToPlan($plan_code, $plan_code)) {
    //
}

if ($user->subscription('default')->cancelled()) {
    //
}

if ($user->subscription('default')->onGracePeriod()) {
    //
}

$user->subscription('default')->cancel();

if ($user->subscription('default')->onGracePeriod()) {
    //
}

$user->subscription('default')->cancelNow();

$user->subscription('default')->resume();

$user = User::find(1);

$user->newSubscription('default', 'PLN_gx2wn530m0i3w3m')
    ->trialDays(10)
    ->create($auth_token);

if ($user->onTrial('default')) {
    //
}

if ($user->subscription('default')->onTrial()) {
    //
}

$user = Customer::create([
    // Populate other user properties...
    'billable_id' => $user->getKey(),
    'billable_type' => $user->getMorphClass(),
    'trial_ends_at' => now()->addDays(10),
]);

if ($user->onTrial()) {
    // User is within their trial period...
}

if ($user->onGenericTrial()) {
    // User is within their "generic" trial period...
}

$user = User::find(1);
$plan_code = // Paystack Paystack Code  e.g PLN_gx2wn530m0i3w3m
// With Paystack card auth token for customer
$user->newSubscription('default', $plan_code)->create($auth_token);
$user->newSubscription('default', $plan_code)->create();

$user->createAsCustomer();

$cards = $user->cards();

foreach ($user->cards() as $card) {
    $card->delete();
}

$user->deleteCards();

Route::post(
    'paystack/webhook',
    '\InitAfricaHQ\Cashier\Http\Controllers\WebhookController'
);

protected $except = [
    'paystack/*',
];



namespace App\Http\Controllers;

use InitAfricaHQ\Cashier\Http\Controllers\WebhookController as CashierController;

class WebhookController extends CashierController
{
    /**
     * Handle invoice payment succeeded.
     *
     * @param  array  $payload
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function handleInvoiceUpdate($payload)
    {
        // Handle The Event
    }
}

Route::post(
    'paystack/webhook',
    '\App\Http\Controllers\WebhookController'
);

// Paystack Accepts Charges In Kobo for Naira...
$PaystackCharge = $user->charge(10000);

$user->charge(100, [
    'more_option' => $value,
]);

try {
    // Paystack Accepts Charges In Kobo for Naira...
    $response = $user->charge(10000);
} catch (Exception $e) {
    //
}

// Paystack Accepts Charges In Kobo for Naira...
$user->invoiceFor('One Time Fee', 200000);

$user->invoiceFor('Stickers', 50000, [
    'line_items' => [ ],
    'tax' => [{"name":"VAT", "amount":2000}]
]);

$paystackCharge = $user->charge(100);

$user->refund($paystackCharge->reference);

$invoices = $user->invoices();

// Include only pending invoices in the results...
$invoices = $user->invoicesOnlyPending();

// Include only paid invoices in the results...
$invoices = $user->invoicesOnlyPaid();

use Illuminate\Http\Request;

Route::get('user/invoice/{invoice}', function (Request $request, $invoiceId) {
    return $request->user()->downloadInvoice($invoiceId, [
        'vendor'  => 'Your Company',
        'product' => 'Your Product',
    ]);
});
shell
php artisan vendor:publish --provider="InitAfricaHQ\Cashier\CashierServiceProvider"
html
<table>
    @foreach ($invoices as $invoice)
        <tr>
            <td>{{ $invoice->date()->toFormattedDateString() }}</td>
            <td>{{ $invoice->total() }}</td>
            <td><a href="/user/invoice/{{ $invoice->id }}">Download</a></td>
        </tr>
    @endforeach
</table>