XyPay API Docs
API publik — CORS terbuka, tanpa auth. Bisa dipakai di Android native, iOS, Flutter, web, bot, apapun yang bisa HTTP.
Endpoint
| GET | /api/qr | Generate QR PNG custom (+logo) — untuk semua platform |
| POST | /api/payment/create | Bikin transaksi QRIS/VA → dapat order_id + qr_image |
| GET | /api/payment/status | Cek status pembayaran (pending/completed/paid) |
| POST | /api/payment/webhook | Notifikasi otomatis dari Pakasir saat dibayar |
| GET | /api/health | Cek server hidup |
QR Custom + Logo
Return image/png langsung — tempel di <img>, ImageView, Image.network, dll. QR pakai error correction H jadi aman ditutup logo.
https://api.xyspace.my.id/api/qr?data=ISI-DATA&size=512&logo=1&dark=000000&light=ffffff
| Parameter | Ket | Keterangan |
|---|---|---|
data | wajib | Isi/URL yang di-encode (maks 1200 karakter) |
size | opsional | Lebar gambar px, 256–2048 (default 512) |
logo | opsional | 1 = pakai logo XySpace (default), 0 = polos |
style | opsional | rounded (default) / dots / square — bentuk tiap bit QR |
dark | opsional | Warna modul hex, contoh 000000 / 4f6ef7 |
light | opsional | Warna background hex, default ffffff |
Contoh per platform
// Web / JavaScript — langsung pakai sebagai <img>
<img src="https://api.xyspace.my.id/qr?data=Hello+World&size=512&logo=1" />
// atau fetch sebagai blob:
const res = await fetch("https://api.xyspace.my.id/qr?data=Hello&size=512&logo=1");
const blob = await res.blob();
imgEl.src = URL.createObjectURL(blob);// Android Native (Kotlin) — pakai Coil
imageView.load("https://api.xyspace.my.id/qr?data=Hello&size=512&logo=1")
// atau tanpa library:
val url = URL("https://api.xyspace.my.id/qr?data=Hello&size=512&logo=1")
val bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream())
imageView.setImageBitmap(bitmap)// Flutter / Dart
Image.network('https://api.xyspace.my.id/qr?data=Hello&size=512&logo=1')# Python
import requests
r = requests.get("https://api.xyspace.my.id/qr", params={
"data": "Hello", "size": 512, "logo": 1
})
open("qr.png", "wb").write(r.content)Payment API
Metode: qris, bni_va, bri_va, cimb_niaga_va, maybank_va, permata_va, bnc_va, sampoerna_va, atm_bersama_va, artha_graha_va. QRIS yang dikembalikan otomatis pakai logo XySpace di tengah.
# Bikin transaksi pembayaran (QRIS otomatis ada logo XySpace)
curl -X POST https://api.xyspace.my.id/payment/create \
-H "Content-Type: application/json" \
-d '{"amount": 25000, "method": "qris", "buyer": "user@xy.com"}'
# Response:
# {
# "order_id": "INV1789...",
# "amount": 25000,
# "payment": { "total_payment": 25380, "payment_number": "00020101...", ... },
# "qr_image": "data:image/png;base64,..." ← QRIS + logo, tinggal ditampilin
# }
# Cek status pembayaran:
curl "https://api.xyspace.my.id/payment/status?order_id=INV1789...&amount=25000"Live Demo
Rate limit & abuse: dilindungi Vercel Firewall.