PHP code example of cafali-com / laravel-openpay

1. Go to this page and download the library: Download cafali-com/laravel-openpay 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/ */

    

cafali-com / laravel-openpay example snippets


use CafaliCom\LaravelOpenpay\Facades\Openpay;

Openpay::charges()->createCardCharge([...]);
Openpay::customers()->create([...]);
Openpay::isSandbox(); // true
Openpay::getPublicKey(); // for Openpay.js tokenization

use CafaliCom\LaravelOpenpay\Facades\Openpay;

// Merchant-level charge (one-time, no saved customer)
$charge = Openpay::charges()->createCardCharge([
    'source_id' => 'tok_xxx', // Token from Openpay.js
    'amount' => 150.00,
    'description' => 'Order #1234',
    'device_session_id' => 'session_xxx',
    'customer' => [
        'name' => 'Juan',
        'last_name' => 'Perez',
        'email' => '[email protected]',
    ],
]);

// Customer-level charge (saved customer)
$charge = Openpay::charges()->createCustomerCardCharge('cust_xxx', [
    'source_id' => 'tok_xxx',
    'amount' => 150.00,
    'description' => 'Order #1234',
    'device_session_id' => 'session_xxx',
]);

$charge = Openpay::charges()->createStoreCharge([
    'amount' => 500.00,
    'description' => 'Order #5678',
    'due_date' => '2026-04-15T00:00:00',
]);

// Customer receives a barcode reference number
$reference = $charge->payment_method->reference;
$barcodeUrl = $charge->payment_method->barcode_url;

$charge = Openpay::charges()->createBankCharge([
    'amount' => 2000.00,
    'description' => 'Invoice #9012',
    'due_date' => '2026-04-15T00:00:00',
]);

// Customer receives a CLABE number for SPEI transfer
$clabe = $charge->payment_method->clabe;
$bankName = $charge->payment_method->name;

// Create
$customer = Openpay::customers()->create([
    'name' => 'Maria',
    'last_name' => 'Garcia',
    'email' => '[email protected]',
    'phone_number' => '5551234567',
]);

// Find, Update, Delete
$customer = Openpay::customers()->find('cust_xxx');
$customer = Openpay::customers()->update('cust_xxx', ['name' => 'Maria Elena']);
Openpay::customers()->delete('cust_xxx');

// List with filters
$customers = Openpay::customers()->list(['limit' => 10]);

// Add card to customer (using token from Openpay.js)
$card = Openpay::cards()->createForCustomer('cust_xxx', [
    'token_id' => 'tok_xxx',
    'device_session_id' => 'session_xxx',
]);

// List and delete
$cards = Openpay::cards()->listForCustomer('cust_xxx');
Openpay::cards()->deleteForCustomer('cust_xxx', 'card_xxx');

// Create a plan
$plan = Openpay::plans()->create([
    'amount' => 299.00,
    'name' => 'Plan Premium',
    'repeat_unit' => 'month',
    'repeat_every' => 1,
    'retry_times' => 3,
    'status_after_retry' => 'cancelled',
]);

// Subscribe a customer
$subscription = Openpay::subscriptions()->create('cust_xxx', [
    'plan_id' => $plan->id,
    'card_id' => 'card_xxx',
]);

// Cancel
Openpay::subscriptions()->cancel('cust_xxx', $subscription->id);

// Payout to bank account
$payout = Openpay::payouts()->create([
    'amount' => 5000.00,
    'description' => 'Vendor payment',
    'method' => 'bank_account',
    'bank_account' => [
        'clabe' => '012345678901234567',
        'holder_name' => 'Proveedor SA',
    ],
]);

// Full refund
$charge = Openpay::charges()->refund('trx_xxx');

// Partial refund
$charge = Openpay::charges()->refund('trx_xxx', [
    'amount' => 50.00,
    'description' => 'Partial refund',
]);

use CafaliCom\LaravelOpenpay\Traits\Billable;

class User extends Authenticatable
{
    use Billable;
}

Schema::table('users', function (Blueprint $table) {
    $table->string('openpay_id')->nullable()->index();
});

$user = User::find(1);

// Create as OpenPay customer (idempotent)
$customer = $user->createAsOpenpayCustomer();

// Charge their card
$charge = $user->charge([
    'source_id' => 'tok_xxx',
    'amount' => 150.00,
    'description' => 'Order #1234',
    'device_session_id' => 'session_xxx',
]);

// Paynet cash charge
$charge = $user->chargeAtStore([
    'amount' => 500.00,
    'description' => 'Order #5678',
]);

// SPEI bank transfer
$charge = $user->chargeViaSpei([
    'amount' => 2000.00,
    'description' => 'Invoice #9012',
]);

// Subscribe to a plan
$subscription = $user->subscribe([
    'plan_id' => 'plan_xxx',
    'card_id' => 'card_xxx',
]);

// Manage cards
$card = $user->addCard(['token_id' => 'tok_xxx', 'device_session_id' => 'ses_xxx']);
$cards = $user->cards();
$user->deleteCard('card_xxx');

use CafaliCom\LaravelOpenpay\Events\ChargeCompleted;

Event::listen(ChargeCompleted::class, function ($event) {
    $chargeId = $event->charge['id'];
    $amount = $event->charge['amount'];

    // Update your order status, send confirmation, etc.
});

use CafaliCom\LaravelOpenpay\Events\VerificationReceived;

Event::listen(VerificationReceived::class, function ($event) {
    // Notify the merchant via email, Slack, in-app banner, etc.
    Mail::to('[email protected]')->send(
        new OpenpayVerificationMail($event->verificationCode, $event->webhookId)
    );
});

$openpay = app(\CafaliCom\LaravelOpenpay\Openpay::class);

$webhook = $openpay->getClient()->webhooks->add([
    'url' => url('/openpay/webhooks'),
    'event_types' => [
        'charge.completed',
        'charge.failed',
        'charge.refunded',
        'payout.completed',
        'payout.failed',
        'spei.received',
    ],
]);
bash
php artisan vendor:publish --tag="laravel-openpay-config"
bash
# Publish + run the migration
php artisan vendor:publish --provider="CafaliCom\\LaravelOpenpay\\OpenpayServiceProvider"
php artisan migrate