API to API

Checkout

Validasi produk, nomor tujuan, harga, promo, saldo, dan koin sebelum payment.

Checkout

Terakhir diperbarui: 8 September 2026.

Checkout digunakan sebelum payment agar mitra mendapat estimasi harga final dan pemakaian saldo/koin yang akan digunakan.

Harga checkout mengikuti pengaturan komersial API-to-API milik mitra. Jika konfigurasi harga API belum aktif, API mengembalikan pesan Price plan API mitra belum dikonfigurasi, hubungi tim Miharogames untuk informasi lebih lanjut.

Untuk produk yang wajib inquiry, reference_id harus berasal dari inquiry yang sukses, milik customer/mitra yang sama, nomor tujuan sama, sub kategori produk cocok, dan belum melewati 15 menit.

Checkout Detail

GET /client/v2/checkout?product_id=15676&msisdn=082340378657&use_balance=true&use_coin=true
Authorization: Bearer o8coocg8k0ss4wcgk0o8........
X-SECRET-KEY: {partner_secret_key}

Query

QueryWajibKeterangan
product_idYaID produk dari product list atau product sync.
msisdnYaNomor tujuan transaksi.
reference_idKondisionalWajib dikirimkan untuk produk yang membutuhkan inquiry (E-Wallet, PLN, Billing). Menggunakan reference_id hasil response inquiry.
use_balanceTidaktrue jika ingin menggunakan saldo Miharogames.
use_coinTidaktrue jika ingin menggunakan koin. Koin digunakan setelah saldo.
booking_codeTidakField tambahan untuk produk tertentu.

Success Response

{
  "status": true,
  "data": {
    "product": {
      "id": 15676,
      "code": "S20",
      "name": "TELKOMSEL REGULER 20.000",
      "description": "",
      "nominal": "20.000",
      "image": {
        "operator_logo": "https://dev-asset.miharogames.co.id/uploads/files/m_operator_logo/telkomsel.svg",
        "product_icon": null,
        "product_banner": null
      }
    },
    "operator": {
      "id": 1,
      "name": "Telkomsel",
      "logo": "https://dev-asset.miharogames.co.id/uploads/files/m_operator_logo/telkomsel.svg"
    },
    "pricing": {
      "base_price": 20000,
      "discount": 0,
      "service_fee": 0,
      "service_fee_type": "rupiah",
      "subtotal": 20000,
      "total_payment": 0
    },
    "balance": {
      "use_balance": true,
      "available": 80000,
      "used": 20000
    },
    "coin": {
      "use_coin": false,
      "note": "Konversi koin: 2 koin = Rp1.",
      "available": 0,
      "available_value": 0,
      "used": 0,
      "used_value": 0
    },
    "promotion": {
      "applied": null,
      "preview": null
    },
    "inquiry": {
      "is_estimate": false,
      "is_ppob": false,
      "data": null
    }
  },
  "message": "OK"
}

Checkout Produk Inquiry

Produk yang membutuhkan Inquiry harus menggunakan reference_id dari Inquiry Status yang sudah SUCCESS. API memvalidasi bahwa reference_id milik customer yang sama, nomor tujuan sama, sub kategori cocok, status Inquiry sukses, dan belum melewati 15 menit.

Produkproduct_id darireference_id
Top Up E-Money / E-WalletProduct Sync/List denom e-wallet.Dari Inquiry Status e-wallet.
PLN PrabayarProduct List PLN Prabayar dengan reference_id, lalu pilih denom token/UNSOLD.Dari Inquiry Status PLN Prabayar.
PLN PascabayarField product_id pada Inquiry Status.Dari Inquiry Status PLN Pascabayar.
PLN Non-TaglisField product_id pada Inquiry Status.Dari Inquiry Status PLN Non-Taglis.

Contoh Checkout PLN Pascabayar

GET /client/v2/checkout?product_id=22054&msisdn=223088829223&reference_id=9547&use_balance=true&use_coin=false
Authorization: Bearer o8coocg8k0ss4wcgk0o8........
X-SECRET-KEY: {partner_secret_key}

Pada produk PLN, inquiry.data berisi satu object data hasil parsing inquiry. Struktur field mengikuti message_parsing pada Inquiry Status, sehingga mitra dapat menampilkan detail pelanggan/tagihan tanpa membaca raw message provider.

Contoh bentuk inquiry.data PLN Pascabayar:

{
  "type": "pln_postpaid",
  "customer_number": "223088829223",
  "customer_name": "NRML",
  "bill_period": "202609",
  "bill_amount": 5198,
  "admin_fee": 1600,
  "total_amount": 6798
}

Balance and Coin Rule

Saldo digunakan lebih dulu. Jika saldo cukup untuk membayar penuh, koin tidak dipotong walaupun use_coin=true. Jika saldo tidak cukup, koin dapat digunakan untuk menutup sisa pembayaran.

coin.usage_note hanya tampil saat use_balance=true, use_coin=true, saldo cukup membayar penuh, dan koin tidak terpakai. UI mitra sebaiknya menampilkan aturan ini agar end-user paham bahwa koin tetap aman walaupun opsi koin aktif.

Urutan penggunaan pada checkout dan payment sama: saldo lebih dulu, lalu koin, lalu payment gateway jika masih ada sisa pembayaran.

Response Codes

HTTPKondisiMessage
200Checkout berhasil.OK
400Request tidak valid atau reference_id inquiry tidak dapat digunakan.Lihat message pada response.
401Secret key/token salah atau tidak sesuai.Lihat message pada response.
404Produk tidak ditemukan.Produk tidak ditemukan atau belum tersedia. Silakan pilih produk lain.
422Produk tidak aktif/tutup atau tidak aktif pada price plan mitra.Lihat message pada response.
500Gangguan sistem.Mengikuti pesan error server.