Dokumentasi API PPOB
Semua endpoint menggunakan metode POST, format JSON atau form-urlencoded, dan parameter apikey.
1. Get Layanan
URL: https://payqris.web.id/api/ppob
| Parameter | Wajib | Keterangan |
|---|---|---|
| apikey | Ya | Apikey akun reseller. |
| action | Ya | getlayanan |
| kategori | Tidak | Filter berdasarkan nama kategori, contoh Mobile Legends. Pencarian tidak membedakan huruf besar/kecil. Alias: category. |
cURL
curl -X POST "https://payqris.web.id/api/ppob" \ -d "apikey=APIKEY_ANDA" \ -d "action=getlayanan"
cURL — filter kategori
curl -X POST "https://payqris.web.id/api/ppob" \ -d "apikey=APIKEY_ANDA" \ -d "action=getlayanan" \ -d "kategori=Mobile Legends"
Respon sukses
{
"status": true,
"data": [
{
"id": 1,
"produk": "game",
"kategori": "Mobile Legends",
"layanan": "3 Diamond",
"status": "active",
"amount": {
"basic": 10000,
"reseller": 9500
}
}
]
}
Respon error
{
"status": false,
"data": {
"pesan": "Apikey tidak valid."
}
}
2. Order PPOB
URL: https://payqris.web.id/api/ppob
| Parameter | Wajib | Keterangan |
|---|---|---|
| apikey | Ya | Apikey akun reseller. |
| action | Ya | order |
| id | Ya | ID layanan dari endpoint getlayanan. Parameter layanan juga diterima. |
| target | Ya | Target default layanan. |
| zone | Sesuai layanan | Wajib untuk target User ID + Zone. Target provider dikirim sebagai gabungan target + zone. |
| qty | Sesuai layanan | Wajib untuk Bebas Nominal. Berisi nominal/qty. |
Untuk layanan biasa cukup isi target. Untuk layanan zone isi target dan zone. Untuk layanan bebas nominal isi target dan qty.
cURL — target biasa
curl -X POST "https://payqris.web.id/api/ppob" \ -d "apikey=APIKEY_ANDA" \ -d "action=order" \ -d "id=1" \ -d "target=08123456789"
cURL — target + zone
curl -X POST "https://payqris.web.id/api/ppob" \ -d "apikey=APIKEY_ANDA" \ -d "action=order" \ -d "id=1" \ -d "target=123456789" \ -d "zone=1234"
cURL — bebas nominal
curl -X POST "https://payqris.web.id/api/ppob" \ -d "apikey=APIKEY_ANDA" \ -d "action=order" \ -d "id=1" \ -d "target=08123456789" \ -d "qty=50000"
Respon sukses
{
"status": true,
"data": {
"id": "1234567890",
"status": "pending",
"price": 10000
}
}
Respon error
{
"status": false,
"data": {
"pesan": "Zone wajib diisi untuk layanan ini."
}
}
Harga dan saldo: akun reseller/admin dipotong
amount.reseller (harga provider), sedangkan akun basic dipotong amount.basic (harga jual). Nilai price pada respon adalah jumlah yang benar-benar dipotong.3. Cek Status Order PPOB
URL: https://payqris.web.id/api/ppob
Gunakan ID yang dikembalikan oleh order. Untuk status pending/processing, endpoint akan melakukan sinkronisasi ke provider Okeconnect terlebih dahulu. Status final tidak memanggil provider ulang.
| Parameter | Wajib | Keterangan |
|---|---|---|
| apikey | Ya | Apikey akun. |
| action | Ya | status, cekstatus, atau check_status. |
| id | Ya | ID order dari respon order. Alias: order_id/oid. |
cURL
curl -X POST "https://payqris.web.id/api/ppob" \ -d "apikey=APIKEY_ANDA" \ -d "action=status" \ -d "id=1234567890"
Respon sukses — pending
{
"status": true,
"data": {
"id": "1234567890",
"provider_id": "TRX123",
"layanan": "Pulsa 10.000",
"target": "08123456789",
"price": 10000,
"status": "pending",
"message": "Transaksi sedang diproses.",
"refund": false
}
}
Respon sukses — selesai/refund
{
"status": true,
"data": {
"id": "1234567890",
"provider_id": "TRX123",
"layanan": "Pulsa 10.000",
"target": "08123456789",
"price": 9500,
"status": "success",
"message": "SN: 1234567890123456",
"refund": false
}
}
Respon error
{
"status": false,
"data": { "pesan": "Order tidak ditemukan." }
}
4. Validasi Nickname Public
Endpoint ini memeriksa nickname/region melalui konfigurasi NeoXR. Saldo hanya diperiksa sebagai syarat akses; saldo tidak dikurangi.
URL: https://payqris.web.id/api/ppob
| Parameter | Wajib | Keterangan |
|---|---|---|
| apikey | Ya | Apikey akun. |
| action | Ya | validasi_nickname |
| id_validasi | Ya | Kode validasi public, bukan kode NeoXR. Daftar kode: lihat list kode validasi public. |
| target | Ya | ID game yang akan divalidasi. |
| zone | Sesuai kode | Wajib jika kode memakai parameter ID + Zone. |
cURL — ID
curl -X POST "https://payqris.web.id/api/ppob" \ -d "apikey=APIKEY_ANDA" \ -d "action=validasi_nickname" \ -d "id_validasi=MLBB" \ -d "target=123456789"
cURL — ID + Zone
curl -X POST "https://payqris.web.id/api/ppob" \ -d "apikey=APIKEY_ANDA" \ -d "action=validasi_nickname" \ -d "id_validasi=MLBB" \ -d "target=123456789" \ -d "zone=1234"
Respon sukses — nama biasa (path result: data.username)
{
"status": true,
"data": {
"kode_validasi": "MLBB",
"target": "123456789",
"zone": "",
"result": "nama",
"saldo_dikurangi": false
}
}
Respon sukses — cek region (path result: data)
{
"status": true,
"data": {
"kode_validasi": "GAME_REGION",
"target": "123456789",
"zone": "",
"result": {
"username": "nama",
"region": "ID"
},
"saldo_dikurangi": false
}
}
Respon error
{
"status": false,
"data": {
"pesan": "Saldo tidak mencukupi untuk menggunakan validasi ini."
}
}