🔗 WPI sebagai PGA Utama — Multi Website

WPI adalah PGA pusat. Banyak website/merchant dapat terhubung memakai API Key merchant masing-masing. WPI yang berbicara ke GS Pay menggunakan satu konfigurasi provider pusat; Authentication Key dan Secret GS Pay tidak pernah diberikan ke merchant.

Callback yang wajib dipasang di GS Pay Callback Settings

Payment Callback → https://ratupanda78.site/api/gspay/payment-callback.phpPayout Callback → https://ratupanda78.site/api/gspay/payout-callback.php

Dua URL tersebut adalah callback GS Pay → WPI. Setelah WPI menerima dan memverifikasi callback GS Pay, WPI meneruskan status ke Callback URL milik website merchant yang diatur di panel WPI.

Callback milik website merchant

Contoh: https://domain-website-merchant.com/api/wpi/callback

Merchant memasukkan URL callback HTTPS miliknya di panel WPI. WPI mengirim header X-WPI-Signature dan X-WPI-Callback-ID; Callback Secret merchant tidak dibagikan ke GS Pay.

DOKUMENTASI MERCHANT • QRIS & PAYMENT API

Dokumentasi API WPI untuk Merchant

Panduan resmi integrasi Merchant dengan WPI untuk QRIS, Payment, Callback, Payout/Withdraw, dan cek status transaksi. Dokumentasi ini sengaja hanya membahas API WPI yang perlu digunakan Merchant; detail provider pembayaran internal tidak ditampilkan.

1. Credential Merchant

Merchant cukup menggunakan credential yang diberikan WPI:

API Key WPI_TOKENxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Callback Secret Simpan di server Merchant dan jangan ditampilkan di browser.

API Key dikirim pada header Authorization. Jangan menaruh API Key atau Callback Secret di JavaScript/frontend.

2. Cara Kerja WPI

  1. Situs Merchant membuat transaksi dengan transaction_id dan User ID pemain.
  2. Server Merchant mengirim request Payment ke WPI menggunakan API Key.
  3. WPI memproses pembayaran QRIS secara terpusat dan mengelola status transaksi.
  4. Customer diarahkan ke halaman pembayaran WPI.
  5. Setelah pembayaran terkonfirmasi, WPI mengirim webhook ke Callback URL Merchant.
  6. Merchant memverifikasi X-WPI-Signature menggunakan Callback Secret lalu memperbarui status order/User ID.

Contoh User ID: kunfayakun12

3. Payment — Buat Deposit

POST /api/v1/payment/create.php Authorization: Bearer WPI_TOKENxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Content-Type: application/json { "transaction_id": "ORDER20260910001", "player_username": "kunfayakun12", "amount": 100000, "channel": "QRIS" }

Nilai transaction_id adalah ID order milik Merchant, 5–20 karakter. player_username adalah User ID customer, contoh kunfayakun12.

Contoh response

{ "success": true, "transaction_id": "ORDER20260910001", "payment_url": "https://domain-wpi/pay/ORDER20260910001", "checkout_url": "https://domain-wpi/pay/ORDER20260910001", "status": 0, "amount": 100000 }

Merchant cukup mengarahkan customer ke checkout_url. Customer kemudian menyelesaikan pembayaran di halaman WPI.

4. 1-Way Redirect Payment

Jika Merchant ingin customer otomatis kembali ke halaman Merchant setelah proses pembayaran selesai, kirim return_url saat membuat payment. WPI akan meneruskan parameter return ke payment URL provider GS Pay.

POST /api/v1/payment/create.php Authorization: Bearer WPI_TOKEN... Content-Type: application/json { "transaction_id": "ORDER20260910001", "player_username": "kunfayakun12", "amount": 100000, "channel": "QRIS", "return_url": "https://merchant-domain.com/payment/success" }

Nilai return URL harus berupa URL HTTP/HTTPS yang valid. Jangan menaruh API Key atau Callback Secret pada URL tersebut.

5. Contoh Alur Payment

Customer login User ID: kunfayakun12 ↓ Merchant membuat order TRX: ORDER20260910001 Nominal: Rp100.000 ↓ Server Merchant → WPI API ↓ WPI membuat pembayaran ↓ Customer membuka checkout_url ↓ Customer memilih dan membayar melalui QRIS ↓ WPI menerima konfirmasi provider ↓ WPI → Callback URL Merchant ↓ Merchant verifikasi signature ↓ Order kunfayakun12 = SUCCESS

6. Payment — Cek Status

GET /api/v1/payment/status.php?transaction_id=ORDER20260910001 Authorization: Bearer WPI_TOKENxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Contoh response

{ "success": true, "data": { "transaction_id": "ORDER20260910001", "username": "kunfayakun12", "amount": 100000, "status": "success", "status_code": 1, "remark": "", "payment_url": "...", "expire_date": "2026-09-10 15:00:00" } }

7. Callback Payment Merchant

Callback URL diisi oleh Merchant pada pengaturan akun WPI, misalnya:

https://merchant-domain.com/api/wpi/callback

Ketika status transaksi berubah, WPI mengirim JSON ke URL tersebut.

Contoh callback SUCCESS

{ "transaction_id": "ORDER20260910001", "username": "kunfayakun12", "amount": 100000, "status": "success", "status_code": 1, "remark": "Payment success", "success": true, "data": { "transaction_id": "ORDER20260910001", "username": "kunfayakun12", "amount": 100000, "status": "success", "remark": "Payment success" } }

Header keamanan callback:

X-WPI-Signature: HMAC_SHA256_PAYLOAD_DENGAN_CALLBACK_SECRET X-WPI-Callback-ID: unique-callback-id

Merchant harus menghitung HMAC-SHA256 dari raw JSON body menggunakan Callback Secret, lalu membandingkannya secara aman dengan X-WPI-Signature.

8. Payout / Withdraw

POST /api/v1/payout/create.php Authorization: Bearer WPI_TOKENxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Content-Type: application/json { "transaction_id": "WD20260910001", "player_username": "kunfayakun12", "account_name": "JOHN DOE", "account_number": "1234567890", "amount": 100000, "bank_target": "BCA" }

Request payout masuk antrean WPI dan diproses otomatis. Jangan mengirim transaksi yang sama berulang kali dengan transaction_id berbeda.

Contoh response

{ "success": true, "queued": true, "transaction_id": "WD20260910001", "status": "Pending", "message": "Withdraw masuk antrean WPI." }

9. Cek Status Payout

GET /api/v1/payout/status.php?transaction_id=WD20260910001 Authorization: Bearer WPI_TOKENxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Status payout dapat berupa pending, success, atau failed.

10. Callback Payout Merchant

{ "transaction_id": "WD20260910001", "username": "kunfayakun12", "amount": 100000, "status": 1, "status_label": "Success", "completed": true, "payout_success": true, "account_name": "JOHN DOE", "bank_target": "BCA", "account_number": "1234567890", "remark": "Payout success" }

Signature payout diverifikasi dengan cara yang sama: gunakan raw JSON body + Callback Secret dan cocokkan dengan header X-WPI-Signature.

11. Saldo Merchant

GET /api/v1/balance.php Authorization: Bearer WPI_TOKENxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Endpoint ini menampilkan saldo finansial Merchant di WPI. Saldo internal WPI Merchant ditampilkan melalui endpoint yang diizinkan untuk akun Merchant. Informasi provider pembayaran internal tidak diberikan kepada Merchant.

12. Catatan Integrasi