למפתחים
שלוש קריאות ו-webhook.
Gateway הוא checkout מאוחסן, ולכן האינטגרציה קטנה במכוון: יוצרים הזמנה, שולחים את הלקוח לדף, ומאמתים את התוצאה החתומה. זה כל המשטח כולו — ממשק התשלום, לוגיקת אמצעי התשלום, 3-D Secure, ארנקים וקבלות הם עלינו, ואנחנו גם שומרים אותם מעודכנים.
במבט כולל
מול מה אתם משתלבים.
- REST על גבי HTTPS
- JSON בקלט, JSON בפלט
- מפתחות API מסוג Bearer
- מפתחות Idempotency
- Webhooks חתומים
- הגנה מפני Replay
- מצבי test ו-live
- SDK ל-iOS ול-Android
- תוספים לחנויות
- שדות מוטמעים
התחלה מהירה
מאפס להזמנה ששולמה.
כל המסלול התקין. הסכומים ביחידות הקטנות ביותר (minor units), ה-references הם שלכם, וכתובת ה-checkout היא היעד שאליו מפנים את הלקוח. כתובת הבסיס של ה-API ניתנת יחד עם מפתחות ה-sandbox — ייצאו אותה כ-PROTOCORE_API_BASE והקריאות שלהלן ירוצו בדיוק כפי שהן כתובות.
יצירת ההזמנה
קריאה אחת עם הסכום, המטבע וה-reference שלכם. את מפתח ה-idempotency אתם מייצרים בעצמכם — בקשה חוזרת מחזירה את ההזמנה המקורית ולא יוצרת הזמנה שנייה.
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"
}'שליחת הלקוח ל-checkout
התגובה כוללת כתובת checkout על ה-host שלכם — זה שניתן עם ה-sandbox, או הדומיין שלכם לאחר שתפנו אותו אלינו. מפנים אליה, או פותחים אותה ב-SDK; בדף הזה נמצאים אמצעי התשלום, הארנקים ו-3-D Secure, כך שאין מה לבנות בצד שלכם.
{
"id": "ord_2h4Kq9wRz",
"reference": "9F21-0716",
"amount": 4900,
"currency": "EUR",
"status": "pending",
"checkout_url": "https://<your-checkout-host>/c/2h4Kq9wRz"
}אימות התוצאה החתומה
בסיום התשלום מגיע אירוע חתום ל-endpoint שלכם. אמתו את החתימה מול ה-webhook secret לפני שסומכים על כל דבר, ואז בצעו אספקה לפי ה-reference שכבר מוכר לכם.
{
"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" }
}
}מסמך עזר
ה-endpoints שבהם תשתמשו בפועל.
יש עוד בדוקומנטציה, אבל זו הקבוצה שרוב האינטגרציות אף פעם לא חורגות ממנה.
Webhooks
על מה ה-backend שלכם שומע.
כל אירוע נושא את ה-reference של ההזמנה שיצרתם, כך שה-handler יכול להיות switch על הסוג ושליפה בצד שלכם.
בדקו את החתימה לפני שסומכים על ה-body.
כל משלוח כולל חותמת זמן וחתימת HMAC על ה-body הגולמי. השוו בזמן קבוע, דחו כל דבר ישן מחלון הסבילות שלכם, והתייחסו ל-event id כפול כאל אירוע שכבר טופל — אנחנו מנסים שוב על תגובות שאינן 2xx, ולכן גם ה-handler שלכם צריך להיות 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;
}הבטחות
התכונות שאפשר לבנות עליהן.
יצירה idempotent
כל יצירת הזמנה מקבלת מפתח idempotency. בקשה חוזרת — אחרי timeout, deploy או שליחה חוזרת מתור — מחזירה את ההזמנה המקורית ולא מחייבת פעמיים.
אירועים חתומים עם הגנה מפני replay
ל-webhooks יש חתימת HMAC עם חותמת זמן ו-event id יציב. המשלוחים נשלחים שוב עם backoff עד שה-endpoint שלכם עונה 2xx, כך שחלון deploy לא מאבד תשלום.
reference אחד, מקצה לקצה
ה-reference שמסרתם בעת היצירה מופיע ב-checkout, בקבלה, ב-webhook, ב-payout ובכל החזר שיבוא אחר כך. אין מזהה שני שצריך למפות בין מערכות.
מצב test הוא אותו נתיב קוד
מפתחות test מריצים את אותם flows מול sessions של test. מה שעובר ב-test הוא מה שעולה לאוויר — ההבדל הוא באילו מפתחות שולחים, לא באילו endpoints קוראים.
נתוני בדיקה
איך לתרגל את הנתיבים החשובים.
מאחורי כל נתיב מוצג כאן כרטיס בדיקה, והוא מופיע יחד עם המפתחות שלכם עם הנפקת ה-sandbox. המספרים נקבעים לכל sandbox ואינם מתפרסמים כאן, כך שהם נשארים נכונים גם כשטווחי הבדיקה של הסכמות משתנים. ההתנהגות דטרמיניסטית בכל מקרה: קל לבדוק דחייה בדיוק כמו אישור.
מקבלים מפתחות ומתחילים.
merchant ב-sandbox עם מפתחות API, סודות webhook וכל השיטות פעילות — וגם התיעוד המלא, כדי שהצוות שלכם יוכל לבצע אינטגרציה עוד לפני שנחתם משהו.