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