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')
])
];
}