Semua permintaan dikirim dengan metode POST, body JSON, ke alamat https://charmurahh.com. Saldo akun kamu yang dipakai untuk membayar setiap pesanan.
Persiapan
- Punya akun di https://charmurahh.com dan saldonya sudah terisi.
- Buka menu Setting di halaman akun, lalu buat API Key.
- 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:
| Endpoint | Isi pesan yang ditandatangani |
| /v1/orders | ref_id |
| /v1/status | ref_id |
| /v1/produk | produk |
| /v1/profile | profile |
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
| Parameter | Keterangan |
| api_key | API Key akun kamu |
| sign | HMAC-SHA256 dari ref_id |
| ref_id | Nomor pesanan dari sisi kamu, harus unik |
| produk | Kode produk (sku) dari Daftar Produk |
| tujuan | Data tujuan. Kalau produknya butuh lebih dari satu data, pisahkan dengan tanda | contoh ID|PASSWORD |
| qty | Opsional, jumlah pembelian, default 1, tidak boleh melebihi max_order |
| no_wa | Opsional, nomor WhatsApp pembeli. Dikosongkan berarti dipakai nomor akun kamu |
| email | Opsional, email pembeli. Dikosongkan berarti dipakai email akun kamu |
| cb_url | Opsional, 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_status | Arti |
| Processing | Pesanan sedang diproses |
| Success | Pesanan selesai, hasil ada di note |
| Canceled | Pesanan 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.