Panduan lengkap untuk mengintegrasikan Sewa Pay payment gateway.
https://sewapay.idSemua request API memerlukan header berikut:
X-PG-API-Key — API key Anda (format: pg_...)X-PG-Signature — HMAC-SHA256 signatureX-PG-Timestamp — Unix timestamp (seconds)Signature dibuat dengan HMAC-SHA256 dari timestamp.body menggunakan secret key:
Untuk GET request, sign dengan body kosong: signature = HMAC("timestamp.")
const crypto = require('crypto');
const timestamp = Math.floor(Date.now() / 1000);
const body = JSON.stringify({ amount: 50000, method: "QRIS", reference: "ORDER-001" });
const signature = crypto.createHmac('sha256', SECRET_KEY).update(`${timestamp}.${body}`).digest('hex');/api/v1/payments/createBuat pembayaran baru via QRIS atau Binance Pay.
{
"amount": 50000,
"method": "QRIS",
"reference": "ORDER-001",
"description": "Capcut Premium 7 Hari"
}* description bersifat opsional.
{
"id": "tx_abc123...",
"status": "PENDING",
"amount": 50000,
"fee": 200,
"total_payment": 50200,
"method": "QRIS",
"reference": "ORDER-001",
"description": "Capcut Premium 7 Hari",
"payment_data": {
"qr_string": "00020101..."
},
"expires_at": "2026-08-20T22:00:00.000Z"
}{
"amount": 50000,
"method": "BINANCE",
"reference": "ORDER-001",
"description": "Capcut Premium 7 Hari"
}{
"id": "tx_abc123...",
"status": "PENDING",
"amount": 50000,
"fee": 0,
"total_payment": 50000,
"method": "BINANCE",
"reference": "ORDER-001",
"description": "Capcut Premium 7 Hari",
"payment_data": {
"pay_id": "187548062",
"usdt_amount": 2.8345,
"rate": 17812
},
"expires_at": "2026-08-20T22:00:00.000Z"
}/api/v1/payments/status?id=tx_abc123Cek status pembayaran berdasarkan ID atau reference.
Headers: X-PG-API-Key + X-PG-Timestamp (no signature required for GET)
Query: ?id=tx_abc123 atau ?reference=ORDER-001
{
"id": "tx_abc123...",
"reference": "ORDER-001",
"amount": 50000,
"method": "QRIS",
"status": "COMPLETED",
"description": "Capcut Premium 7 Hari",
"fee": 200,
"net_amount": 50000,
"payment_data": { "qr_string": "..." },
"expires_at": "...",
"completed_at": "...",
"created_at": "..."
}/api/v1/payments/cancelBatalkan pembayaran yang masih PENDING.
{
"id": "tx_abc123"
}/api/v1/payments/verify-binanceVerifikasi manual pembayaran Binance Pay.
{
"id": "tx_abc123",
"binance_order_id": "447972557986332672"
}/api/v1/payments/methodsList metode pembayaran yang tersedia.
{
"methods": ["QRIS"],
"binance": { "enabled": true, "payId": "187548062" }
}Sewa Pay mengirim POST request ke webhook URL Anda saat pembayaran selesai. Set webhook URL di halaman Pengaturan.
Headers:
X-PG-Signature — HMAC-SHA256 signature (format sama dengan API)X-PG-Timestamp — Unix timestampEvents: payment.completed, payment.failed, payment.cancelled
{
"event": "payment.completed",
"data": {
"id": "tx_abc123",
"reference": "ORDER-001",
"amount": 50000,
"method": "QRIS",
"status": "COMPLETED",
"completed_at": "2026-08-20T21:05:30.000Z"
}
}| Status | Deskripsi |
|---|---|
| PENDING | Menunggu pembayaran |
| COMPLETED | Pembayaran berhasil |
| FAILED | Pembayaran gagal |
| CANCELLED | Pembayaran dibatalkan |
| Endpoint | Limit |
|---|---|
| Create Payment | 100 requests/minute |
| Check Status | 200 requests/minute |
const crypto = require('crypto');
const axios = require('axios');
const API_KEY = 'pg_your_api_key';
const SECRET_KEY = 'sk_your_secret_key';
const BASE_URL = 'https://sewapay.id';
async function createPayment(amount, method, reference) {
const timestamp = Math.floor(Date.now() / 1000);
const body = JSON.stringify({ amount, method, reference });
const signature = crypto.createHmac('sha256', SECRET_KEY)
.update(`${timestamp}.${body}`)
.digest('hex');
const res = await axios.post(`${BASE_URL}/api/v1/payments/create`, body, {
headers: {
'Content-Type': 'application/json',
'X-PG-API-Key': API_KEY,
'X-PG-Signature': signature,
'X-PG-Timestamp': String(timestamp),
},
});
return res.data;
}Butuh bantuan integrasi?
Daftar & Mulai Integrasi