Dokumentasi v1.0.0

Dokumentasi API

Selamat datang di dokumentasi API GoPay Gateway. Integrasikan gateway pembayaran QRIS otomatis ke dalam aplikasi, web, atau bot Telegram Anda secara mandiri dalam hitungan menit.

Layanan kami bekerja dengan membungkus QRIS statis GoPay Merchant Anda dan memformatnya menjadi QRIS dinamis bernominal khusus sesuai nilai transaksi. Hal ini membantu memverifikasi setiap pembayaran masuk secara akurat tanpa biaya per transaksi.

Mulai Cepat

Ikuti 3 langkah mudah di bawah ini untuk mulai menerima pembayaran otomatis:

1
Ambil API Key

Daftar akun di platform kami dan dapatkan kunci rahasia unik Anda melalui halaman Pengaturan API Key.

2
Setup BaseQR

Salin string QRIS statis dari aplikasi GoBiz / GoPay Merchant Anda dan simpan di menu Setup QRIS.

3
Panggil API

Gunakan REST endpoints yang tercantum di bawah untuk mulai memicu pembuatan QRIS dinamis.

Autentikasi

Semua panggilan API Anda harus diautentikasi menggunakan API Key unik yang telah terdaftar. Kami menyediakan dua metode untuk mengirimkan API Key tersebut:

PENTING

Jaga kerahasiaan API Key Anda. Jangan pernah membagikan API Key Anda di client-side JavaScript, repository publik, atau ke pihak ketiga mana pun.

Metode 1: HTTP Header (Direkomendasikan)
X-API-Key: gpg_live_xxxxxxxxxxxx
Metode 2: Query Parameter
?apikey=gpg_live_xxxxxxxxxxxx

API Reference

Berikut adalah spesifikasi endpoint yang tersedia untuk melakukan integrasi pembayaran.

Base API Endpoint URL
http://localhost:8080/api
POST /api/create_order.php

Endpoint ini digunakan untuk membuat pesanan baru dan menghasilkan string QRIS Dinamis berserta gambar QR code instan.

Request Body (JSON)
Parameter Tipe Deskripsi
amount wajib integer Jumlah nominal pembayaran dalam Rupiah. Minimum Rp 100 dan maksimum Rp 50.000.000.
ref_id opsional string ID referensi internal dari sistem Anda (misal: ID order web Anda).
description opsional string Deskripsi singkat transaksi untuk pelacakan.
expired_minutes opsional integer Masa berlaku QR code dalam hitungan menit. Default adalah 15 menit.
curl -X POST "http://localhost:8080/api/create_order.php" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: gpg_live_xxxxxxxxxxxx" \
  -d '{
    "amount": 150000,
    "ref_id": "ORDER-001",
    "description": "Pembelian Produk A",
    "expired_minutes": 15
  }'
Response JSON (200 OK)
JSON RESPONSE
{
  "status": "success",
  "code": 200,
  "message": "Order berhasil dibuat. Tampilkan QR kepada pelanggan.",
  "data": {
    "order_id": "GPG-B2E8D1-20260611161500",
    "transaction_id": 128,
    "ref_id": "ORDER-001",
    "merchant_name": "Toko Budi Online",
    "amount": 150000,
    "amount_formatted": "Rp 150.000",
    "qr_string": "00020101021226...",
    "qr_url": "https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=...",
    "status": "pending",
    "description": "Pembelian Produk A",
    "expired_minutes": 15,
    "expires_at": "2026-06-11 16:30:00",
    "created_at": "2026-06-11 16:15:00"
  }
}
GET /api/check_status.php

Endpoint ini digunakan untuk memantau atau mendeteksi status transaksi berdasarkan `order_id` yang didapatkan pada proses pembuatan pesanan.

Query Parameters
Parameter Tipe Deskripsi
order_id wajib string ID Order unik yang didapatkan dari respons pembuatan order (contoh: `GPG-xxxx-xxxx`).
curl -X GET "http://localhost:8080/api/check_status.php?order_id=GPG-B2E8D1-20260611161500"
Response JSON (200 OK - Paid State)
JSON RESPONSE
{
  "status": "success",
  "code": 200,
  "message": "Success",
  "data": {
    "order_id": "GPG-B2E8D1-20260611161500",
    "merchant_name": "Toko Budi Online",
    "ref_id": "ORDER-001",
    "amount": 150000,
    "amount_formatted": "Rp 150.000",
    "qr_string": "00020101021226...",
    "qr_url": "https://...",
    "status": "paid",  // status: pending | paid | expired | failed
    "description": "Pembelian Produk A",
    "expired_minutes": 15,
    "expires_at": "2026-06-11 16:30:00",
    "created_at": "2026-06-11 16:15:00",
    "paid_at": "2026-06-11 16:18:22"
  }
}
POST /api/update_status.php

Endpoint ini digunakan untuk mensimulasikan pembaruan status transaksi secara manual atau bertindak sebagai webhook simulasi dari server Anda ke gateway.

Request Body (JSON)
Parameter Tipe Deskripsi
order_id wajib string ID Order unik dari sistem (contoh: `GPG-xxxx-xxxx`).
status wajib string Status baru yang ingin diubah. Pilihan status: `paid`, `failed`, `expired`, `pending`.
curl -X POST "http://localhost:8080/api/update_status.php" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: gpg_live_xxxxxxxxxxxx" \
  -d '{
    "order_id": "GPG-B2E8D1-20260611161500",
    "status": "paid"
  }'