Portal →
docs BINANCE (Publik) Official Gateway

docs BINANCE (Publik)

Panduan integrasi otomasi pembayaran kripto Binance Pay (Publik) untuk Bot Telegram, Web Store, dan script toko online Anda. Menerima saldo USDT sesama akun Binance secara instan tanpa potongan biaya gas (zero gas fee). Layanan ini menggunakan akun Binance resmi dari Admin JANSTORE, sehingga Anda tidak perlu menghubungkan akun Binance atau membuat API Key sendiri. Dana pembayaran yang masuk otomatis terdeteksi dan dikreditkan langsung ke saldo akun portal Anda.

Base URL Gateway https://janspayment.com

Pengenalan

Layanan Payment Gateway Binance Pay (Publik) memudahkan toko online dan bot Anda menerima pembayaran kripto USDT secara otomatis tanpa kerumitan teknis dompet kripto.

Fitur ini bekerja secara Shared (Disediakan oleh Admin) mirip seperti QRIS Publik:

  • Bebas Konfigurasi: Anda TIDAK PERLU memiliki akun Binance, tidak perlu mendaftarkan API Key Binance, dan tidak perlu setting IP Whitelist.
  • Kode Unik Desimal Otomatis: Gateway otomatis menambahkan kode unik desimal (contoh: 5.04 USDT) agar transfer pembeli dapat diverifikasi secara instan tanpa perlu memasukkan Order ID.
  • Auto-Credit Saldo Portal: Setiap ada pembayaran sukses, saldo Rupiah (IDR) akun portal Anda langsung bertambah otomatis secara real-time.
  • Bebas Biaya Gas (Zero Gas Fee): Transfer sesama pengguna Binance Pay 100% bebas biaya transfer blockchain.

Bebas Biaya Gas (Zero Gas)

Transfer instan sesama akun Binance menggunakan Binance Pay ID tanpa potongan biaya gas blockchain.

Deteksi Polling Otomatis

Bot atau web store mendeteksi pembayaran secara otomatis via polling mutasi kode unik desimal.

Auto-Credit Saldo Portal

Dana kripto USDT otomatis dikonversi dan langsung menambah saldo IDR akun portal toko Anda.

Autentikasi API

Setiap pemanggilan API ke Payment Gateway wajib menyertakan API Key Penyewa Anda pada HTTP Header Authorization: Bearer <API_KEY>.

HTTP Request Header
Authorization: Bearer js_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

๐Ÿ’ก API Key Anda dapat dilihat dan disalin di Portal Penyewa pada menu Pengaturan Akun.

Alur Transaksi Binance Pay Publik

Integrasi sangat mudah dan hanya memerlukan 4 langkah sederhana:

1
Bot / Web Store Membuat Tagihan

Aplikasi Anda memanggil endpoint POST /binance/create dengan nominal pesanan (bisa dalam Rupiah atau USDT).

2
Tampilkan Nominal Unik & Pay ID Admin ke Pembeli

Gateway merespons dengan total nominal presisi USDT (contoh: 5.04 USDT), alamat Binance Pay ID Admin, dan URL gambar QR Code.

3
Pembeli Melakukan Transfer di Aplikasi Binance

Pembeli membuka aplikasi Binance → menu Pay / Kirim → memasukkan Pay ID Admin → memasukkan nominal presisi 5.04 USDT → kirim.

4
Sistem Gateway Mendeteksi Pembayaran & Saldo Bertambah

Sistem gateway otomatis mencocokkan mutasi masuk. Status berubah menjadi paid, saldo portal toko Anda langsung dikreditkan, dan webhook callback otomatis dikirim ke server Anda (atau bot dapat melakukan polling status).

Endpoint Publik

POST /binance/create

Membuat tagihan transaksi Binance Pay baru menggunakan akun Admin Binance. Sistem secara otomatis menambahkan kode unik desimal (misal: +0.04 USDT) agar mutasi dapat dideteksi secara otomatis tanpa pembeli perlu mengetikkan nomor Order ID.

ParameterTipeWajib?Deskripsi
amount Number Wajib Nominal pembayaran (dalam Rupiah jika is_idr: true, atau dalam USDT).
is_idr Boolean Opsional Set true jika nilai amount dalam mata uang Rupiah (otomatis dikonversi ke USDT berdasarkan kurs rate aktif). Default: true.
ref String Opsional Nomor referensi / Invoice ID dari toko atau bot Anda (misal: ORDER-99182).
callback_url String Opsional URL webhook server Anda untuk menerima notifikasi otomatis seketika pembayaran lunas.
note String Opsional Catatan tambahan transaksi.
Request Body (JSON)
{
  "amount": 80000,
  "is_idr": true,
  "ref": "INV-89218",
  "callback_url": "https://tokosaya.com/webhook/binance"
}
Response (200 OK)
{
  "success": true,
  "message": "Transaksi Binance Pay berhasil dibuat",
  "data": {
    "payment_id": "bin_9a8f27c81b29a1b2",
    "amount": 5.04,
    "requested_usdt": 5.0,
    "requested_idr": 80000,
    "unique_code": 0.04,
    "currency": "USDT",
    "rate_idr": 16000,
    "pay_id": "463668194",
    "qr_url": "https://janspayment.com/qr/bin_xxx.png",
    "expiry_time": "2026-10-21T15:30:00.000Z",
    "mode": "shared_admin",
    "ref": "INV-89218",
    "instructions": "Transfer tepat 5.04 USDT ke Binance Pay ID: 463668194. Sistem otomatis mendeteksi mutasi dalam beberapa detik."
  }
}

GET /binance/check/:payment_id

Mengecek status pembayaran transaksi Binance Pay berdasarkan payment_id yang didapat saat membuat transaksi.

Response Saat Menunggu Pembayaran (Status: pending)
{
  "success": true,
  "message": "Status transaksi Binance Pay",
  "data": {
    "payment_id": "bin_9a8f27c81b29a1b2",
    "status": "pending",
    "amount": 5.04,
    "currency": "USDT",
    "requested_usdt": 5.0,
    "credit_amount_idr": 80000
  }
}
Response Saat Pembayaran Berhasil (Status: paid)
{
  "success": true,
  "message": "Status transaksi Binance Pay",
  "data": {
    "payment_id": "bin_9a8f27c81b29a1b2",
    "status": "paid",
    "amount": 5.04,
    "currency": "USDT",
    "requested_usdt": 5.0,
    "credit_amount_idr": 80000,
    "paid_at": "2026-10-21T15:20:15.000Z",
    "matched_order_no": "281903829103"
  }
}

GET /binance/history

Mengambil daftar riwayat seluruh transaksi Binance Pay milik akun toko Anda.

Query ParameterTipeDefaultDeskripsi
limitNumber50Jumlah transaksi yang ingin ditampilkan (maksimal 100).
statusStringโ€”Filter status: paid, pending, atau expired.

Webhook / Callback Notifikasi

Jika Anda menyertakan parameter callback_url saat membuat transaksi, gateway akan secara otomatis mengirimkan request HTTP POST ke URL Anda ketika pembayaran berhasil diverifikasi:

Payload Webhook (HTTP POST JSON)
{
  "event": "binance_payment_paid",
  "payment_id": "bin_9a8f27c81b29a1b2",
  "ref": "INV-89218",
  "status": "paid",
  "amount": 5.04,
  "currency": "USDT",
  "credit_amount_idr": 80000,
  "paid_at": "2026-10-21T15:20:15.000Z",
  "matched_order_no": "281903829103"
}

Contoh Script Node.js (Bot Telegram / Backend)

Contoh lengkap implementasi pembuatan tagihan Binance Pay Publik dan auto-polling status hingga lunas:

bot-binance.js
const axios = require('axios');

const API_KEY = 'js_MASUKKAN_API_KEY_PORTAL_ANDA';
const GATEWAY_URL = 'https://janspayment.com';

const headers = {
  'Authorization': `Bearer ${API_KEY}`,
  'Content-Type': 'application/json'
};

/**
 * 1. Buat Tagihan Binance Pay (Nominal dalam Rupiah)
 */
async function buatInvoiceBinance(nominalRupiah, invoiceRef) {
  try {
    const res = await axios.post(`${GATEWAY_URL}/binance/create`, {
      amount: nominalRupiah,
      is_idr: true,
      ref: invoiceRef,
      callback_url: 'https://tokosaya.com/webhook/binance'
    }, { headers });

    const invoice = res.data?.data;
    console.log('โœ… Tagihan dibuat:');
    console.log(`- Payment ID   : ${invoice.payment_id}`);
    console.log(`- Total Bayar  : ${invoice.amount} ${invoice.currency}`);
    console.log(`- Pay ID Admin : ${invoice.pay_id}`);
    console.log(`- QR Code Link : ${invoice.qr_url}`);
    return invoice;
  } catch (err) {
    console.error('Gagal membuat tagihan:', err.response?.data?.message || err.message);
    throw err;
  }
}

/**
 * 2. Polling Otomatis Cek Status Pembayaran (Setiap 5 Detik)
 */
async function tungguPembayaran(paymentId, maxMinutes = 10) {
  const startTime = Date.now();
  const maxWaitMs = maxMinutes * 60 * 1000;

  console.log(`[INFO] Menunggu pembayaran masuk untuk ${paymentId}...`);

  while (Date.now() - startTime < maxWaitMs) {
    try {
      const res = await axios.get(`${GATEWAY_URL}/binance/check/${paymentId}`, { headers });
      const data = res.data?.data;

      if (data && data.status === 'paid') {
        console.log('๐ŸŽ‰ Pembayaran Lunas Diterima!', data);
        return { success: true, data };
      }

      if (data && data.status === 'expired') {
        console.log('โŒ Tagihan kedaluwarsa (Expired)');
        return { success: false, reason: 'expired' };
      }
    } catch (err) {
      console.warn('[WARN] Gagal cek status:', err.response?.data?.message || err.message);
    }

    // Tunggu 5 detik sebelum cek ulang
    await new Promise((resolve) => setTimeout(resolve, 5000));
  }

  console.log('โŒ Waktu pembayaran habis (Timeout).');
  return { success: false, reason: 'timeout' };
}

// CONTOH PENGGUNAAN ALUR TRANSAKSI:
async function main() {
  // 1. Buat invoice Rp 50.000
  const invoice = await buatInvoiceBinance(50000, 'ORDER-101');

  // 2. Kirim detail instruksi invoice.amount dan invoice.pay_id ke pembeli Telegram / Web...
  
  // 3. Jalankan polling mutasi
  const hasil = await tungguPembayaran(invoice.payment_id);
  if (hasil.success) {
    console.log('Saldo otomatis masuk ke akun portal & kirim produk ke pembeli!');
  }
}

// main().catch(console.error);

Contoh Script Python (Requests)

bot_binance.py
import time
import requests

API_KEY = "js_MASUKKAN_API_KEY_PORTAL_ANDA"
GATEWAY_URL = "https://janspayment.com"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

def create_invoice(amount_idr, ref):
    url = f"{GATEWAY_URL}/binance/create"
    payload = {
        "amount": amount_idr,
        "is_idr": True,
        "ref": ref
    }
    res = requests.post(url, headers=headers, json=payload, timeout=10)
    data = res.json()
    if data.get("success"):
        return data.get("data")
    raise Exception(data.get("message"))

def wait_for_payment(payment_id, max_minutes=10):
    url = f"{GATEWAY_URL}/binance/check/{payment_id}"
    start_time = time.time()
    
    while time.time() - start_time < (max_minutes * 60):
        try:
            res = requests.get(url, headers=headers, timeout=10)
            data = res.json().get("data", {})
            if data.get("status") == "paid":
                print("โœ… Pembayaran Lunas Diterima!", data)
                return True, data
            elif data.get("status") == "expired":
                return False, "Tagihan Kedaluwarsa"
        except Exception as e:
            print("Gagal cek status:", e)
        
        time.sleep(5)
        
    return False, "Batas waktu habis"

# Contoh Penggunaan:
# invoice = create_invoice(50000, "ORDER-202")
# print("Kirim", invoice["amount"], "USDT ke Pay ID:", invoice["pay_id"])
# status, data = wait_for_payment(invoice["payment_id"])

Contoh Request via cURL

Terminal / Bash
# 1. Buat tagihan baru (Shared Admin)
curl -X POST https://janspayment.com/binance/create \
  -H "Authorization: Bearer js_MASUKKAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount": 50000, "is_idr": true, "ref": "ORDER-101"}'

# 2. Cek status pembayaran berdasarkan payment_id
curl -X GET https://janspayment.com/binance/check/bin_9a8f27c81b29a1b2 \
  -H "Authorization: Bearer js_MASUKKAN_API_KEY"

# 3. Ambil riwayat transaksi
curl -X GET "https://janspayment.com/binance/history?limit=20" \
  -H "Authorization: Bearer js_MASUKKAN_API_KEY"

Fitur docs BINANCE PAY Terkunci

Dokumentasi integrasi API Key Binance pribadi (Merchant) hanya dapat dilihat oleh penyewa yang fiturnya telah dibuka oleh Owner di portal admin.
Untuk penyewa publik, Anda dapat langsung mengintegrasikan docs BINANCE (Publik) di atas secara otomatis tanpa perlu menyewa fitur ini.

Gunakan docs BINANCE (Publik) Buka docs BINANCE PAY