oxydaid / tokopay
Laravel Tokopay Payment Gateway Integration
1.1.0
2025-09-22 02:36 UTC
Requires
- php: ^8.0
- illuminate/support: ^9.0|^10.0|^11.0
Requires (Dev)
- phpunit/phpunit: ^10.0
README
Integrasi tidak resmi (unofficial) Payment Gateway Tokopay untuk Laravel.
Menyediakan service sederhana untuk membuat transaksi, mengecek status order, generate signature, validasi webhook, dan tersedia Facade agar lebih mudah digunakan.
✨ Fitur
- 🔑 Generate signature otomatis
- 🛡️ Validasi signature untuk webhook Tokopay
- 💳 Create transaction (POST
/v1/order/
) - 🔍 Check order status (GET
/v1/order
) - ⚡ Ringan, tanpa dependensi tambahan
- 🛠️ Mendukung Laravel Facade (
Tokopay::
)
📦 Instalasi
Anda dapat menginstal paket ini melalui Composer:
composer require oxydaid/tokopay
⚙️ Konfigurasi
Publikasikan file konfigurasi:
php artisan vendor:publish --tag=config --provider="Oxydaid\\Tokopay\\TokopayServiceProvider"
Atur kredensial Tokopay Anda di file .env
:
TOKOPAY_MERCHANT_ID=your_merchant_id TOKOPAY_SECRET_KEY=your_secret_key TOKOPAY_BASE_URL=https://api.tokopay.id
🚀 Penggunaan
1. Membuat Transaksi
use Tokopay; $refId = 'INV12345'; $signature = Tokopay::generateSignature($refId); $data = [ 'merchant_id' => config('tokopay.merchant_id'), 'kode_channel' => 'QRIS', 'reff_id' => $refId, 'amount' => 160000, 'customer_name' => "Joko Susilo", 'customer_email' => "joko.susilo98@gmail.com", 'customer_phone' => "082277665544", 'redirect_url' => route('payment.success'), 'expired_ts' => 0, 'signature' => $signature, ]; $response = Tokopay::createTransaction($data);
2. Cek Status Order
$response = Tokopay::checkOrderStatus( config('tokopay.merchant_id'), config('tokopay.secret_key'), 'INV12345', 160000, 'QRIS' );
3. Webhook Signature Validation
use Illuminate\Http\Request; use Tokopay; public function handleWebhook(Request $request) { if (! Tokopay::validateSignature($request->reff_id, $request->signature)) { return response()->json(['status' => false, 'message' => 'Invalid signature'], 400); } // Signature valid → update status transaksi sesuai $request->input('status') return response()->json(['status' => true]); }
Webhook harus merespons JSON berikut agar dianggap sukses:
{ "status": true }