API to API

Payment

Metode pembayaran, pembuatan transaksi, dan pengecekan status pembayaran.

Payment

Terakhir diperbarui: 8 September 2026.

Payment digunakan untuk membuat transaksi dari hasil checkout. Nilai transaksi dihitung ulang oleh Miharogames saat payment dibuat menggunakan pengaturan komersial API-to-API milik mitra.

Pastikan sudah menghubungi tim Miharogames untuk mendaftarkan callback_url mitra sebelum membuat payment. Jika callback_url belum terdaftar atau format URL tidak valid, transaksi tidak dapat dibuat.

Jika pengaturan harga API belum aktif, payment dapat gagal dengan pesan Price plan API mitra belum dikonfigurasi. Silakan hubungi dukungan mitra.

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.

Urutan penggunaan saldo/koin mengikuti hasil checkout. Saldo digunakan lebih dulu. Jika saldo mencukupi, koin tidak dipotong walaupun use_coin=true.

Payment Methods

GET /client/v2/payment/methods
Authorization: Bearer o8coocg8k0ss4wcgk0o8........
X-SECRET-KEY: {partner_secret_key}

Success Response

{
  "status": true,
  "data": [
    {
      "id": 9,
      "code": "QRIS",
      "name": "QRIS",
      "group": "E-Wallet",
      "payment_gateway": "MIDTRANS",
      "payment_type": "QRIS",
      "image": "qris-logo.png",
      "minimum_payment": 0,
      "service_fee": {
        "type": "rupiah",
        "amount": 0
      }
    }
  ],
  "message": "OK"
}

Gunakan payment_method_id = 0 untuk pembayaran menggunakan saldo/koin Miharogames.

Available Payment Method

IDCodeNameGatewayTypeKeterangan
0BALANCESaldo/KoinSALDOSALDO / COINPembayaran menggunakan saldo dan/atau koin Miharogames.
9QRISQRISMIDTRANSQRISPembayaran QRIS melalui Midtrans. Gunakan nilai payment.redirect_url untuk menampilkan QR Code pembayaran.

Metode selain daftar di atas belum dibuka di dokumentasi karena masih tahap pengujian internal.

Create Payment

POST /client/v2/payment
Authorization: Bearer o8coocg8k0ss4wcgk0o8........
X-SECRET-KEY: {partner_secret_key}
Content-Type: application/json
{
  "product_id": 15676,
  "msisdn": "082340378657",
  "payment_method_id": 0,
  "promotion_id": null,
  "use_balance": true,
  "use_coin": false,
  "reference_id": null,
  "parts": null,
  "partner_trx_id": "OMNI-TRX-001",
  "shift_code": "SHIFT-001"
}

Field

FieldTipeWajibKeterangan
product_idintegerYaID produk dari checkout/product list.
msisdnstringYaNomor tujuan transaksi.
payment_method_idintegerYaID dari payment methods. Gunakan 0 untuk saldo/koin.
promotion_idinteger/nullTidakID promo jika digunakan.
reference_idstring/nullKondisionalWajib dikirimkan untuk produk yang membutuhkan inquiry (E-Wallet, PLN, Billing). Menggunakan reference_id hasil response inquiry.
use_balancebooleanTidakPakai saldo Miharogames.
use_coinbooleanTidakPakai koin setelah saldo. Jika saldo mencukupi, koin tidak dipotong.
partsobject/nullTidakField tambahan untuk produk tertentu.
partner_trx_idstringYaID transaksi dari sistem mitra. Maksimal 50 karakter dan harus unik.
shift_codestring/nullTidakKode shift/kasir dari sistem mitra. Maksimal 50 karakter.

Success Response

{
  "status": true,
  "message": "Pembayaran berhasil diproses.",
  "data": {
    "transaction": {
      "id": 9410,
      "transaction_number": "PAY/KFI/8/2026/86",
      "status": "PROCESSING",
      "payment_status": "PAID",
      "amount": {
        "total": 20000,
        "balance_used": 20000,
        "coin_used": 0,
        "coin_value_used": 0,
        "gateway_payment": 0
      },
      "partner_trx_id": "OMNI-TRX-001"
    },
    "payment_method": {
      "id": 0,
      "code": "BALANCE",
      "name": "Saldo/Koin",
      "gateway": "SALDO",
      "type": "SALDO"
    },
    "payment": {
      "is_required": false,
      "token": null,
      "redirect_url": null,
      "amount": 0
    },
    "developer_notes": {
      "coin_conversion": "2 koin = Rp1.",
      "gateway_payment": "Diisi jika masih ada nominal yang perlu dibayar melalui payment gateway."
    }
  }
}

Payment Status

Cari transaksi menggunakan partner_trx_id atau transaction_number.

Endpoint ini digunakan untuk mengecek status transaksi terbaru. Mitra disarankan menyediakan tombol cek status di aplikasi, dan dapat melakukan pengecekan berkala jika callback belum diterima setelah transaksi dibuat.

GET /client/v2/payment/status?partner_trx_id=OMNI-TRX-001
Authorization: Bearer o8coocg8k0ss4wcgk0o8........
X-SECRET-KEY: {partner_secret_key}
GET /client/v2/payment/status?transaction_number=PAY/KFI/8/2026/86
Authorization: Bearer o8coocg8k0ss4wcgk0o8........
X-SECRET-KEY: {partner_secret_key}

Success Response

{
  "status": true,
  "data": {
    "partner_trx_id": "OMNI-TRX-001",
    "transaction_number": "PAY/KFI/8/2026/86",
    "product": {
      "id": 15676,
      "code": "S20",
      "name": "TELKOMSEL REGULER 20.000",
      "description": "",
      "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"
    },
    "payment_status": "PAID",
    "transaction_status": "SUCCESS",
    "serial_number": "0214027100001032312531",
    "reference_number": null,
    "amount": {
      "total": 20000,
      "balance_used": 20000,
      "coin_used": 0,
      "coin_value_used": 0,
      "gateway_payment": 0
    },
    "payment_method": {
      "gateway": "SALDO",
      "type": "SALDO"
    },
    "created_at": "2026-08-18 11:15:20",
    "updated_at": "2026-08-18 11:15:25"
  },
  "message": "OK"
}

serial_number berisi SN atau token transaksi jika provider mengirim data tersebut. Untuk PLN Pascabayar dan PLN Non-Taglis, serial_number bernilai null karena provider mengirim nomor referensi, bukan SN/token. Gunakan reference_number jika provider mengirim nomor referensi transaksi.

Status Mapping

Daftar status berikut digunakan pada response Payment Status dan callback transaksi.

FieldValueArti
payment_statusUNPAIDPembayaran belum selesai.
payment_statusPAIDPembayaran sudah selesai.
payment_statusEXPIREDPembayaran melewati batas waktu.
payment_statusFAILEDPembayaran gagal.
transaction_statusWAITING_PAYMENTMenunggu pembayaran.
transaction_statusPROCESSINGTransaksi sedang diproses.
transaction_statusSUCCESSTransaksi sukses dan SN tersedia jika produk memiliki SN.
transaction_statusFAILEDTransaksi gagal.

Response Codes

HTTPKondisiMessage
200Metode pembayaran, payment, atau status payment berhasil.OK / Pembayaran berhasil diproses.
400Request tidak valid, callback URL belum valid, atau reference_id inquiry tidak dapat digunakan.Lihat message pada response.
401Secret key/token salah atau tidak sesuai.Lihat message pada response.
404Transaksi/payment/produk tidak ditemukan.Lihat message pada response.
409partner_trx_id sudah pernah digunakan.partner_trx_id sudah pernah digunakan. Gunakan ID transaksi mitra yang unik.
422Payment belum dapat diproses atau produk tidak tersedia.Lihat message pada response.