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.
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>.
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:
Aplikasi Anda memanggil endpoint POST /binance/create dengan nominal pesanan (bisa dalam Rupiah atau USDT).
Gateway merespons dengan total nominal presisi USDT (contoh: 5.04 USDT), alamat Binance Pay ID Admin, dan URL gambar QR Code.
Pembeli membuka aplikasi Binance → menu Pay / Kirim → memasukkan Pay ID Admin → memasukkan nominal presisi 5.04 USDT → kirim.
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).
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:
{
"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:
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)
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
# 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.