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.

Secure HMAC
Autentikasi SHA-256
Instant Webhook
Notifikasi Real-time

Alur Kerja Sistem

Dari permintaan invoice hingga saldo merchant terupdate — semua berjalan otomatis.

1

Sistem Merchant

API Request

Aplikasi Anda mengirim POST request ke MyQRIS API untuk membuat invoice baru dan mendapatkan QRIS payload.

2

Pelanggan Scan

User Action

Pelanggan membuka payment_url dan men-scan QRIS menggunakan GoPay, Dana, OVO, atau M-Banking.

3

MyQRIS Forwarder

Auto Detect

Mutasi rekening bank terdeteksi secara realtime. Nominal & berita transferdicocokkan dengan invoice active.

4

MyQRIS Gateway

HMAC SHA-256

Sistem memvalidasi data, mengupdate status invoice, lalu mengirim POST webhook dengan tanda tangan HMAC-SHA256 ke Merchant.

5

Server Merchant

✓ Complete

Merchant 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 Endpoint
https://myqris.masalembo.net/create_invoice.php?format=json

Body Parameters

Key Type Requirement
amount Integer Required
prefix String Required
merchant_order_id String Optional

Check Status

GET Endpoint
https://myqris.masalembo.net/check_status.php?format=json&invoice_id=INV-123

Gunakan 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.

Buka Demo Halaman →

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.

Contoh Verifikasi (PHP)
$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.

Response: Create Invoice (POST) 200 OK
{
  "status": "success",
  "data": {
    "invoice_id": "MQRIS-661FA3",
    "amount": 10234,
    "qris_payload": "000201010212266...",
    "payment_url": "https://myqris.masalembo.net/qris_view.php?id=MQRIS-661FA3"
  }
}
Webhook Callback ke Merchant (POST) Push Notification
{
  "status": "Paid",
  "invoice_id": "MQRIS-661FA3",
  "merchant_order_id": "MQRIS-661FA3",
  "order_id": "MQRIS-661FA3",
  "amount": 10234,
  "timestamp": "2026-04-17 22:30:15"
}
Response: Check Status (GET) Polling
{
  "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"
  }
}