Navigation
Dokumentasi API

Semua permintaan dikirim dengan metode POST, body JSON, ke alamat https://charmurahh.com. Saldo akun kamu yang dipakai untuk membayar setiap pesanan.

Persiapan

  1. Punya akun di https://charmurahh.com dan saldonya sudah terisi.
  2. Buka menu Setting di halaman akun, lalu buat API Key.
  3. Kalau mau dibatasi, isi daftar IP server kamu di kolom IP. Dikosongkan berarti semua IP boleh.

Tanda tangan (sign)

Setiap permintaan wajib membawa api_key dan sign. Sign dibuat dengan HMAC-SHA256, isi pesannya beda per endpoint:

EndpointIsi pesan yang ditandatangani
/v1/ordersref_id
/v1/statusref_id
/v1/produkproduk
/v1/profileprofile
PHP     : $sign = hash_hmac('sha256', $ref_id, $api_key);
Node.js : const sign = crypto.createHmac('sha256', api_key).update(ref_id).digest('hex');
Python  : sign = hmac.new(api_key.encode(), ref_id.encode(), hashlib.sha256).hexdigest();

Daftar Produk

POST https://charmurahh.com/v1/produk

Hanya produk yang sedang tersedia yang dikirim. Isi games kalau mau satu kategori saja, misalnya CASH POINT BLANK atau CHAR POINT BLANK.

Kalau produknya punya harga grosir, grosir_status berisi Aktif, price_grosir berisi harga satuan versi grosir sesuai tier akun kamu, dan grosir_min_order berisi jumlah minimal supaya harga itu berlaku. Beli sebanyak minimal itu atau lebih, tagihannya otomatis memakai harga grosir.

price sudah harga final yang akan ditagih, termasuk potongan flash sale. Kalau produknya sedang flash sale, flash_sale bernilai true dan price_coret berisi harga sebelum potongan. max_order adalah batas jumlah pembelian per transaksi, cek ini sebelum pembeli membayar.

{
  "api_key": "API_KEY_KAMU",
  "sign": "hmac_sha256('produk', api_key)",
  "games": "CASH POINT BLANK"
}
{
  "data": {
    "status": true,
    "total": 2,
    "produk": [
      {
        "games": "CASH POINT BLANK",
        "product": "CASH PB 1200",
        "sku": "KODE-PRODUK",
        "price": 9150,
        "price_coret": 10150,
        "flash_sale": true,
        "stock": 102,
        "max_order": 5,
        "grosir_status": "Aktif",
        "price_grosir": 8500,
        "grosir_min_order": 2,
        "status": "Tersedia"
      }
    ],
    "message": "Produk ditemukan"
  }
}

Buat Pesanan

POST https://charmurahh.com/v1/orders

ParameterKeterangan
api_keyAPI Key akun kamu
signHMAC-SHA256 dari ref_id
ref_idNomor pesanan dari sisi kamu, harus unik
produkKode produk (sku) dari Daftar Produk
tujuanData tujuan. Kalau produknya butuh lebih dari satu data, pisahkan dengan tanda | contoh ID|PASSWORD
qtyOpsional, jumlah pembelian, default 1, tidak boleh melebihi max_order
no_waOpsional, nomor WhatsApp pembeli. Dikosongkan berarti dipakai nomor akun kamu
emailOpsional, email pembeli. Dikosongkan berarti dipakai email akun kamu
cb_urlOpsional, alamat untuk menerima pemberitahuan status

Parameter tujuan wajib diisi dan tidak boleh diisi tanda hubung, karena itu yang dipakai untuk memproses pesanan. Sedangkan no_wa dan email boleh dikosongkan, pesanan tetap masuk.

{
  "api_key": "API_KEY_KAMU",
  "sign": "hmac_sha256(ref_id, api_key)",
  "ref_id": "INV-0001",
  "produk": "KODE-PRODUK",
  "tujuan": "12345678",
  "qty": 1,
  "no_wa": "6281234567890",
  "email": "pembeli@email.com"
}
{
  "data": {
    "status": true,
    "ref_id": "INV-0001",
    "order_id": "TRX20260814123456",
    "order_status": "Processing",
    "produk": "CASH PB 1200",
    "sku": "KODE-PRODUK",
    "games": "CASH POINT BLANK",
    "qty": 1,
    "price": 9150,
    "tujuan": "12345678",
    "note": "Pesanan dalam proses",
    "last_saldo": 490850,
    "message": "Pesanan sedang diproses"
  }
}

Kalau ref_id yang sama dikirim ulang, sistem tidak membuat pesanan baru, tapi mengembalikan pesanan yang sudah ada. Kalau pesanan gagal diproses, saldo otomatis dikembalikan.

Cek Status

POST https://charmurahh.com/v1/status

Hasil pembelian (misalnya ID dan password akun) muncul di kolom note begitu pesanan selesai diproses.

{
  "api_key": "API_KEY_KAMU",
  "sign": "hmac_sha256(ref_id, api_key)",
  "ref_id": "INV-0001"
}
{
  "data": {
    "status": true,
    "ref_id": "INV-0001",
    "order_status": "Success",
    "note": "Id : kuks99 Pass : nmkvq457",
    "last_saldo": 490850,
    "message": "Pesanan berhasil"
  }
}

Callback (cb_url)

Kalau cb_url diisi waktu membuat pesanan, alamat itu akan dihubungi begitu pesanan mencapai status akhir, yaitu Success atau Canceled. Selama pesanan masih Processing tidak ada kiriman apa pun.

Kirimannya memakai metode POST dengan body JSON seperti di bawah, ditambah header X-Signature yang isinya HMAC-SHA256 dari ref_id memakai API Key kamu sebagai kunci. Hitung ulang nilai itu di sisi kamu untuk memastikan kirimannya benar dari sini.

POST https://alamat-webhook-kamu
Content-Type: application/json
X-Signature: hmac_sha256(ref_id, api_key)

{
  "data": {
    "ref_id": "INV-0001",
    "order_id": "TRX20260814123456",
    "order_status": "Success",
    "produk": "CASH PB 1200",
    "sku": "KODE-PRODUK",
    "games": "CASH POINT BLANK",
    "qty": 1,
    "price": 9150,
    "tujuan": "12345678",
    "note": "Id : kuks99 Pass : nmkvq457"
  }
}

Balas dengan kode 200 supaya kiriman ditandai berhasil. Batas tunggunya 10 detik. Kalau server kamu sedang mati atau membalas selain 200, kiriman itu tidak diulang otomatis, jadi tetap sediakan pengecekan lewat Cek Status sebagai cadangan.

Cek Saldo

POST https://charmurahh.com/v1/profile

{
  "api_key": "API_KEY_KAMU",
  "sign": "hmac_sha256('profile', api_key)"
}

Status Pesanan

order_statusArti
ProcessingPesanan sedang diproses
SuccessPesanan selesai, hasil ada di note
CanceledPesanan dibatalkan, saldo sudah dikembalikan

Kalau Gagal

Setiap kegagalan dijawab dengan status: false dan penjelasannya di message, misalnya API Key tidak dikenal, Sign tidak sesuai, Saldo tidak mencukupi, Produk tidak ditemukan, atau Format tujuan salah.