Skip to content

ItsAzni/pakasir-sdk-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pakasir SDK PHP

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

About

Unofficial PHP SDK for Pakasir Payment Link

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages