Bangun Ekosistem Pembayaran
Tanpa Batas dengan MyQRIS.
Integrasikan gateway pembayaran QRIS dinamis yang aman, cepat, dan otomatis untuk aplikasi atau e-commerce Anda dalam hitungan menit.
Alur Kerja Sistem
Dari permintaan invoice hingga saldo merchant terupdate — semua berjalan otomatis.
Sistem Merchant
API RequestAplikasi Anda mengirim POST request ke MyQRIS API untuk membuat invoice baru dan mendapatkan QRIS payload.
Pelanggan Scan
User ActionPelanggan membuka payment_url dan men-scan QRIS menggunakan GoPay, Dana, OVO, atau M-Banking.
MyQRIS Forwarder
Auto DetectMutasi rekening bank terdeteksi secara realtime. Nominal & berita transferdicocokkan dengan invoice active.
MyQRIS Gateway
HMAC SHA-256Sistem memvalidasi data, mengupdate status invoice, lalu mengirim POST webhook dengan tanda tangan HMAC-SHA256 ke Merchant.
Server Merchant
✓ CompleteMerchant memverifikasi signature, memproses logika bisnis (update saldo/order), lalu merespon 200 OK.
Konsep Webhook
Webhook adalah mekanisme "Push" di mana MyQRIS akan memberitahu sistem Anda secara otomatis saat mutasi bank terdeteksi.
Event Penentu
- • Mutasi Bank Terdeteksi (Realtime)
- • Nominal & Berita Cocok
- • Status Invoice 'Pending'
Respon Merchant
Server Anda harus merespon dengan HTTP Code 200 OK untuk menghentikan sistem auto-retry kami.
Autentikasi
Kami mengamankan semua transaksi menggunakan **Merchant Secret Key**. Kunci ini digunakan untuk dua hal:
-
Mengirim invoice via header
X-Merchant-Secret. -
Memverifikasi Webhook via hitungan HMAC terhadap header
X-MYQRIS-SIGNATURE.
Penting: Case Sensitivity
Sistem kami menggunakan aturan case-sensitive. Pastikan header X-MYQRIS-SIGNATURE ditulis dalam HURUF BESAR SEMUA. Nilai status webhook adalah Paid (huruf P besar).
Create Invoice
POST EndpointBody Parameters
| Key | Type | Requirement |
|---|---|---|
| amount | Integer | Required |
| prefix | String | Required |
| merchant_order_id | String | Optional |
Check Status
GET EndpointGunakan endpoint ini untuk melakukan polling status jika sistem merchant tidak menerima webhook atau untuk verifikasi manual di sisi server.
Menampilkan Visual QRIS
Anda memiliki dua pilihan untuk menyajikan QRIS kepada pelanggan Anda:
Option A: Redirect / Iframe
Gunakan atribut payment_url dari respons API. Ini adalah halaman yang sudah jadi, mobile-friendly, dan memiliki fitur "Cek Status" otomatis.
payment_url → qris_view.php?id=...
Halaman pembayaran yang siap pakai.
Pelanggan akan diarahkan ke payment_url untuk scan QRIS.
Option B: Custom Display (API)
Ambil string qris_payload dan render menggunakan browser-side library seperti qrcode.js.
new QRCode(document.getElementById("qrcode"), {
text: qris_payload,
width: 256,
height: 256
});
Verifikasi Webhook
Saat pembayaran sukses, kami akan mengirimkan POST ke URL Anda. Anda wajib menghitung ulang signature untuk memastikan data belum dimanipulasi di tengah jalan.
$secret = "KUNCI_RAHASIA_MERCHANT_ANDA";
$payload = file_get_contents('php://input'); // Raw JSON
$received_sig = $_SERVER['HTTP_X_MYQRIS_SIGNATURE'] ?? '';
$expected_sig = hash_hmac('sha256', $payload, $secret);
if (hash_equals($expected_sig, $received_sig)) {
$data = json_decode($payload, true);
// Transaksi Valid, Lanjutkan Proses
echo json_encode(['status' => 'success']);
} else {
// Ilegal Request
http_response_code(403);
}
Contoh Payload
Gunakan sebagai referensi saat melakukan mocking atau testing di sistem Anda.
{
"status": "success",
"data": {
"invoice_id": "MQRIS-661FA3",
"amount": 10234,
"qris_payload": "000201010212266...",
"payment_url": "https://myqris.masalembo.net/qris_view.php?id=MQRIS-661FA3"
}
}
{
"status": "Paid",
"invoice_id": "MQRIS-661FA3",
"merchant_order_id": "MQRIS-661FA3",
"order_id": "MQRIS-661FA3",
"amount": 10234,
"timestamp": "2026-04-17 22:30:15"
}
{
"status": "success",
"data": {
"invoice_id": "MQRIS-661FA3",
"amount": 10234,
"status": "Paid",
"created_at": "2026-04-17 22:15:00",
"updated_at": "2026-04-17 22:30:15"
}
}