Create Payment (Tester)
Uji coba simulasi pembuatan transaksi payment dari berbagai provider & channel.
Parameter Transaksi
Tautan Pembayaran (Payment Link)
Membuat sesi pembayaran (Payment Link)...
Status:
PENDINGPayment Link Siap Digunakan!
Bagikan tautan ini ke pelanggan. Pelanggan dapat memilih metode pembayaran (QRIS, VA Bank, Tokopedia, Blibli, CC) langsung di halaman checkout.
Raw API Response:
Riwayat & Tracking Transaksi
Lacak setiap transaksi lengkap dengan IP address, perangkat, OS, browser, dan domain asal.
| Waktu | Merchant & Trx ID | Pelanggan | Asal Website & IP | Perangkat & OS | Metode | Nominal | Status | Aksi |
|---|---|---|---|---|---|---|---|---|
| Memuat data... | ||||||||
Manajemen Merchant & API Key
Daftarkan website klien, kelola token API, konfigurasi white-label checkout, dan matrix rute pembayaran.
Daftar Merchant Terintegrasi
Kredensial API, status tampilan white-label, dan ringkasan rute tiap toko| Merchant & Profil | Matrix Rute Aktif | Kredensial API | Webhook Callback | Transaksi | Status | Aksi |
|---|---|---|---|---|---|---|
| Memuat data merchant... | ||||||
ID: # White-Label Mode
Master Provider & Biaya MDR
Kelola master gateway, channel pembayaran, dan referensi tarif MDR internal
Master Provider Status
Kalkulator Simulasi MDR
Cek potongan biaya & nominal bersih transaksiAset QRIS (Static & Dynamic Engine)
QRIS Dinamis Langsung tanpa potongan fee pihak ketiga| Nama Merchant QRIS | Bank Settlement | Nomor Rekening | Biaya MDR (Intern) | Keterangan | Status | Aksi |
|---|
Channel DOKU Resmi (QRIS, VA, CC Mandiri)
Urutan metode resmi DOKU: QRIS (T+1), VA Mandiri (T+1), VA BCA (T+2), Mandiri Acquirer CC (T+1), VAT Exclude| Kode Channel | Label / Nama Metode | Acquirer | Biaya MDR | VAT | Pencairan | Tipe Pembayaran | Status | Aksi |
|---|
Channel Rintisan (QRIS, VA, CC, Marketplace)
Urutan metode via Rintisan: QRIS (0.7%), Virtual Account (Rp 5.000), Kartu Kredit (1.8%), Marketplace (Tokopedia & Blibli)| Kode Channel | Label / Nama Metode | Biaya MDR (Intern) | Keterangan & Catatan MDR | Status | Aksi |
|---|
Dokumentasi Integrasi & SDK API
Panduan lengkap bagi developer untuk menghubungkan website luar ke Payment Gateway Zhujirou.
1. Autentikasi API
Setiap request dari website merchant harus menyertakan header x-api-key atau Authorization: Bearer <API_KEY> sesuai API Key yang telah didaftarkan di menu Kelola Merchant.
Host: https://payment.zhujirou.com
x-api-key: zj_live_your_api_key_here
Authorization: Bearer zj_live_your_api_key_here
Content-Type: application/json
2. Endpoint API Utama
Membuat sesi tagihan baru. Merchant dapat memilih mode All-in-One Checkout (Rekomendasi) di mana pelanggan memilih metode pembayaran di halaman checkout cantik / white-label, atau mode Direct Channel.
A. Mode 1: All-in-One Checkout (Rekomendasi untuk Iframe / Redirect)
Cukup kirimkan nominal dan data pelanggan. Sistem akan menghasilkan URL checkout yang siap di-redirect atau di-embed di iframe:
// Request Body (JSON):
{
"merchant_trx_id": "INV-10023", // Opsional (dibuat otomatis jika kosong)
"amount": 150000, // Nominal tagihan dalam IDR
"customer_name": "Steven Darmawan", // Nama lengkap pelanggan
"customer_email": "[email protected]", // Email pelanggan
"customer_phone": "081234567890", // Nomor HP/WhatsApp aktif
"callback_url": "https://tokosaya.com/thankyou", // Redirect setelah bayar
"callback_url_result": "https://tokosaya.com/api/webhook" // Webhook instan
}
// Response Body (JSON):
{
"status": "OK",
"message": "Checkout session created successfully",
"data": {
"merchant_trx_id": "INV-10023",
"amount": 150000,
"status": "pending",
"pay_url": "https://payment.zhujirou.com/pay/INV-10023",
"checkout_url": "https://payment.zhujirou.com/pay/INV-10023"
}
}
B. Mode 2: Direct Channel (Langsung Generate VA / QRIS / CC)
Jika merchant memiliki UI checkout sendiri dan ingin langsung menembak nomor VA / payload QRIS:
// Request Body (JSON):
{
"channel_code": "BCA", // BCA | MANDIRI | BRI | BNI | PERMATA | CIMB | QRIS | SHOPEEPAY | DANA | dll
"amount": 150000,
"customer_name": "Steven Darmawan",
"customer_email": "[email protected]"
}
// Response Body (JSON):
{
"status": "OK",
"message": "Transaction created successfully",
"data": {
"merchant_trx_id": "TRX-1787840483158-45121779",
"amount": 150000,
"va_number": "88081234567890", // Jika channel Virtual Account
"qr_payload": "000201010212266...", // Jika channel QRIS
"qr_image_url": "data:image/png;base64,...",
"payment_url": "https://...", // URL bayar (jika kartu kredit / DOKU)
"pay_url": "https://payment.zhujirou.com/pay/TRX-1787840483158-45121779"
}
}
Mengecek status pembayaran terkini secara real-time berdasarkan merchant_trx_id atau ID invoice.
// Response:
{
"status": "OK",
"message": "Transaction found",
"data": {
"id": 142,
"merchant_name": "Toko Online Saya",
"merchant_trx_id": "INV-10023",
"status": "success", // "pending" | "success" | "failed" | "expired"
"amount": 150000,
"provider": "doku",
"channel_code": "BCA",
"va_number": "88081234567890",
"paid_at": "2026-08-27T14:15:30Z",
"created_at": "2026-08-27T14:10:00Z"
}
}
Mengembalikan daftar channel pembayaran yang aktif dan diizinkan untuk merchant tersebut (DOKU VA BCA/Mandiri, CC Mandiri, QRIS DOKU, QRIS Dinamis 0%, Rintisan).
Ketika pelanggan berhasil membayar, Gateway secara instan mengirimkan HTTP POST webhook ke webhook_url yang didaftarkan di profil merchant:
Header Webhook:
x-webhook-signature: <sha256_hmac_hex_of_raw_body>
Content-Type: application/json
Payload Webhook:
{
"merchant_trx_id": "INV-10023",
"status": "success",
"amount": 150000,
"provider": "doku",
"channel": "BCA",
"va_number": "88081234567890",
"paid_at": "2026-08-27T14:15:30.000Z",
"timestamp": "2026-08-27T14:15:31.000Z"
}
3. Contoh Kode Integrasi Siap Pakai
<?php
// Contoh Inisiasi Checkout Pembayaran dengan PHP
$apiKey = 'zj_live_your_api_key_here';
$payload = [
'merchant_trx_id' => 'INV-' . time(),
'amount' => 150000,
'customer_name' => 'Steven Darmawan',
'customer_email' => '[email protected]',
'customer_phone' => '081234567890'
];
$ch = curl_init('https://payment.zhujirou.com/api/v1/payment/create');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'x-api-key: ' . $apiKey
],
CURLOPT_POSTFIELDS => json_encode($payload)
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
if ($response['status'] === 'OK') {
$payUrl = $response['data']['pay_url'];
// Redirect pelanggan ke halaman pembayaran atau tampilkan dalam iframe:
header("Location: " . $payUrl);
exit;
} else {
echo "Gagal membuat pembayaran: " . $response['message'];
}
const axios = require('axios');
async function createPayment() {
const apiKey = 'zj_live_your_api_key_here';
try {
const response = await axios.post('https://payment.zhujirou.com/api/v1/payment/create', {
merchant_trx_id: `INV-${Date.now()}`,
amount: 150000,
customer_name: 'Steven Darmawan',
customer_email: '[email protected]',
customer_phone: '081234567890'
}, {
headers: {
'Content-Type': 'application/json',
'x-api-key': apiKey
}
});
console.log('Checkout URL:', response.data.data.pay_url);
// Buka di browser atau arahkan customer ke URL di atas
} catch (err) {
console.error('Error:', err.response?.data || err.message);
}
}
createPayment();
import requests
import time
url = "https://payment.zhujirou.com/api/v1/payment/create"
headers = {
"Content-Type": "application/json",
"x-api-key": "zj_live_your_api_key_here"
}
payload = {
"merchant_trx_id": f"INV-{int(time.time())}",
"amount": 150000,
"customer_name": "Steven Darmawan",
"customer_email": "[email protected]",
"customer_phone": "081234567890"
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
if data.get("status") == "OK":
print("Link Bayar:", data["data"]["pay_url"])
else:
print("Error:", data.get("message"))
curl -X POST https://payment.zhujirou.com/api/v1/payment/create \
-H "Content-Type: application/json" \
-H "x-api-key: zj_live_your_api_key_here" \
-d '{
"merchant_trx_id": "INV-10023",
"amount": 150000,
"customer_name": "Steven Darmawan",
"customer_email": "[email protected]",
"customer_phone": "081234567890"
}'