Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

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

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages