API to API

Callback

Webhook transaksi dari Miharogames ke endpoint mitra.

Callback

Terakhir diperbarui: 19 Agustus 2026.

Callback dikirim ke URL mitra saat status transaksi berubah. Callback membantu mitra memperbarui transaksi tanpa polling terus-menerus.

Aturan komisi untuk transaksi API-to-API mengikuti kesepakatan bisnis API mitra yang sudah dikonfigurasi oleh tim Miharogames. Detail nominal komisi tidak dikirim lewat callback transaksi customer.

Mitra wajib menyiapkan endpoint callback sesuai kontrak Miharogames. Setelah endpoint siap, ajukan URL callback ke tim Miharogames untuk whitelist dan aktivasi. Struktur payload dan response harus mengikuti standar pada halaman ini agar delivery, retry, dan rekonsiliasi status berjalan konsisten.

Callback URL Registration

Miharogames hanya mengirim callback ke URL yang sudah diajukan dan diaktifkan. Informasikan URL callback per environment saat onboarding.

EnvironmentContoh URL mitra
Developmenthttps://sandbox-partner.example.com/miharogames/callback
Productionhttps://partner.example.com/miharogames/callback

Ketentuan endpoint callback mitra:

  • memakai HTTPS untuk production;
  • menerima request POST dengan body JSON;
  • mengembalikan response 2xx jika payload sudah diterima;
  • memproses payload secara idempotent memakai event_id atau partner_trx_id;
  • tidak mengubah nama field payload dari kontrak Miharogames.

Delivery Behavior

Callback dikirim dengan prinsip at-least-once. Artinya, mitra bisa menerima event yang sama lebih dari satu kali jika endpoint mitra timeout atau tidak mengembalikan response sukses.

Mitra wajib membuat receiver idempotent memakai event_id atau partner_trx_id.

Webhook Payload

{
  "event": "transaction.updated",
  "event_id": "callback_9381_20260814144652",
  "occurred_at": "2026-08-14 14:46:52",
  "partner_trx_id": "OMNI-TRX-001",
  "transaction_number": "PAY/KFI/8/2026/54",
  "payment_status": "PAID",
  "transaction_status": "SUCCESS",
  "serial_number": "0214073400005825489229"
}

Payload Field

FieldKeterangan
eventNama event. Untuk update transaksi bernilai transaction.updated.
event_idID unik callback. Simpan untuk idempotency.
occurred_atWaktu event dibuat, format YYYY-MM-DD HH:mm:ss.
partner_trx_idID transaksi dari sistem mitra.
transaction_numberNomor transaksi Miharogames.
payment_statusStatus pembayaran.
transaction_statusStatus transaksi.
serial_numberSN transaksi jika sudah tersedia. Bernilai null jika belum ada.

Response Mitra

Endpoint mitra sebaiknya mengembalikan response 2xx secepat mungkin. Proses berat seperti update banyak tabel atau notifikasi user sebaiknya diproses async di sisi mitra.

{
  "status": true,
  "message": "Callback diterima."
}

Retry Policy

Jika endpoint mitra timeout, mengalami kesalahan server (HTTP 5xx), atau tidak mengembalikan response sukses (HTTP 2xx), Miharogames akan melakukan percobaan pengiriman ulang (retry) otomatis menggunakan mekanisme Exponential Backoff hingga maksimal 5 kali percobaan.

Percobaan Ke-Jeda Pengiriman UlangStatus
1 (Awal)Langsung saat transaksi diperbaruiPENDING (jika gagal)
2+1 menit setelah percobaan ke-1 gagalPENDING
3+5 menit setelah percobaan ke-2 gagalPENDING
4+15 menit setelah percobaan ke-3 gagalPENDING
5+30 menit setelah percobaan ke-4 gagalPENDING
6 (Terakhir)+60 menit setelah percobaan ke-5 gagalFAILED (berhenti)

Jika setelah 5 kali retry (total 6 percobaan) endpoint mitra tetap gagal atau timeout, status pengiriman callback akan berubah permanen menjadi FAILED dan sistem tidak akan mencoba mengirim ulang. Mitra disarankan mengecek status transaksi manual melalui endpoint Payment Status.

Note: Skema kegagalan webhook Miharogames mengadopsi konsep Exponential Backoff dari standar industri penyedia API besar seperti Stripe, Adyen, dan Shopify. Skema ini bertujuan memberi waktu bagi server mitra untuk pulih (downtime/restart) dan mencegah efek thundering herd akibat koneksi yang bertubi-tubi.

Best Practice Receiver

  • Validasi payload wajib ada sebelum update transaksi.
  • Simpan event_id untuk mencegah proses ganda.
  • Cocokkan partner_trx_id dengan transaksi di sistem mitra.
  • Balas 2xx setelah payload diterima dan disimpan.
  • Gunakan payment status endpoint sebagai fallback jika callback belum diterima.