Tutorial Lengkap Integrasi API JagoanItem
Tutorial ini dibuat untuk pemilik website topup game, aplikasi kasir, bot Telegram, atau sistem H2H yang ingin menyambungkan produk JagoanItem ke sistem sendiri. Hasil akhirnya: website kamu bisa menarik daftar layanan, membuat pesanan, dan memantau status transaksi secara otomatis melalui API JagoanItem.
1. Persiapan Awal
Sebelum mulai koding, siapkan beberapa hal berikut:
- Akun JagoanItem dengan role minimal Basic, atau role Gold/Platinum jika ingin harga khusus.
- API ID dan API KEY dari halaman akun/reseller.
- Saldo yang cukup untuk melakukan transaksi.
- IP server kamu sebaiknya dimasukkan ke IP Whitelist agar keamanan lebih baik.
- Domain website kamu, contoh:
https://domainanda.com.
2. Dasar Autentikasi API
Semua endpoint API JagoanItem menggunakan method POST. Setiap request wajib mengirim parameter:
api_id: ID akun API kamu.api_key: KEY akun API kamu.signature: hash darimd5(api_id + api_key).
Rumus signature:
signature = md5(api_id + api_key)
Contoh:
API_ID = abc123
API_KEY = secret123
SIGNATURE = md5("abc123secret123")
Contoh PHP untuk membuat signature:
<?php
$apiId = 'API_ID_KAMU';
$apiKey = 'API_KEY_KAMU';
$signature = md5($apiId . $apiKey);
echo $signature;
Penting: jangan hardcode API KEY di JavaScript frontend. Simpan API KEY di backend/server kamu.
3. Daftar Endpoint API JagoanItem
Base URL yang digunakan pada tutorial ini:
https://jagoanitem.com/api
A. Profile
Endpoint:
POST https://jagoanitem.com/api/profile
Fungsi: mengecek apakah API ID/API KEY valid, melihat saldo, dan role akun.
B. Service
Endpoint:
POST https://jagoanitem.com/api/service
Fungsi: menarik daftar layanan non-SMM seperti topup game, voucher, dan produk digital lain.
C. Service SMM
Endpoint:
POST https://jagoanitem.com/api/service/smm
Fungsi: menarik daftar layanan sosial media seperti followers, likes, views, subscribers, dan layanan SMM lain.
Response service SMM sekarang sudah mengandung metadata layanan seperti:
min: jumlah minimal order.max: jumlah maksimal order.catatan: deskripsi layanan dari provider.average: estimasi proses.refill: status ketersediaan garansi/refill.
D. Order
Endpoint:
POST https://jagoanitem.com/api/order
Fungsi: membuat transaksi ke JagoanItem. Order akan memotong saldo sesuai role harga akun API kamu.
E. Status
Endpoint:
POST https://jagoanitem.com/api/status
Fungsi: mengecek status order. Kamu bisa memakai order_id sistem JagoanItem atau order_id milik sistem reseller.
F. Get Everything
Endpoint:
POST https://jagoanitem.com/api/get-everything
Fungsi: validasi nickname, region MLBB, dan ID pelanggan PLN secara real-time.
4. Contoh PHP cURL Lengkap
Simpan kode berikut sebagai JagoanItemApi.php atau sesuaikan dengan framework kamu.
<?php
class JagoanItemApi
{
private $baseUrl = 'https://jagoanitem.com/api';
private $apiId;
private $apiKey;
public function __construct($apiId, $apiKey)
{
$this->apiId = $apiId;
$this->apiKey = $apiKey;
}
private function signature()
{
return md5($this->apiId . $this->apiKey);
}
private function request($endpoint, $data = [])
{
$payload = array_merge($data, [
'api_id' => $this->apiId,
'api_key' => $this->apiKey,
'signature' => $this->signature(),
]);
$ch = curl_init($this->baseUrl . $endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($payload),
CURLOPT_HTTPHEADER => [
'Content-Type: application/x-www-form-urlencoded',
],
CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
if ($response === false) {
$error = curl_error($ch);
curl_close($ch);
return [
'result' => false,
'msg' => 'cURL error: ' . $error,
'data' => null,
];
}
curl_close($ch);
return json_decode($response, true);
}
public function profile()
{
return $this->request('/profile');
}
public function service()
{
return $this->request('/service');
}
public function serviceSmm()
{
return $this->request('/service/smm');
}
public function order($orderIdReseller, $serviceId, $targetId, $targetServer = '')
{
return $this->request('/order', [
'order_id' => $orderIdReseller,
'service_id' => $serviceId,
'target_id' => $targetId,
'target_server' => $targetServer,
]);
}
public function status($orderId)
{
return $this->request('/status', [
'order_id' => $orderId,
]);
}
public function getEverything($type, $targetId, $server = '', $gameCode = '')
{
return $this->request('/get-everything', [
'type' => $type,
'target_id' => $targetId,
'target_server' => $server,
'game_code' => $gameCode,
]);
}
}
$api = new JagoanItemApi('API_ID_KAMU', 'API_KEY_KAMU');
// 1. Cek profile
$profile = $api->profile();
if (!empty($profile['result'])) {
echo "Saldo: " . number_format($profile['data']['balance'], 0, ',', '.') . "
";
}
// 2. Ambil layanan game/digital
$services = $api->service();
foreach ($services['data'] as $item) {
echo $item['kode_produk'] . " | " . $item['nama_layanan'] . " | Rp" . $item['harga']['basic'] . "
";
}
// 3. Ambil layanan SMM
$smmServices = $api->serviceSmm();
foreach ($smmServices['data'] as $item) {
echo $item['kode_produk'] . " | " . $item['nama_layanan'] . " | Min " . ($item['min'] ?? '-') . " | Max " . ($item['max'] ?? '-') . "
";
}
5. Contoh Membuat Order
Contoh order dari sistem website kamu:
<?php
$orderId = 'WEB-' . date('YmdHis') . '-' . rand(1000, 9999);
$create = $api->order(
$orderId,
'FF5-S13',
'123456789',
'2201'
);
if (!empty($create['result'])) {
$orderSystemId = $create['data']['order_id'];
$resellerOrderId = $create['data']['reseller_order_id'];
$status = $create['data']['status'];
echo "Order dibuat: " . $orderSystemId . "
";
echo "ID reseller: " . $resellerOrderId . "
";
} else {
echo "Gagal: " . $create['msg'];
}
Setelah order berhasil, simpan 3 hal ini di database kamu:
order_iddari JagoanItem, contohJIIapi....reseller_order_iddari sistem website kamu.trx_idjika ada, untuk pencocokan internal.
6. Contoh Cek Status Order
Rekomendasi: jalankan cronjob setiap 1-3 menit agar status order di website kamu otomatis update.
<?php
$status = $api->status($orderSystemId);
if (!empty($status['result'])) {
$statusBaru = $status['data']['status'];
$note = $status['data']['note'];
echo "Status: " . $statusBaru . "
";
echo "Catatan: " . $note . "
";
if ($statusBaru === 'Sukses') {
// tandai order sukses di database website kamu
} elseif ($statusBaru === 'Gagal') {
// tandai order gagal, kembalikan saldo, atau refund
}
} else {
echo "Gagal cek status: " . $status['msg'];
}
7. Contoh cURL Shell / Terminal
Cek profile:
API_ID="API_ID_KAMU"
API_KEY="API_KEY_KAMU"
SIGNATURE="$(printf '%s%s' "$API_ID" "$API_KEY" | md5sum | awk '{print $1}')"
curl -s -X POST https://jagoanitem.com/api/profile \
-d "api_id=$API_ID" \
-d "api_key=$API_KEY" \
-d "signature=$SIGNATURE"
Ambil layanan:
curl -s -X POST https://jagoanitem.com/api/service \
-d "api_id=$API_ID" \
-d "api_key=$API_KEY" \
-d "signature=$SIGNATURE"
Ambil layanan SMM:
curl -s -X POST https://jagoanitem.com/api/service/smm \
-d "api_id=$API_ID" \
-d "api_key=$API_KEY" \
-d "signature=$SIGNATURE"
Buat order:
curl -s -X POST https://jagoanitem.com/api/order \
-d "api_id=$API_ID" \
-d "api_key=$API_KEY" \
-d "signature=$SIGNATURE" \
-d "order_id=WEB-001" \
-d "service_id=FF5-S13" \
-d "target_id=123456789" \
-d "target_server=2201"
Cek status:
curl -s -X POST https://jagoanitem.com/api/status \
-d "api_id=$API_ID" \
-d "api_key=$API_KEY" \
-d "signature=$SIGNATURE" \
-d "order_id=WEB-001"
8. Validasi Target dengan Get Everything
Gunakan endpoint ini untuk validasi nickname game, region MLBB, atau ID pelanggan PLN sebelum order dibuat.
$check = $api->getEverything('region', '123456789', '2201');
if (!empty($check['result'])) {
print_r($check['data']);
} else {
echo "Gagal validasi: " . $check['msg'];
}
Pilihan type:
nickname: cek nickname game.region: cek region/server MLBB.pln: cek ID pelanggan PLN.
9. IP Whitelist
Jika kamu mengisi IP Whitelist di akun JagoanItem, maka semua endpoint API akan menolak IP di luar daftar whitelist. Ini sangat disarankan untuk keamanan.
Contoh isi whitelist:
203.0.113.10
203.0.113.11
Contoh respons jika IP ditolak:
{
"result": false,
"msg": "IP 203.0.113.99 tidak ada dalam whitelist"
}
10. Format Response Standar
Sebagian besar endpoint memakai format:
{
"result": true,
"msg": "pesan",
"data": []
}
Contoh gagal:
{
"result": false,
"msg": "API ID atau API KEY tidak ditemukan"
}
Selalu cek result terlebih dahulu sebelum membaca data.
11. Kesalahan yang Sering Terjadi
1. Signature salah
Signature harus dibuat di server dengan rumus md5(api_id + api_key). Jangan pakai API KEY di frontend publik.
2. Endpoint dikirim pakai GET
Semua endpoint API wajib method POST.
3. order_id duplikat
System menyimpan reseller_order_id dari kamu. Jika order ID sudah dipakai, response menolak order agar tidak double order. Gunakan ID unik untuk setiap transaksi.
4. Saldo tidak cukup
Cek endpoint /api/profile berkala. Kamu bisa simpan saldo di cache database lokal untuk menampilkan ke user sebelum order.
5. Tidak menyimpan order_id sistem
Simpan data.order_id yang dikembalikan API JagoanItem, bukan hanya ID dari sistem kamu. Untuk cek status, ID sistem JagoanItem adalah ID yang paling aman digunakan.
12. Alur Sistem yang Disarankan
- User memilih produk di website kamu.
- Website kamu menampilkan harga dari API JagoanItem + margin.
- User memasukkan target ID/server.
- Opsional: validasi target dengan
/api/get-everything. - User membayar di website kamu.
- Setelah pembayaran berhasil, website kamu mengirim order ke
/api/order. - Simpan
order_idsistem,reseller_order_id, status, dan catatan ke database. - Jalankan cronjob
/api/statusuntuk update status otomatis. - Jika status Sukses, tandai order selesai.
- Jika status Gagal, refund user atau lanjut proses manual.
13. Checklist Integrasi
- API ID dan API KEY sudah diisi di konfigurasi server.
- IP server sudah di-whitelist.
- Endpoint profile bisa mengembalikan saldo.
- Endpoint service bisa menarik daftar produk.
- Endpoint service/smm bisa menarik layanan sosial media.
- Endpoint order berhasil saat saldo cukup.
- Website menyimpan
order_iddari JagoanItem. - Cronjob status berjalan rutin.
- Website menampilkan pesan error yang jelas ke user.
- API KEY tidak pernah terlihat di JavaScript/browser.
14. Kesimpulan
Integrasi API JagoanItem relatif simpel karena semua endpoint memakai format standar POST + form data. Kuncinya ada di 3 hal: signature yang benar, penyimpanan order ID yang rapi, dan cronjob status yang konsisten. Dengan begitu website kamu bisa menjadi sistem H2H yang lebih otomatis, cepat, dan aman.
Pelajari dokumentasi teknis lengkap di Dokumentasi API JagoanItem.