DOKUMENTASI RESMI

Panduan Integrasi SaaS Verifikasi Pembayaran PT Chain

Ke Dasbor →
BAGIAN 01

Ringkasan Ekosistem & Arsitektur Enabler

SaaS API Verifikasi Pembayaran PT Chain dirancang sebagai alternatif zero-friction terhadap payment gateway konvensional dan Moota. Sistem memverifikasi validitas uang masuk dengan memadukan teknologi Computer Vision (Florence-2) untuk mengekstrak nominal gambar struk transfer pembeli dengan Multi-Channel Bank Ingestion untuk menangkap notifikasi mutasi resmi bank secara instan.

Worker Edge Cloudflare:

Berjalan 100% independen tanpa server fisik. Mengurus Google SSO, billing, dan routing callback.

VPS Stateless Florence-2 (18GB RAM):

Memproses gambar struk secara spasial via CPU (3-8s). Gambar langsung dibuang dari RAM setelah JSON dibuat.

BAGIAN 02

Alur 7 Tahapan Integrasi Pengembang

Tahap 1 — Registrasi: Mendaftar menggunakan Google OAuth SSO untuk mendapatkan sesi dan fasilitas free trial 3 hari.
Tahap 2 — Pemilihan Metode: Memilih 1 dari 6 jalur ingesti mutasi bank yang paling efisien.
Tahap 3 — Konfigurasi Jalur Data: Menyalin email virtual unik, memasukkan App Password, atau mengambil webhook URL.
Tahap 4 — Generate API Key: Menghasilkan kunci rahasia cac_live_sk_... untuk otentikasi unggah bukti transfer.
Tahap 5 — Seting URL Callback: Menentukan URL bot/server Anda untuk menerima notifikasi status LUNAS/GAGAL.
Tahap 6 — Billing & Kuota: Menikmati 3 hari trial kuota gratis dan sistem bayar fee per transaksi tanpa deposit minimal.
Tahap 7 — Monitoring Log: Memantau live stream transaksi, struk, dan status verifikasi real-time.
BAGIAN 03

Panduan Lengkap 6 Jalur Ingesti Mutasi Bank

Metode 1: Email Forwarding Internal (Cloudflare Catch-All)

Klien tidak perlu server sama sekali. Cukup buat filter otomatis di akun Gmail Anda yang meneruskan email dari bank ke alamat virtual unik (contoh: klien_id@inbox.chainasia.com).

Filter Gmail: From: bca@klikbca.com → Action: Forward to klien_id@inbox.chainasia.com

Metode 2: App Password Gmail (IMAP IDLE)

Klien mendedikasikan satu akun email (misal: mutasi@klien.com) lalu membuat App Password 16 karakter di Google Account Security. Server SaaS PT Chain menghubungkan TCP persistent ke server IMAP Gmail dan menerima email baru secara instan tanpa jeda polling.

Metode 3: Pembaca Notifikasi Android (MacroDroid / Automate)

Gunakan ponsel Android cadangan yang terpasang m-Banking. Buat Macro di MacroDroid:

  • Trigger: Notification Received (Pilih BCA Mobile, Livin Mandiri, BRImo, dll).
  • Action: HTTP Request (Method POST, URL: endpoint unik Anda, Body: [notification_text]).

Metode 4: Google Apps Script (GAS) Webhook Cron

Buka script.google.com, tempelkan skrip yang disediakan, dan aktifkan time-driven trigger setiap 1 menit. Skrip berjalan di infrastruktur serverless Google secara cuma-cuma.

Metode 5: Penerusan Webhook Pihak Ketiga (Make.com / IFTTT)

Klien mengkoneksikan modul "Gmail: Watch Emails" di Make.com dengan filter sender bank, lalu mengalirkan output ke modul "HTTP: Make a request" (POST ke endpoint SaaS PT Chain).

Metode 6: AI Vision Florence-2 OCR Worker

Server Hugging Face menjalankan model microsoft/Florence-2 secara stateless. Memproses gambar bukti transfer dengan membaca token nominal uang, tanggal, dan bank tujuan dalam 3-8 detik.

BAGIAN 04

Contoh Kode Integrasi API (Upload Bukti Transfer)

1. cURL (Terminal / Bash):
curl -X POST https://fintech.chainasiaconnect.co.id/api/v1/receipt/verify \
  -H "Authorization: Bearer cac_live_sk_YOUR_KEY" \
  -F "receipt_image=@/path/to/struk_transfer.jpg" \
  -F "expected_amount=250000" \
  -F "expected_bank=BCA"
2. Node.js (TypeScript / JavaScript):
const formData = new FormData();
formData.append('receipt_image', fs.createReadStream('./struk.jpg'));
formData.append('expected_amount', '250000');

const res = await fetch('https://fintech.chainasiaconnect.co.id/api/v1/receipt/verify', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer cac_live_sk_YOUR_KEY'
  },
  body: formData
});
const data = await res.json();
console.log(data);
3. Python (Requests):
import requests

url = "https://fintech.chainasiaconnect.co.id/api/v1/receipt/verify"
headers = {"Authorization": "Bearer cac_live_sk_YOUR_KEY"}
files = {"receipt_image": open("struk.jpg", "rb")}
data = {"expected_amount": "250000", "expected_bank": "BCA"}

response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
BAGIAN 05

Spesifikasi Callback Webhook ke Server Klien

Setelah verifikasi OCR dan data mutasi dicocokkan, server kami akan mengirimkan HTTP POST dengan payload berikut:

{
  "event": "PAYMENT_VERIFIED",
  "transaction_id": "TRX-20261106-9921",
  "status": "LUNAS",
  "amount_expected": 250000,
  "amount_received": 250000,
  "bank_name": "BCA",
  "ocr_match": true,
  "verified_at": "2026-11-06T13:45:10Z"
}
Server klien wajib membalas dengan status HTTP 200 OK untuk mengonfirmasi bahwa notifikasi telah diterima.
BAGIAN 06

Skema Kuota & Biaya Transaksi

1. Gratis Kuota Uji Coba 3 Hari: Setiap klien baru otomatis mendapatkan 50 kuota request gratis selama 3 hari pertama.

2. Tanpa Minimal Deposit: Anda dapat melakukan top up saldo mulai dari nominal berapapun (misal Rp 10.000) via QRIS Dinamis DOKU.

3. Skema Fee % Per Transaksi: Sistem hanya memotong fee kecil (0.5% - 1%) dari setiap transaksi yang sukses diverifikasi (*LUNAS*). Transaksi gagal atau tidak cocok (*MISMATCH*) tidak dikenakan biaya.

BAGIAN 07

Pertanyaan yang Sering Diajukan (FAQ)

Apakah gambar bukti transfer disimpan di database?

Tidak. Server VPS Hugging Face memproses gambar secara in-memory (RAM) dan langsung membuangnya begitu token teks selesai diekstraksi.

Apa yang terjadi jika pembeli mengunggah struk palsu / editan?

Sistem tidak hanya melihat gambar, tetapi mencocokkan nominal dan bank tujuan secara ketat dengan mutasi uang masuk nyata di bank Anda pada rentang waktu yang sama. Jika mutasi tidak ada, status otomatis GAGAL.

Apakah saya perlu lulus audit CASA Tier 2 Google?

Tidak perlu. Dengan menggunakan metode Email Forwarding (Catch-All) atau App Password Gmail IMAP, Anda terbebas dari regulasi audit CASA yang mahal.