AyoQrisAyoQris Masuk Daftar
📚 API REFERENCE v1.2.1

Dokumentasi API AyoQris

Semua endpoint memakai base URL https://qris.adipmusic.my.id. Endpoint bertanda 🔒 butuh header Authorization: Bearer <API_KEY> — ambil API key dari dashboard.

🔒

POST /api/qris/generate

Buat QRIS dinamis dengan nominal tertentu dari QRIS statis yang sudah kamu upload.

curl -X POST https://qris.adipmusic.my.id/api/qris/generate \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 50000,
    "order_id": "INV-001",
    "webhook_url": "https://your-server.com/webhook",
    "callback_url": "https://your-site.com/thanks"
  }'

Response:

{
  "success": true,
  "qris": "00020101021226610018ID.CO.QRIS.WWW...",
  "qr_image": "data:image/svg+xml;base64,...",
  "amount": 50000,
  "expires_at": "2026-10-02T20:22:00.000Z",
  "order_id": "INV-001",
  "code": "A1B2C3D4E5F6"
}
🔒

POST /api/qris/upload

Simpan QRIS statis tokomu. Bisa kirim string QRIS langsung, atau upload gambar (JPG/PNG/BMP/TIFF/GIF, maks 1,5 MB).

curl -X POST https://qris.adipmusic.my.id/api/qris/upload \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{ "qris_string": "000201010211..." }'

# atau upload gambar:
curl -X POST https://qris.adipmusic.my.id/api/qris/upload \
  -H "Authorization: Bearer <API_KEY>" \
  -F "file=@qris-toko.png"
🔒

POST /api/qris/payment-link

Buat payment link publik yang bisa dibagikan ke pelanggan.

curl -X POST https://qris.adipmusic.my.id/api/qris/payment-link \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{ "amount": 100000, "order_id": "INV-002" }'

Response:

{
  "success": true,
  "payment_link": {
    "id": 12,
    "link_code": "EC6Y6DQXGJW5",
    "order_id": "INV-002",
    "url": "https://qris.adipmusic.my.id/p/EC6Y6DQXGJW5",
    "amount": 100000,
    "webhook_url": null,
    "callback_url": null,
    "expires_at": "2026-10-02T20:32:00.000Z"
  }
}
🔒

POST /api/orders/:id/verify

Tandai order sebagai lunas setelah kamu memastikan dana masuk di e-wallet/bank. Webhook akan dikirim otomatis bila webhook_url terpasang.

curl -X POST https://qris.adipmusic.my.id/api/orders/INV-001/verify \
  -H "Authorization: Bearer <API_KEY>"
🔒

POST /api/orders/:id/cancel

Batalkan order yang masih berstatus pending.

curl -X POST https://qris.adipmusic.my.id/api/orders/INV-001/cancel \
  -H "Authorization: Bearer <API_KEY>"
🌐

POST /api/pay/:code/confirm

Endpoint publik — dipanggil saat pelanggan menekan tombol "Saya Sudah Bayar" di halaman pembayaran. Tidak butuh API key.

curl -X POST https://qris.adipmusic.my.id/api/pay/EC6Y6DQXGJW5/confirm
🔔

Webhook

Setiap order terverifikasi, kami POST JSON ke webhook_url milikmu dengan signature HMAC-SHA256 di header X-TQ-Signature. Verifikasi signature memakai webhook secret dari dashboard.

// Contoh verifikasi signature (Node.js)
const crypto = require("crypto");

function validSignature(rawBody, signature, secret) {
  const hmac = crypto.createHmac("sha256", secret)
    .update(rawBody, "utf8").digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(hmac), Buffer.from(signature)
  );
}
💡 Tips Webhook dikirim ulang otomatis hingga 3x bila servermu tidak merespons 2xx. Pastikan endpoint-mu idempoten berdasarkan order_id.
⚠️

Kode Error

KODEARTI
400Parameter tidak valid (mis. nominal kosong atau format salah).
401API key hilang atau tidak valid.
404Order / kode pembayaran tidak ditemukan atau sudah kedaluwarsa.
409Order ID sudah dipakai, atau order sudah tidak berstatus pending.
429Kuota harian habis. Upgrade ke Premium untuk 1000 request/hari.