1. Go to this page and download the library: Download tamfuldev/payment-gateway 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/ */
tamfuldev / payment-gateway example snippets
Payment::gateway('vnpay')->charge($request);
use Tamfuldev\Payment\Facades\Payment;
use Tamfuldev\Payment\Data\ChargeRequest;
use Tamfuldev\Payment\Enums\Currency;
use Tamfuldev\Payment\ValueObjects\Money;
$response = Payment::gateway('vnpay')->charge(new ChargeRequest(
orderId: 'ORDER-123',
amount: Money::ofMajor('100000', Currency::VND), // 100,000 VND
description: 'Order #123',
returnUrl: route('checkout.return'),
ipAddress: request()->ip(),
));
// For redirect-based gateways (VNPay, OnePay, ...):
return redirect()->away($response->redirectUrl);
use Illuminate\Support\Facades\Event;
use Tamfuldev\Payment\Events\PaymentCompleted;
Event::listen(PaymentCompleted::class, function (PaymentCompleted $event): void {
$payload = $event->payload; // Tamfuldev\Payment\Data\WebhookPayload
// IMPORTANT — do this in your listener:
// 1. Be idempotent: the same webhook may arrive more than once
// (key off $payload->gatewayReference / $payload->orderId).
// 2. Reconcile server-side: verify $payload->amount matches your stored order
// BEFORE marking it paid. Never trust the amount/status blindly.
});