Dokumentasi Resmi Integrasi H2H • Sesuai Arsitektur Backend

Dokumentasi Teknis API & OtomaX H2H Center

Panduan komprehensif untuk menghubungkan sistem transaksi Anda dengan gateway kami. Mendukung dua jalur protokol utama: API JSON (REST POST) menggunakan kombinasi Member Code + API Key + Signature MD5, serta Jalur IP / OtomaX Engine (HTTP GET) menggunakan autentikasi Member Code + PIN OtomaX + Password OtomaX.

Base URL
http://localhost:3001/api/v1
Auth API JSON
Member Code + API Key
Auth OtomaX
Member + PIN + Password
Server IP Whitelist
203.194.114.233

Alamat Base URL Endpoint

Seluruh endpoint transaksi berjalan di atas base URL utama gateway. Untuk integrasi REST API, seluruh payload dikirim dengan metode POST dan header wajib Content-Type: application/json. Untuk modul OtomaX, request dikirim menggunakan metode HTTP GET dengan query parameter.

http://localhost:3001/api/v1

Otentikasi Kredensial & Signature

Sistem kami membedakan autentikasi sesuai dengan jalur yang Anda gunakan agar kompatibel dengan software server pulsa maupun backend website:

Jalur API JSON (REST)

  • member_code: Kode akun member unik Anda.
  • api_key: Kunci rahasia API Key akun.
  • sign: Tanda tangan digital hash MD5 per endpoint:
Saldo: md5(member_code + api_key + "saldo")
Deposit: md5(member_code + api_key + "deposit")
Service: md5(member_code + api_key + "service")
Order: md5(member_code + api_key + "order")
Status: md5(member_code + api_key + ref_id)

Jalur IP / OtomaX Engine

  • membercode: Kode member akun Anda (contoh: doMS1FCRBgbH).
  • pin: PIN OtomaX khusus akun Anda yang dikonfigurasikan di menu Integrasi dashboard.
  • password: Password OtomaX khusus akun Anda yang dikonfigurasikan di menu Integrasi dashboard.
  • ref_id: Ref ID unik dari software Anda (Idempotent aman, pengiriman ulang tidak menduplikasi pemotongan saldo).
Kredensial PIN & Password OtomaX dapat Anda atur secara mandiri melalui menu Integrasi API & OtomaX di portal reseller.

Ketentuan IP Server Whitelist

Sebagai perlindungan mutlak terhadap saldo akun Anda, sistem gateway backend memvalidasi IP pemanggil. Seluruh request dari API JSON maupun OtomaX hanya dilayani jika berasal dari IP publik yang telah didaftarkan di menu Integrasi dashboard.

Pastikan IP Server Gateway telah di-whitelist di firewall hosting/server Anda: 203.194.114.233
POST/api/v1/reseller/saldo

Mengambil nominal saldo aktif yang tersedia pada akun reseller Anda secara real-time.

ParameterTipeWajibKeterangan
member_codeStringYaMember Code unik dari dashboard akun Anda.
api_keyStringYaAPI Key dari dashboard akun Anda.
signStringYamd5(member_code + api_key + "saldo")
// Request Payload
{
  "member_code": "doMS1FCRBgbH",
  "api_key": "apikeyxxxxxxxxxxxx",
  "sign": "38a4b2c1e7f9a8d2e5b1c4f6a7d9e8b0"
}
// Response Berhasil
{
  "status": true,
  "msg": "Berhasil cek Saldo",
  "data": {
    "balance": 1500000
  }
}
POST/api/v1/reseller/deposit

Membuat tiket deposit saldo mitra melalui transfer bank dengan nominal acak unik otomatis.

ParameterTipeWajibKeterangan
member_codeStringYaMember Code unik Anda.
api_keyStringYaAPI Key akun Anda.
amountNumberYaNominal deposit (minimal 10.000, maksimal 50.000.000).
methodStringYaNama metode transfer bank (contoh: BCA, BRI).
signStringYamd5(member_code + api_key + "deposit")
// Request Payload
{
  "member_code": "doMS1FCRBgbH",
  "api_key": "apikeyxxxxxxxxxxxx",
  "amount": 100000,
  "method": "BCA",
  "sign": "a91b2c3d4e5f60718293a4b5c6d7e8f9"
}
// Response Berhasil
{
  "status": true,
  "msg": "Berhasil Topup Saldo",
  "data": {
    "invoice": "DEP20261021142551205",
    "bank": "BANK BCA",
    "amount": 100312,
    "norek": "1234567890",
    "an": "PT GATEWAY INDONESIA",
    "date_create": "2026-10-21T07:25:51.000Z"
  }
}
POST/api/v1/reseller/service

Mengambil katalog produk digital, kode SKU, brand, kategori, dan harga sesuai tier akun Anda.

// Request Payload
{
  "member_code": "doMS1FCRBgbH",
  "api_key": "apikeyxxxxxxxxxxxx",
  "sign": "f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3"
}
// Response Berhasil
{
  "status": true,
  "msg": "Berhasil mendapatkan data layanan",
  "data": [
    {
      "product": "Free Fire 5 Diamond",
      "category": "Games",
      "brand": "Free Fire",
      "type": "Diamonds",
      "price": 825,
      "code": "FF5",
      "status": "On"
    }
  ]
}
POST/api/v1/reseller/order

Mengeksekusi transaksi pembelian atau topup dengan proteksi race-condition dan validasi 3 lapis.

ParameterTipeWajibKeterangan
member_codeStringYaMember Code unik akun Anda.
api_keyStringYaAPI Key rahasia akun Anda.
ref_idStringYaNomor referensi unik transaksi Anda.
codeStringYaKode produk resmi / SKU (contoh: FF5).
user_idStringYaNomor tujuan / Player ID pelanggan.
zone_idStringOpsionalZone ID / Server ID (isi 1 jika tidak diperlukan).
signStringYamd5(member_code + api_key + "order")
// Request Payload
{
  "member_code": "doMS1FCRBgbH",
  "api_key": "apikeyxxxxxxxxxxxx",
  "ref_id": "ORDER-20261021001",
  "code": "FF5",
  "user_id": "662444522",
  "zone_id": "1",
  "sign": "2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f"
}
// Response Berhasil
{
  "status": true,
  "msg": "Pesanan berhasil! Pesanan sedang diproses",
  "data": {
    "ref_id": "ORDER-20261021001",
    "product": "Free Fire 5 Diamond",
    "user_id": "662444522",
    "zone_id": "1",
    "status": "Processing",
    "note": "Pesanan sedang di proses."
  }
}
POST/api/v1/reseller/status

Mengecek status terkini transaksi beserta serial number (SN) berdasarkan ref_id pesanan.

// Request Payload
{
  "member_code": "doMS1FCRBgbH",
  "api_key": "apikeyxxxxxxxxxxxx",
  "ref_id": "ORDER-20261021001",
  "sign": "d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0"
}
// Response Berhasil
{
  "status": true,
  "msg": "Detail transaksi berhasil didapatkan",
  "data": {
    "ref_id": "ORDER-20261021001",
    "product": "Free Fire 5 Diamond",
    "user_id": "662444522",
    "zone_id": "",
    "status": "Success",
    "note": "kipli tzy/662444522/Free Fire 5 Diamond SN: 639012391"
  }
}

Daftar Respon Gagal (API JSON)

Format respon JSON standar yang dikembalikan oleh backend saat validasi payload gagal atau sistem menolak request.

Kredensial Kosong
{
  "status": false,
  "msg": "Api Key dan Member Code tidak boleh kosong"
}
Kredensial Tidak Valid
{
  "status": false,
  "msg": "Api Key dan Member Code tidak valid"
}
Signature Tidak Valid
{
  "status": false,
  "msg": "Signature Tidak Valid."
}
Ref ID Duplikat
{
  "status": false,
  "msg": "ref_id sudah tersedia pada sistem kami"
}
Kode Produk Tidak Ada
{
  "status": false,
  "msg": "code tidak ditemukan atau sedang gangguan"
}
Saldo Tidak Cukup
{
  "status": false,
  "msg": "Saldo anda tidak mencukupi"
}
Ref ID Tidak Ditemukan
{
  "status": false,
  "msg": "ref_id tidak ditemukan"
}
Stok Habis
{
  "status": false,
  "msg": "Stok produk habis / tidak mencukupi"
}
IP Tidak Terdaftar
{
  "status": false,
  "msg": "IP Anda tidak kami kenali: 125.1.xxxxxx"
}
GET/api/v1/otomax/transaction

Modul Standar OtomaX IP GET (membercode, pin, password)

Jalur transaksi untuk software server pulsa seperti OtomaX, IRS, Flash Machine, dll. Menggunakan autentikasi membercode + pin + password tanpa JSON, dengan balasan baris teks biasa (plaintext). Mendukung auto-inquiry status transaksi secara aman dan idempotent berdasarkan ref_id.

ParameterTipeWajibKeterangan
membercodeStringYaKode unik member reseller (contoh: doMS1FCRBgbH). Mendukung alias member_code / memberID.
pinStringYaPIN khusus OtomaX yang diatur di menu Integrasi akun Anda (contoh: 1234).
passwordStringYaPassword khusus OtomaX yang diatur di menu Integrasi akun Anda.
ref_idStringYaNomor referensi unik transaksi Anda. Sistem Idempotent: Jika ref_id sama dikirimkan ulang, server otomatis mengembalikan status pesanan tanpa memotong saldo berulang.
produkStringYaKode SKU produk (contoh: FF5). Mendukung alias code / sku.
tujuanStringYaNomor tujuan / Player ID game pelanggan. Mendukung format combo: 662444522(2024) atau 662444522|2024.
serveridStringOpsionalServer ID / Zone ID jika tidak digabungkan di parameter tujuan.
// Contoh URL Request HTTP GET:
http://localhost:3001/api/v1/otomax/transaction?membercode=doMS1FCRBgbH&pin=1234&password=secretotomax&ref_id=TRX99201&produk=FF5&tujuan=662444522
// Balasan Respon Server (Sedang Di Proses):
#Request TRX #TRX1777230637703635546. REFID#TRX99201. Sedang Di Proses. Harga:825. Sisa Saldo:1499175. KP:FF5.662444522 Tanggal:2026-10-21 14:52:08
// Balasan Respon Server (SUKSES):
#Request TRX #TRX6306895306374681318. REFID#TRX99201. SUKSES, SN:kipli tzy/662444522/Free Fire 5 Diamond. Harga:825. Saldo:1499175. KP:FF5.662444522 Tanggal:21/10/2026 14.52.36

Format Respon Gagal IP / OtomaX

Balasan baris teks dari endpoint IP jika kredensial OtomaX salah, parameter tidak lengkap, atau transaksi ditolak.

Contoh Gagal #1
GAGAL. Parameter tidak lengkap (membercode, pin, password, ref_id, produk, tujuan wajib diisi)
Contoh Gagal #2
GAGAL. Member tidak valid
Contoh Gagal #3
GAGAL. PIN atau Password OtomaX tidak valid
Contoh Gagal #4
GAGAL. Kredensial PIN & Password OtomaX belum diatur di akun Anda
Contoh Gagal #5
GAGAL. Produk tidak ditemukan atau tidak tersedia
Contoh Gagal #6
GAGAL. Saldo tidak cukup
Contoh Gagal #7
#Request TRX #TRX7536011291065731020. REFID#TRX99201. GAGAL, SN:Invalid ID. Harga:825. Saldo:1499175. KP:FF5.662444 Tanggal:21/10/2026 14.55.56

Webhook POST Callback (Real-Time)

Gateway mengirimkan notifikasi HTTP POST ke URL Webhook Anda saat status transaksi dari upstream berubah.

// Payload Transaksi Sukses
{
  "status": "Success",
  "message": "Transaksi Berhasil",
  "sn": "kipli tzy/662444522/Free Fire 5 Diamond",
  "ref_id": "ORDER-20261021001",
  "order_id": "API4092128335991436281",
  "produk": "FF5",
  "sisa_saldo": 1499175,
  "price": 825
}
// Payload Transaksi Gagal
{
  "status": "Cancelled",
  "message": "Transaksi Gagal",
  "sn": "Invalid ID",
  "ref_id": "ORDER-20261021001",
  "order_id": "API4092128335991436281",
  "produk": "FF5",
  "sisa_saldo": 1500000,
  "price": 825
}

Report Transaksi IP / OtomaX (GET Callback)

Report dikirim via HTTP GET request ke URL Report IP yang Anda konfigurasikan di menu Integrasi.

// Contoh URL Callback Sukses:
https://url-mitra.com/report?serverid=TRX6306895306374681318&clientid=87291725371672631&statuscode=1&kp=FF5&msisdn=662444522&sn=kipli%20tzy/662444522/Free%20Fire%205%20Diamond&msg=%23Request%20TRX%20%23TRX6306895306374681318.%20REFID%2387291725371672631.%20SUKSES
// Contoh URL Callback Gagal:
https://url-mitra.com/report?serverid=TRX7536011291065731020&clientid=87291725371672631&statuscode=0&kp=FF5&msisdn=662444&sn=Invalid%20ID&msg=%23Request%20TRX%20%23TRX7536011291065731020.%20REFID%2387291725371672631.%20GAGAL

Tabel Status Transaksi

StatusKeteranganKondisi Saldo Akun
Pending / ProcessingPesanan sedang dalam antrean atau menunggu balasan dari supplier upstream.Saldo dipotong sementara.
SuccessPesanan telah berhasil dan Serial Number (SN) resmi telah diterbitkan.Pemotongan saldo bersifat permanen.
Canceled / FailedPesanan gagal diproses karena nomor tujuan salah atau supplier gangguan.Saldo dikembalikan utuh (Auto-Refund).