PHP code example of laragear / transbank

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

    

laragear / transbank example snippets


use Laragear\Transbank\Facades\Webpay;
use Laragear\Transbank\Http\Requests\WebpayRequest;

public function pay(Request $request)
{
    return Webpay::create('pink teddy bear', 1990, url('confirm'));
}

public function confirm(WebpayRequest $payment)
{
    if ($payment->isSuccessful()) {
        return 'Your pink teddy bear is on the way!';
    };
}

use Illuminate\Support\Str;
use Laragear\Transbank\Facades\Webpay;

public function pay()
{
    $order = Str::ulid();

    return Webpay::create($order, 1990, route('confirm'));
}

use Laragear\Transbank\Http\Requests\WebpayRequest;

public function confirm(WebpayRequest $request)
{
    if ($request->isSuccessful()) {
        $order = $request->buyOrder();
    
        return "Your payment was successful! Follow your order as #$order.";
    };
    
    return 'Your payment failed. Try again!'
}

use Laragear\Transbank\Http\Requests\WebpayRequest;
use App\Models\Checkout;
use App\Events\CheckoutPaid;

public function confirm(WebpayRequest $request)
{
    if ($request->isSuccessful()) {
        // Assume the transaction was successful, consolidate the checkout.
        CheckoutPaid::dispatch($request->buyOrder(), $request->transaction())
        
        // ...
    };
    
    // Assume the transaction failed.
    Checkout::whereKey($request->buyOrder())->update([
        'failed_at' => now()
    ]);
    
    // ...
}

use Illuminate\Foundation\Application;
use Laragear\Transbank\Http\Requests\WebpayRequest;

return Application::configure(basePath: dirname(__DIR__))
    ->booted(function (): void {
        WebpayRequest::$validate = '/payment/path';
    })->create();

use Illuminate\Routing\Redirector;
use Laragear\Transbank\Http\Requests\WebpayRequest;

WebpayRequest::$validate = function (Redirector $redirect) {
    return $redirect->route('payments.webpay')
};

use Illuminate\Support\Facades\Route;

Route::get('confirm', function (WebpayRequest $request) {
    // ...
})->middleware('transbank.handle')

use Illuminate\Support\Facades\Route;
use Laragear\Transbank\Http\Requests\WebpayRequest;
use Laragear\Transbank\Facades\RouteRedirect;

Route::get('confirm', function (WebpayRequest $request) {
    // ...
})->middleware('transbank.protect');

RouteRedirect::as('confirm');

use Illuminate\Support\Facades\Route;
use Laragear\Transbank\Http\Requests\WebpayRequest;
use Laragear\Transbank\Facades\RouteRedirect;

Route::get('confirm', function (WebpayRequest $request) {
    // ... Handle the successful transaction.
})->middleware('transbank.protect');

Route::get('failed-transaction', function () {
    // ... Handle the failed transaction.
})->middleware('transbank.protect');

RouteRedirect::as('confirm', 'failed-transaction');

use App\Models\Checkout;
use Illuminate\Contracts\View\View;
use Laragear\Transbank\Livewire\InteractsWithWebpay;
use Laragear\Transbank\Services\Transactions\Transaction;
use Livewire\Component;

class Payment extends Component
{
    use InteractsWithWebpay;
    
    protected function handleSuccessfulTransaction(Transaction $transaction) : void
    {
        $checkout = Checkout::find($transaction->session_id);
        
        $checkout->markAsPaid();
    }
    
    public function render(): View 
    {
        return view('cart.payment.status');
    }
} 

use App\Models\Checkout;
use Illuminate\Contracts\View\View;
use Laragear\Transbank\Livewire\InteractsWithOneclick;
use Laragear\Transbank\Services\Transactions\Transaction;
use Livewire\Component;

class Subscription extends Component
{
    use InteractsWithOneclick;
    
    protected function handleSuccessfulTransaction(Transaction $transaction) : void
    {
        auth()->user()->card()->updateOrCreate([
            'transbank_user' => $transaction->get('tbk_user') 
            'card_type' => $transaction->get('card_type'),
            'card_number' => $transaction->getCreditCardNumber(), 
        ]);
    }
    
    public function render(): View 
    {
        return view('cart.subscription.status');
    }
} 

use Laragear\Transbank\Exceptions\ClientException;
use Throwable;

public $title = '';
public $message = '';

protected function handleWebpayException(Throwable $exception)
{
    if ($exception instanceof ClientException) {
        $this->isSuccessful = false;
    } else {
        report($exception);
        
        $this->title = 'Transbank is unresponsive';
        $this->message = 'We will look into it as soon as possible.';
    }
}

use App\Models\Checkout;
use Laragear\Transbank\Services\Transactions\Transaction;

public ?Checkout $checkout = null;

protected function afterTransactionReceived(Transaction $transaction): void
{
    if ($order = $transaction->get('buy_order')) {
        $this->checkout = Checkout::find($order)    
    }
}

use Filament\Notifications\Notification;
use Laragear\Transbank\Services\Transactions\Transaction;

public ?Checkout $checkout = null;

public function handleTransactionStatus(Transaction $transaction): bool
{
    return $transaction->isSuccessful()
        && $transaction->get('amount') === $this->chekout?->amount
}

protected function handleSuccessfulTransaction(Transaction $transaction) : void
{
    // Since the transaction was successful, the checkout exists.
    $this->checkout->markAsPaid();
    
    Notification::make('paid')
        ->title('Payment successful!')
        ->body('We will prepare your purchase as soon as possible.')
        ->send();
}

use App\Models\Checkout;
use Filament\Schemas\Schema;
use Illuminate\Support\Number;
use Laragear\Transbank\Filament\OneclickAction;use Laragear\Transbank\Filament\WebpayAction;

public ?Checkout $checkout = null;

public function mount()
{
    $this->chekout = Checkout::find(session('current_checkout_id'));
}

protected function getFormActions(): array
{
    return [
        ...parent::getFormActions(),
        WebpayAction::make('pay')
            ->label("Pay " . Number::currency($this->checkout->amount))
            ->data([
                'buyOrder' => $this->checkout->asUlid(),            
                'amount' => $this->checkout->total(),            
                'returnUrl' => action('App\Filament\Checkout\Pages\Checkout'),            
            ]),
        OneclickAction::make('register')
            ->label('Pay automatically')
            ->data([
                'username' => auth()->user()->name,
                'email' => auth()->user()->email,
                'returnUrl' => action('App\Filament\Checkout\Pages\Register')
            ])
    ];
}



return [
    'environment' => env('TRANSBANK_ENV'),
    'http' => [
        'timeout' => 10,
        'retries' => 3,
        'options' => [
            'synchronous' => true
        ]
    ],
    'credentials' => [
        // ...
    ],
    'protect' => [
        'enabled' => false,
        'store' => env('TRANSBANK_PROTECT_CACHE'),
        'prefix' => 'transbank|token',
    ],
]

return [
    'environment' => env('TRANSBANK_ENV'),
]

return [
    'http' => [
        'timeout' => 10,
        'retries' => 3,
        'options' => [
            'synchronous' => true
        ]
    ],
]

return [
    'credentials' => [
        // ...
    ],
]

return [
    'protect' => [
        'enabled' => false,
        'store' => env('TRANSBANK_PROTECT_CACHE'),
        'prefix' => 'transbank|token',
    ],
]
shell
php artisan vendor:publish --provider="Laragear\Transbank\TransbankServiceProvider" --tag="config"