API ONLINE · h2hgasstopup.vercel.app

Sambungkan sistem
top up kamu ke Fallshop H2H

Satu API untuk cek harga, kirim transaksi H2H, dan proses pembayaran QRIS otomatis. Dokumentasi ini isinya semua yang dibutuhkan developer untuk integrasi dari nol.

bash — trx.sh
$ curl -X POST h2hgasstopup.vercel.app/api/h2h/trx \
  -d '{"key":"***","kodeproduk":"TT5","tujuan":"0812xxxxxxx"}'

→ 200 OK
{
  "success": true,
  "idtrx": "1783576536488",
  "message": "TrxID#1285456 BERHASIL..."
}
Endpoint tersedia
5 routes
Waktu proses transaksi
<2detik
Mode integrasi
Langsung / QRIS
Mulai di Sini

Dua cara integrasi

Base URL untuk semua endpoint di bawah:

https://h2hgasstopup.vercel.app
MetodeCocok untukCara kerja
Transaksi Langsung Sistem yang sudah punya saldo/pembayaran sendiri Kirim satu request, transaksi diproses instan
Order + QRIS Butuh sistem pembayaran juga Customer scan QRIS, transaksi diproses otomatis setelah bayar

Autentikasi

Endpoint yang ditandai butuh key minta parameter key yang cocok dengan secret yang disepakati bersama admin Fallshop.

! Jangan bagikan key ke pihak yang tidak dipercaya — siapapun yang punya key ini bisa memproses transaksi langsung tanpa lewat pembayaran.

GETCek Harga / Daftar Produk

GET/api/produk

Tanpa autentikasi. Balikin semua produk yang tersedia beserta kodeproduk dan harga jual terbaru.

Response
{
  "products": [
    {
      "kodeproduk": "TT5",
      "nama": "Telkomsel Telepon Pas 5.000",
      "harga": 4745
    }
  ],
  "synced_at": 1752033600000
}
FieldKeterangan
kodeprodukDipakai di parameter kodeproduk saat transaksi
namaNama produk untuk ditampilkan ke customer
hargaHarga jual dalam Rupiah (integer)

POSTTransaksi Langsungbutuh key

POST/api/h2h/trx

Proses transaksi H2H instan, tanpa lewat QRIS. Cocok kalau sistem kamu sudah handle pembayaran/saldo sendiri.

Body
ParameterWajibContohKeterangan
keyYaabc123secretSecret autentikasi
kodeprodukYaTT5Kode produk dari endpoint Cek Produk
tujuanYa081234567890Nomor HP / ID pelanggan
idtrxTidakORD20250710001Reff ID dari sistem kamu, auto-generate kalau kosong
Request
curl -X POST https://h2hgasstopup.vercel.app/api/h2h/trx \
  -H "Content-Type: application/json" \
  -d '{
    "key": "abc123secret",
    "kodeproduk": "TT5",
    "tujuan": "081234567890"
  }'
Response sukses
{
  "success": true,
  "idtrx": "ORD20250710001",
  "message": "TrxID#1285456 ReffID#ORD20250710001 BERHASIL..."
}
Response gagal
{
  "success": false,
  "idtrx": "ORD20250710001",
  "message": "Saldo tidak cukup. Butuh: 4.795"
}
i Cek keberhasilan dari field success (boolean) — isi message adalah teks asli dari provider, formatnya tidak selalu konsisten.

POSTBuat Order + QRISpublik

POST/api/h2h/order

Bikin order yang wajib dibayar lewat QRIS dulu. Transaksi diproses otomatis di sisi kami setelah pembayaran terverifikasi. Tidak butuh key.

Body
ParameterWajibContohKeterangan
kodeprodukYaTT5Kode produk
tujuanYa081234567890Nomor HP / ID pelanggan
Response
{
  "id": "1783576536488",
  "amount": 4783,
  "amount_asli": 4745,
  "nama_produk": "Telkomsel Telepon Pas 5.000",
  "qr": "data:image/png;base64,...",
  "expired": 300
}
FieldKeterangan
idID order, dipakai untuk cek status
amountNominal PERSIS yang harus ditransfer (sudah + kode unik)
qrBase64 data URL, siap dipasang ke <img>
expiredBatas waktu pembayaran dalam detik
! Customer wajib transfer nominal PERSIS di field amount, bukan amount_asli. Kalau dibulatkan sendiri, sistem tidak bisa mencocokkan pembayaran otomatis.

GETCek Status Order

GET/api/qris/status?rrn={id}

Cek status pembayaran & transaksi H2H dari order yang dibuat lewat /api/h2h/order.

Response — masih menunggu
{ "status": "PENDING" }
Response — sudah dibayar & diproses
{
  "status": "SUCCESS",
  "data": {
    "kodeproduk": "TT5",
    "h2h_status": "SUKSES",
    "h2h_response": "TrxID#1285456 BERHASIL..."
  }
}
FieldKeterangan
statusPENDING / SUCCESS / EXPIRED — status pembayaran
data.h2h_statusMENUNGGU_PEMBAYARAN / SUKSES / GAGAL / ERROR
i Polling tiap 3-5 detik selama PENDING, berhenti begitu SUCCESS atau EXPIRED.

POSTCallback QRISinternal

POST/api/callbackqris/{secret}
! Dipanggil oleh provider QRIS (SMP Payment), bukan untuk dipanggil sistem eksternal. Dicantumkan untuk referensi arsitektur saja.

Kode Respon

StatusKeterangan
200Diterima & diproses — cek success/status di body untuk hasil aslinya
400Parameter tidak lengkap / tidak valid
401Key tidak valid / tidak dikirim
404Produk / data tidak ditemukan
405Method HTTP salah
500Kesalahan server / provider H2H
503Sistem sibuk (jarang terjadi)

Contoh Kode

PHP — Transaksi Langsung
<?php
$data = [
  "key" => "abc123secret",
  "kodeproduk" => "TT5",
  "tujuan" => "081234567890"
];

$ch = curl_init("https://h2hgasstopup.vercel.app/api/h2h/trx");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
JavaScript — Order + QRIS
const res = await fetch("https://h2hgasstopup.vercel.app/api/h2h/order", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ kodeproduk: "TT5", tujuan: "081234567890" })
});

const order = await res.json();
// order.amount = nominal persis yang harus ditransfer
// order.qr = base64 QR image