fadhila36/pakasir-sdk
Laravel SDK type-safe untuk integrasi Pakasir Payment Gateway: QRIS, Virtual Account multi-bank, dan PayPal. Dilengkapi kalkulasi fee otomatis, timeout/retry, logging, Events, Notifications, serta verifikasi webhook anti-spoofing.
Sebuah SDK Laravel modern, modular, dan type-safe untuk mengintegrasikan layanan gerbang pembayaran (payment gateway) Pakasir ke aplikasi Anda.
SDK ini mendukung QRIS, Virtual Account multi-bank (BNI, BRI, CIMB, Permata, dll), serta PayPal dengan kalkulasi biaya (fee) otomatis, timeout/retry otomatis, logging, Laravel Events, dan sistem verifikasi Webhook terproteksi.
declare(strict_types=1)).verifyWebhook() secara otomatis memverifikasi payload dan melakukan double-check query langsung ke server Pakasir.TransactionCreated, PaymentCompleted, TransactionCanceled, dan WebhookReceived secara instan.Pastikan server Anda menggunakan PHP 8.3+ dan aplikasi Anda berbasis Laravel 11.0 s/d 13.0+.
Jalankan perintah Composer berikut untuk menginstal:
composer require fadhila36/pakasir-sdk
php artisan vendor:publish --provider="Fadhila36\Pakasir\PakasirServiceProvider" --tag="config"
.env:PAKASIR_PROJECT=slug-proyek-anda
PAKASIR_API_KEY=api-key-rahasia-anda
PAKASIR_TIMEOUT=30
PAKASIR_RETRY_ATTEMPTS=3
PAKASIR_LOGGING_ENABLED=true
Gunakan PaymentMethod Enum untuk kenyamanan autocompletion dan validasi otomatis:
use Fadhila36\Pakasir\Enums\PaymentMethod;
use Fadhila36\Pakasir\Facades\Pakasir;
// Membuat transaksi QRIS secara instan
$transaction = Pakasir::createPayment(
paymentMethod: PaymentMethod::QRIS,
orderId: 'INV-' . time(),
amount: 50000,
redirectUrl: 'https://websitekamu.com/invoice/complete' // Opsional
);
// Respon berupa DTO yang type-safe & IDE Friendly
echo $transaction->paymentUrl; // Tautan ke pembayaran
echo $transaction->paymentNumber; // Kode QRIS atau nomor VA
echo $transaction->totalPayment; // Nominal + Fee
Untuk menghindari eksploitasi webhook palsu, gunakan fitur verifyWebhook() yang akan memvalidasi data dan memverifikasi langsung ke server resmi Pakasir:
use Fadhila36\Pakasir\Facades\Pakasir;
use Fadhila36\Pakasir\Exceptions\WebhookValidationException;
public function handleWebhook(Request $request)
{
try {
// Ambil nominal tagihan asli dari database Anda
$expectedAmount = $order->amount;
// Verifikasi & Double-Check ke server Pakasir secara otomatis
$webhookData = Pakasir::verifyWebhook($request->all(), $expectedAmount);
// Jika lolos verifikasi, ubah status transaksi di DB Anda
$order->update([
'status' => $webhookData->status->value, // e.g., 'completed'
'completed_at' => $webhookData->completedAt,
]);
return response()->json(['status' => 'ok']);
} catch (WebhookValidationException $e) {
// Log & tolak jika webhook mencurigakan atau tidak valid
return response()->json(['message' => $e->getMessage()], 400);
}
}
PaymentMethod)SDK menyediakan Enum lengkap dengan kalkulasi biaya (fee) dan validasi nominal minimum terintegrasi:
| Method | Enum Case | Code | Estimasi Fee |
|---|---|---|---|
| All Methods | PaymentMethod::ALL |
all |
- |
| QRIS | PaymentMethod::QRIS |
qris |
0.7% - 1% |
| PayPal | PaymentMethod::PAYPAL |
paypal |
1% (min 3k) |
| BNI VA | PaymentMethod::BNI_VA |
bni_va |
Rp3.500 |
| BRI VA | PaymentMethod::BRI_VA |
bri_va |
Rp3.500 |
| CIMB Niaga VA | PaymentMethod::CIMB_NIAGA_VA |
cimb_niaga_va |
Rp3.500 |
| Maybank VA | PaymentMethod::MAYBANK_VA |
maybank_va |
Rp3.500 |
| Permata VA | PaymentMethod::PERMATA_VA |
permata_va |
Rp3.500 |
| BNC VA | PaymentMethod::BNC_VA |
bnc_va |
Rp3.500 |
| ATM Bersama VA | PaymentMethod::ATM_BERSAMA_VA |
atm_bersama_va |
Rp3.500 |
| Sampoerna VA | PaymentMethod::SAMPOERNA_VA |
sampoerna_va |
Rp2.000 |
| Artha Graha VA | PaymentMethod::ARTHA_GRAHA_VA |
artha_graha_va |
Rp2.000 |
createPayment()Membuat transaksi baru secara realtime di server Pakasir.
Pakasir::createPayment(
string|PaymentMethod $paymentMethod,
string $orderId,
int|float $amount,
?string $redirectUrl = null
): TransactionCreateResponse;
detailPayment()Mengambil status detail transaksi terkini dari server Pakasir.
Pakasir::detailPayment(string $orderId, int|float $amount): TransactionDetailResponse;
cancelPayment()Membatalkan tagihan transaksi yang sedang aktif/pending.
Pakasir::cancelPayment(string $orderId, int|float $amount): TransactionDetailResponse;
simulationPayment()Melakukan simulasi pembayaran sukses (khusus mode Sandbox/testing).
Pakasir::simulationPayment(string $orderId, int|float $amount): TransactionDetailResponse;
verifyWebhook()Memparse dan memvalidasi keabsahan data webhook masukan.
Pakasir::verifyWebhook(array $payload, int|float $expectedAmount): WebhookPayload;
Didistribusikan di bawah lisensi MIT License. Lihat dokumen LICENSE untuk informasi lebih lanjut.
How can I help you explore Laravel packages today?