PHP SDK for Pakasir Payment Link. Easily integrate QRIS, Virtual Account, and PayPal payments into your PHP applications.
composer require itsazni/pakasir-sdk-php- PHP 7.4+
- GuzzleHTTP 7.0+
<?php
require 'vendor/autoload.php';
use ItsAzni\Pakasir\Pakasir;
use ItsAzni\Pakasir\PaymentMethod;
// Initialize SDK
$pakasir = new Pakasir(
slug: 'your-project-slug',
apiKey: 'your-api-key'
);
// Create a QRIS payment
$payment = $pakasir->createPayment(
method: PaymentMethod::QRIS,
orderId: 'INV-2026-001',
amount: 100000
);
echo "Payment Number: " . $payment->payment_number;
echo "Total: Rp" . number_format($payment->total_payment);
echo "Expires: " . $payment->expired_at;use ItsAzni\Pakasir\PaymentMethod;
// Using enum
$payment = $pakasir->createPayment(PaymentMethod::QRIS, 'ORDER-001', 50000);
// Using string
$payment = $pakasir->createPayment('bni_va', 'ORDER-002', 100000);
// With redirect URL
$payment = $pakasir->createPayment(
method: PaymentMethod::QRIS,
orderId: 'ORDER-003',
amount: 75000,
redirect: 'https://yoursite.com/payment/success'
);$detail = $pakasir->detailPayment('ORDER-001', 50000);
if ($detail->isCompleted()) {
echo "Payment completed at: " . $detail->completed_at;
} elseif ($detail->isPending()) {
echo "Waiting for payment...";
} elseif ($detail->isCanceled()) {
echo "Payment was canceled";
}// Standard payment page URL
$paymentUrl = $pakasir->getPaymentUrl('ORDER-001', 50000);
// With redirect after payment
$paymentUrl = $pakasir->getPaymentUrl('ORDER-001', 50000, 'https://yoursite.com/success');
// QRIS only mode
$paymentUrl = $pakasir->getPaymentUrl('ORDER-001', 50000, null, true);
// Direct PayPal URL
$paypalUrl = $pakasir->getPaypalUrl('ORDER-001', 50000);| Method | Enum | String |
|---|---|---|
| QRIS | PaymentMethod::QRIS |
'qris' |
| BNI Virtual Account | PaymentMethod::BNI_VA |
'bni_va' |
| BRI Virtual Account | PaymentMethod::BRI_VA |
'bri_va' |
| CIMB Niaga Virtual Account | PaymentMethod::CIMB_NIAGA_VA |
'cimb_niaga_va' |
| Sampoerna Virtual Account | PaymentMethod::SAMPOERNA_VA |
'sampoerna_va' |
| BNC Virtual Account | PaymentMethod::BNC_VA |
'bnc_va' |
| Maybank Virtual Account | PaymentMethod::MAYBANK_VA |
'maybank_va' |
| Permata Virtual Account | PaymentMethod::PERMATA_VA |
'permata_va' |
| ATM Bersama Virtual Account | PaymentMethod::ATM_BERSAMA_VA |
'atm_bersama_va' |
| Artha Graha Virtual Account | PaymentMethod::ARTHA_GRAHA_VA |
'artha_graha_va' |
| PayPal | PaymentMethod::PAYPAL |
'paypal' |
$payment->project; // Project slug
$payment->order_id; // Your order ID
$payment->amount; // Transaction amount
$payment->fee; // Transaction fee
$payment->total_payment; // Total amount including fee
$payment->status; // 'pending', 'completed', or 'canceled'
$payment->payment_method; // Payment method used
$payment->payment_number; // VA number or QRIS string
$payment->payment_url; // Payment page URL
$payment->redirect_url; // Redirect URL after payment
$payment->expired_at; // Payment expiration timestamp
$payment->completed_at; // Payment completion timestampPakasir sends a POST request to your webhook URL when a payment is completed.
use ItsAzni\Pakasir\WebhookHandler;
$webhook = new WebhookHandler();
// Get raw POST body
$body = file_get_contents('php://input');
$payment = $webhook->handle($body);
if ($payment->isCompleted()) {
// Process the order
processOrder($payment->order_id, $payment->amount);
}
http_response_code(200);
echo 'OK';use ItsAzni\Pakasir\Pakasir;
use ItsAzni\Pakasir\WebhookHandler;
$pakasir = new Pakasir('your-slug', 'your-api-key');
$webhook = new WebhookHandler($pakasir);
$body = file_get_contents('php://input');
$payment = $webhook->handleAndVerify($body); // Returns PaymentPayload
if ($payment->isCompleted()) {
processOrder($payment->order_id, $payment->amount);
}$payment->amount; // Transaction amount
$payment->order_id; // Order ID
$payment->project; // Project slug
$payment->status; // 'completed'
$payment->payment_method; // 'qris', 'bni_va', etc.
$payment->completed_at; // Completion timestamp
// Helper methods
$payment->isCompleted(); // true if status is 'completed'
$payment->isPending(); // true if status is 'pending'
$payment->isCanceled(); // true if status is 'canceled'use ItsAzni\Pakasir\Exceptions\PakasirException;
try {
$payment = $pakasir->createPayment(PaymentMethod::QRIS, 'ORDER-001', 50000);
} catch (PakasirException $e) {
echo "Error: " . $e->getMessage();
}MIT License