API to API
Payment
Metode pembayaran, create payment, dan pengecekan status transaksi.
Payment
Payment membuat transaksi Miharogames dari sistem mitra. Skema pembayaran bisa saldo, koin, payment gateway, atau kombinasi sesuai response checkout.
Payment Methods
GET /client/v2/payment/methods
Authorization: Bearer {access_token}
X-SECRET-KEY: {partner_secret_key}
payment_method_id = 0 dipakai untuk pembayaran internal saldo/koin.
{
"status": true,
"data": [
{
"id": 9,
"code": "QRIS",
"name": "QRIS",
"group": "E-Wallet",
"payment_gateway": "MIDTRANS",
"payment_type": "QRIS",
"image": "qris-logo.png",
"minimum_payment": 1000,
"service_fee": {
"type": "percent",
"amount": 0.7
}
},
{
"id": 12,
"code": "VA",
"name": "Virtual Account (VA)",
"group": "Virtual Account (VA)",
"payment_gateway": "MIDTRANS",
"payment_type": "Virtual Account (VA)",
"image": "virtual-account-banks.png",
"minimum_payment": 10000,
"service_fee": {
"type": "rupiah",
"amount": 4000
}
}
],
"message": "OK"
}
Supported Gateway
| ID | Code | Gateway | Type |
|---|---|---|---|
9 | QRIS | MIDTRANS | QRIS |
1 | GOPAY | MIDTRANS | Gopay |
4 | SHOPEEPAY | MIDTRANS | ShopeePay |
5 | OVO | ESPAY | Ovo |
6 | DANA | DANA | DANA |
12 | VA | MIDTRANS | Virtual Account (VA) |
2 | ALFAMART | ESPAY | Alfamart |
Create Payment
POST /client/v2/payment
Authorization: Bearer {access_token}
X-SECRET-KEY: {partner_secret_key}
Content-Type: application/json
{
"product_id": 22046,
"msisdn": "082340378657",
"payment_method_id": 0,
"promotion_id": null,
"use_balance": true,
"use_coin": false,
"parts": null,
"partner_trx_id": "OMNI-TRX-001",
"shift_code": "SHIFT-001"
}
Catatan:
partner_trx_idadalah nomor transaksi dari sistem mitra.- Kombinasi
id_mitra + partner_trx_idharus unik. shift_codeopsional untuk kebutuhan shift/operator mitra.
Payment Response
{
"status": true,
"message": "Pembayaran berhasil diproses.",
"data": {
"transaction": {
"id": 9381,
"transaction_number": "PAY/KFI/8/2026/54",
"status": "PROCESSING",
"payment_status": "PAID",
"amount": {
"total": 2000,
"balance_used": 2000,
"coin_used": 0,
"coin_value_used": 0,
"gateway_payment": 0
}
},
"payment_method": {
"id": 0,
"code": "BALANCE",
"name": "Saldo/Koin",
"gateway": "SALDO",
"type": "SALDO"
},
"payment": {
"is_required": false,
"token": null,
"redirect_url": null,
"amount": 0
}
}
}
Payment Status
GET /client/v2/payment/status?partner_trx_id=OMNI-TRX-001
Authorization: Bearer {access_token}
X-SECRET-KEY: {partner_secret_key}
Alternatif lookup memakai nomor transaksi Miharogames.
GET /client/v2/payment/status?transaction_number=PAY/KFI/8/2026/54
Authorization: Bearer {access_token}
X-SECRET-KEY: {partner_secret_key}
{
"status": true,
"data": {
"partner_trx_id": "OMNI-TRX-001",
"transaction_number": "PAY/KFI/8/2026/54",
"payment_status": "PAID",
"transaction_status": "SUCCESS",
"serial_number": "0214073400005825489229",
"product": {
"id": 22046,
"code": "S20",
"name": "[TESTING] PULSA TELKOMSEL 2.000 (SUKSES)"
},
"operator": {
"id": 1,
"name": "Telkomsel"
}
},
"message": "OK"
}
Status Mapping
| Field | Value | Meaning |
|---|---|---|
payment_status | UNPAID | Pembayaran belum selesai. |
payment_status | PAID | Pembayaran sudah berhasil dari saldo/koin/PG. |
payment_status | EXPIRED | Pembayaran melewati batas waktu. |
transaction_status | PROCESSING | Transaksi sedang diproses ke supplier. |
transaction_status | SUCCESS | Transaksi sukses dan SN tersedia jika ada. |
transaction_status | FAILED | Transaksi gagal dan refund mengikuti flow transaksi. |
Error Conditions
| HTTP | Endpoint | Kondisi | Message |
|---|---|---|---|
401 | Semua payment endpoint | Secret key/token salah. | Akses ditolak..., Token wajib diisi., atau Token tidak valid. |
400 | Create Payment | Produk kosong. | Produk wajib dipilih. |
400 | Create Payment | Nomor tujuan kosong. | Nomor tujuan wajib diisi. |
400 | Create Payment | Metode pembayaran kosong. | Metode pembayaran wajib dipilih. |
400 | Create Payment | partner_trx_id kosong atau lebih dari 50 karakter. | ID transaksi mitra wajib diisi. atau ID transaksi mitra maksimal 50 karakter. |
400 | Create Payment | shift_code lebih dari 50 karakter. | Kode shift maksimal 50 karakter. |
400 | Create Payment | Metode payment gateway tidak terdaftar. | Metode pembayaran tidak tersedia. |
400 | Create Payment | Internal payment tanpa saldo/koin. | Untuk metode pembayaran internal, pilih saldo atau koin terlebih dahulu. |
409 | Create Payment | partner_trx_id sudah pernah dipakai mitra. | partner_trx_id sudah pernah digunakan. Gunakan ID transaksi mitra yang unik. |
422 | Create Payment | Legacy payment gagal. | Mengikuti message dari proses payment. |
400 | Payment Status | Parameter lookup kosong. | partner_trx_id atau transaction_number wajib diisi. |
404 | Payment Status | Transaksi tidak ditemukan. | Transaksi tidak ditemukan. |
404 | Payment Status | Payment belum terbentuk. | Transaksi payment belum terbentuk. |