Developer
Tiga panggilan dan satu webhook.
Gateway adalah checkout hosted, jadi integrasinya sengaja dibuat ringkas: buat order, arahkan pelanggan ke halaman checkout, lalu verifikasi hasil yang bertanda tangan. Semua yang tercantum di bawah adalah keseluruhan cakupannya — UI pembayaran, logika metode, 3-D Secure, wallet, dan bukti pembayaran kami yang membangun dan menjaganya tetap mutakhir.
Gambaran umum
Yang akan Anda integrasikan.
- REST melalui HTTPS
- JSON masuk, JSON keluar
- API key Bearer
- Idempotency key
- Webhook bertanda tangan
- Perlindungan replay
- Mode test dan live
- SDK iOS & Android
- Plugin toko
- Field tertanam
Quickstart
Dari nol hingga order terbayar.
Seluruh alur ideal. Nominal dalam satuan terkecil (minor unit), referensi ditentukan oleh Anda, dan URL checkout adalah tujuan pengalihan pelanggan. Base URL API diberikan bersama key sandbox Anda — ekspor sebagai PROTOCORE_API_BASE dan panggilan di bawah berjalan persis seperti tertulis.
Buat order
Satu panggilan dengan nominal, mata uang, dan referensi milik Anda. Idempotency key Anda buat sendiri — permintaan yang diulang akan mengembalikan order asli, bukan membuat order kedua.
curl -X POST "$PROTOCORE_API_BASE/v1/orders" \
-H "Authorization: Bearer $PROTOCORE_API_KEY" \
-H "Idempotency-Key: 9F21-0716" \
-H "Content-Type: application/json" \
-d '{
"amount": 4900,
"currency": "EUR",
"reference": "9F21-0716",
"line_items": [
{ "name": "Brand identity sprint", "amount": 3850 },
{ "name": "Typeface licensing", "amount": 600 },
{ "name": "Rush delivery", "amount": 400 }
],
"return_url": "https://arcstudio.ro/thanks"
}'Arahkan pelanggan ke checkout
Respons memuat URL checkout pada host checkout Anda sendiri — yang diberikan bersama sandbox, atau domain Anda sendiri setelah diarahkan ke kami. Alihkan pelanggan ke sana, atau buka lewat SDK; di halaman itulah metode pembayaran, wallet, dan 3-D Secure berada, jadi tidak ada yang perlu Anda bangun.
{
"id": "ord_2h4Kq9wRz",
"reference": "9F21-0716",
"amount": 4900,
"currency": "EUR",
"status": "pending",
"checkout_url": "https://<your-checkout-host>/c/2h4Kq9wRz"
}Verifikasi hasil bertanda tangan
Saat pembayaran selesai, event bertanda tangan dikirim ke endpoint Anda. Verifikasi tanda tangan dengan webhook secret Anda sebelum memercayai apa pun, lalu penuhi pesanan berdasarkan referensi yang sudah Anda kenal.
{
"type": "order.paid",
"id": "evt_7Ka2Lm",
"created": "2026-07-23T09:41:02Z",
"data": {
"id": "ord_2h4Kq9wRz",
"reference": "9F21-0716",
"amount": 4900,
"currency": "EUR",
"method": "usdc",
"settlement": { "currency": "EUR", "amount": 4900, "rate": "0.9184" }
}
}Referensi
Endpoint yang benar-benar akan Anda pakai.
Dokumentasi memuat lebih banyak, tetapi inilah set yang tidak pernah dilampaui oleh kebanyakan integrasi.
Webhook
Yang didengar backend Anda.
Setiap event membawa referensi order yang Anda buat, sehingga handler Anda cukup berupa switch pada tipe event dan lookup di sisi Anda sendiri.
Periksa tanda tangan sebelum memercayai isinya.
Setiap pengiriman membawa timestamp dan tanda tangan HMAC atas raw body. Bandingkan dalam waktu konstan, tolak apa pun yang lebih lama dari batas toleransi Anda, dan anggap event id yang duplikat sudah ditangani — kami mengulang pengiriman bila respons bukan 2xx, jadi handler Anda juga harus idempotent.
import { createHmac, timingSafeEqual } from "node:crypto";
export function verify(rawBody, header, secret) {
const [ts, sig] = header.split(",").map((p) => p.split("=")[1]);
const expected = createHmac("sha256", secret)
.update(`${ts}.${rawBody}`)
.digest("hex");
const a = Buffer.from(sig, "hex");
const b = Buffer.from(expected, "hex");
if (a.length !== b.length || !timingSafeEqual(a, b)) return false;
// Reject replays outside a five-minute window.
return Math.abs(Date.now() / 1000 - Number(ts)) < 300;
}Jaminan
Properti yang bisa Anda andalkan.
Pembuatan yang idempotent
Setiap pembuatan order memakai idempotency key. Permintaan yang diulang — setelah timeout, deploy, atau pengiriman ulang antrean — mengembalikan order asli, bukan menagih dua kali.
Event bertanda tangan dan tahan replay
Webhook membawa tanda tangan HMAC bertimestamp dan event id yang stabil. Pengiriman diulang dengan backoff hingga endpoint Anda menjawab 2xx, sehingga jendela deploy tidak membuat pembayaran hilang.
Satu referensi, dari awal sampai akhir
Referensi yang Anda berikan saat pembuatan muncul di checkout, bukti pembayaran, webhook, payout, dan refund berikutnya. Tidak ada pengenal kedua yang harus dipetakan antarsistem.
Mode test memakai jalur kode yang sama
Key test menjalankan alur yang identik pada sesi uji. Yang lolos di test adalah yang dirilis — bedanya hanya key yang Anda kirim, bukan endpoint yang Anda panggil.
Data uji
Cara menguji alur yang penting.
Setiap jalur di bawah ini punya kartu uji yang sesuai, tercantum bersama kunci Anda saat sandbox diterbitkan — nomornya berbeda untuk tiap sandbox dan tidak dipublikasikan di sini, sehingga tetap akurat saat rentang uji skema kartu berubah. Perilakunya tetap deterministik: pengujian bisa memastikan penolakan semudah memastikan keberhasilan.
Dapatkan kunci, lalu mulai.
Merchant sandbox dengan kunci API, secret webhook, dan semua metode aktif — plus referensi lengkap, agar tim Anda bisa berintegrasi sebelum ada yang ditandatangani.