Dokumentasi API
Panduan lengkap integrasi Sekalipay Payment Gateway ke dalam aplikasi bisnis Anda. Aman, cepat, dan mudah diimplementasikan.
Getting Started
Pengantar Otentikasi Base URLEndpoints
Merchant Info Buat Pembayaran Cek Status Metode Pembayaran Request PenarikanPengantar
API Sekalipay memungkinkan Anda untuk menerima pembayaran secara otomatis dan real-time. API kami dirancang dengan prinsip RESTful, menggunakan respons JSON standar, dan kode status HTTP konvensional.
Catatan: Semua request ke API harus menggunakan protokol HTTPS. Request HTTP biasa akan ditolak untuk keamanan data transaksi Anda.
Otentikasi & Keamanan
Keamanan adalah prioritas utama kami. Sekalipay mendukung dua mode autentikasi: IP Whitelist (default, untuk server statis) dan Enhanced HMAC (untuk serverless seperti Cloudflare Workers, AWS Lambda).
key API Key
Digunakan untuk identifikasi merchant.
lock Secret Key
Digunakan untuk membuat signature request. Jangan pernah membagikan key ini!
Membuat Signature
Setiap request POST (seperti membuat pembayaran atau penarikan) memerlukan header
X-Signature.
Signature dibuat menggunakan HMAC-SHA256 dari body request JSON dengan Secret Key Anda.
// Payload body (JSON string)
$body = json_encode([
'merchant_ref_id' => 'TRX-123456',
'amount' => 100000,
'return_url' => 'https://merchant.test/checkout/success',
// ... other fields
]);
// Your Secret Key from Dashboard
$secretKey = 'sk_live_...';
// Generate Signature
$signature = hash_hmac('sha256', $body, $secretKey);
// Send Request
$response = Http::withHeaders([
'Content-Type' => 'application/json',
'X-Signature' => $signature
])->post('https://sekalipay.com/api/v1/gateway/payment', json_decode($body, true));
Base URL
/merchant/info
Mendapatkan informasi akun merchant Anda, termasuk saldo aktif dan status akun.
Auth: IP Whitelist only (No signature
required)
{
"status": 1,
"rc": 200,
"message": "Success",
"data": {
"merchant_code": "MCH-A1B2C3",
"nama_toko": "Toko Online Saya",
"saldo_tersedia": 1500000,
"saldo_tertahan": 250000,
"total_revenue": 15000000,
"status": "active",
"is_sandbox": false
},
"ts": 1703395200
}
/payment
Membuat transaksi pembayaran baru. Rate limit: 10 request/menit.
Requires Signature
Catatan integrasi: callback_url dipakai untuk webhook backend, sedangkan return_url dipakai untuk mengarahkan browser customer kembali ke website Anda setelah pembayaran sukses.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| merchant_ref_id | string | Yes | ID unik referensi dari sistem Anda (Max 50 char) |
| amount | integer | Yes | Nominal pembayaran (Min sesuai metode pembayaran) |
| payment_code | string | Yes | Kode metode pembayaran (e.g., 'QRIS', 'VA_BCA') |
| customer_name | string | Yes | Nama pelanggan |
| customer_email | string | Yes | Email pelanggan untuk notifikasi |
| customer_phone | string | Yes | Nomor HP pelanggan |
| callback_url | string | No | Override webhook callback URL untuk transaksi ini |
| return_url | string | No | Override URL redirect browser customer setelah pembayaran sukses |
| metadata | object | No | Metadata tambahan untuk kebutuhan internal merchant |
Flow redirect: Jika return_url dikirim pada request, hosted payment page akan memakainya. Jika tidak, sistem memakai Return URL default di dashboard merchant. Jika keduanya kosong, customer tetap di halaman invoice/hosted page internal Sekalipay.
{
"status": true,
"message": "OK",
"data": {
"merchant_ref_id": "TRX-123456",
"invoice": "INV/20231224/KWL/12345",
"amount": 100000,
"fee": 700,
"total": 100700,
"payment_code": "QRIS",
"payment_link": "https://sekalipay.com/payment/INV/20231224/KWL/12345",
"qr_link": "https://qr.sekalipay.com/example.png",
"virtual_account": null,
"checkout_url": null,
"payment_guide": null,
"expired_at": "2023-12-24T15:30:00.000000Z",
"status": "pending",
"is_sandbox": false
}
}
/payment/{merchant_ref_id}
Mengecek status pembayaran berdasarkan merchant_ref_id Anda. Rate limit: 30 request/menit.
{
"status": true,
"message": "OK",
"data": {
"merchant_ref_id": "TRX-123456",
"invoice": "INV/20231224/KWL/12345",
"status": "paid",
"amount": 100000,
"fee": 700,
"total": 100700,
"payment_code": "QRIS",
"payment_link": "https://sekalipay.com/payment/INV/20231224/KWL/12345",
"qr_link": "https://qr.sekalipay.com/example.png",
"virtual_account": null,
"checkout_url": null,
"payment_guide": null,
"expired_at": "2023-12-24T15:30:00.000000Z",
"created_at": "2023-12-24T15:00:00.000000Z",
"paid_at": "2023-12-24T15:05:12.000000Z"
}
}
/payment-methods
Mendapatkan daftar metode pembayaran yang aktif beserta informasi biaya dan limit.
{
"status": true,
"message": "OK",
"data": [
{
"payment_code": "QRIS",
"payment_name": "QRIS",
"payment_type": "qris",
"image": "https://sekalipay.com/images/payments/qris.png",
"min_amount": 1000,
"max_amount": 5000000,
"settlement_time": "H+0",
"fee_info": {
"type": "percent",
"description": "0.7%"
}
},
{
"payment_code": "BCAVA",
"payment_name": "BCA Virtual Account",
"payment_type": "va",
"image": "https://sekalipay.com/images/payments/bca.png",
"min_amount": 10000,
"max_amount": 50000000,
"settlement_time": "H+0",
"fee_info": {
"type": "flat",
"description": "Rp 4.000"
}
}
]
}
/withdrawal
Mengajukan penarikan dana ke rekening bank terdaftar. Rate limit: 5
request/menit.
Requires Signature
Syarat: Rekening bank harus sudah diverifikasi di dashboard. Min penarikan Rp 50.000. Biaya admin Rp 7.500.
{
"amount": 50000
}
{
"status": true,
"message": "Withdrawal request submitted successfully",
"data": {
"settlement_id": 123,
"settlement_number": "WD20260424001",
"net_amount": 50000,
"withdrawal_fee": 7500,
"gross_amount": 57500,
"total_deducted": 57500,
"status": "pending",
"requested_at": "2024-12-18 10:30:00",
"estimated_processed_at": "2024-12-19 10:30:00",
"bank_account": {
"bank_name": "BCA",
"account_number": "1234****7890",
"account_holder": "John Doe",
"verified_at": "2024-12-15 14:20:00"
},
"balance": {
"available": 442500,
"pending": 57500
},
"info": "You will receive Rp 50.000 (withdrawal fee Rp 7.500 has been deducted)"
}
}