itsazni / pakasir-sdk-php
PHP SDK for Pakasir Payment Link
dev-master
2026-01-18 03:59 UTC
Requires
- php: >=7.4
- guzzlehttp/guzzle: ^7.0
This package is auto-updated.
Last update: 2026-03-18 04:21:39 UTC
README
PHP SDK for Pakasir Payment Link. Easily integrate QRIS, Virtual Account, and PayPal payments into your PHP applications.
Installation
composer require itsazni/pakasir-sdk-php
Requirements
- PHP 7.4+
- GuzzleHTTP 7.0+
Quick Start
<?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;
Usage
Create Payment
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' );
Check Payment Status
$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"; }
Generate Payment URLs
// 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);
Payment Methods
| 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' |
PaymentPayload Response
$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 timestamp
Webhook Handling
Pakasir sends a POST request to your webhook URL when a payment is completed.
Handle Webhook
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';
Handle and Verify with API
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); }
WebhookPayload Response
$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'
Error Handling
use ItsAzni\Pakasir\Exceptions\PakasirException; try { $payment = $pakasir->createPayment(PaymentMethod::QRIS, 'ORDER-001', 50000); } catch (PakasirException $e) { echo "Error: " . $e->getMessage(); }
License
MIT License