שילוב תשלומי ERIP: מדריך להקמת אתר

לקוחות מבלארוס לא תמיד יכולים לשלם עבור הזמנות בדרך הרגילה אם האתר אינו תומך ב-ERIP. אנחנו מבצעים אינטגרציה עם מערכת התשלומים הממשלתית הזו, ומחברים את האתר שלכם דרך סוכן בנקאי או ישירות. הצוות שלנו מספק את הפרויקט במפתח מלא—מבחירת סכמת החיבור ועד ההשקה והתמיכה השוטפת—כך שאתם מקבלים תשלומים בצורה אמינה וללא עיכובים.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
שילוב תשלומי ERIP: מדריך להקמת אתר
מורכב
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1502
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1307
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

שילבנו את ERIP (מרחב הסדרים ומידע אחיד) בעשרות אתרים—מחנויות מקוונות ועד שירותי תשלום. ללא מערכת זו, אתם מפסידים עד 40% מהקונים מבלארוס: הם פשוט לא יכולים לשלם בדרך המועדפת עליהם. ERIP היא מערכת תשלומים ממשלתית המכסה מעל 99% מהבנקים והמסופים (נתונים רשמיים מהבנק הלאומי של הרפובליקה של בלארוס). משתמשים משלמים דרך בנקאות אינטרנט (SDBO של Sberbank, Belaruskbank), כספומטים ואפליקציות מובייל. אנו מבטיחים עיבוד נכון של כל תשלום ותמיכה מלאה בכל שלבי האינטגרציה: מבחירת סוכן בנק ועד השקה בייצור.

עם ניסיון של למעלה מ-7 שנים ו-15 פרויקטים שהושלמו, אנו מבטיחים אינטגרציית ERIP אמינה. עלויות אינטגרציה טיפוסיות נעות בין 500 ל-2000 דולר, עם פוטנציאל חיסכון של עד 20% בעמלות עסקה בהשוואה לשיטות תשלום חלופיות.

מדוע אינטגרציית ERIP היא חובה?

ללא ERIP, אתם מאבדים נתח משמעותי מהקהל שלכם. על פי סטטיסטיקות, מעל 60% מהמשתמשים הבלארוסים מעדיפים לשלם דרך ERIP, במיוחד דרך SDBO של Sberbank ו-Belaruskbank. אם האתר שלכם לא תומך במערכת זו, הלקוחות עוברים למתחרים. יתרה מכך, עבור סוגי עסקים רבים (חנויות מקוונות, שירותי דיור ושירותים, ביטוח), קיום ERIP הוא דרישה חוקית.

ארכיטקטורת ERIP

ישנן שתי דרכים להתחבר:

  1. דרך סוכן בנק — הבנק (Belaruskbank, Priorbank, BSG Bank וכו') מספק API של ERIP עבור בקשות Check ו-Pay. הסכם עם בנק אחד, API בנקאי.
  2. ישירות דרך OSMP/FTOS — דורש הסכם נפרד עם מפעיל ERIP, תשתית מורכבת יותר.

עבור רוב הפרויקטים, נבחר המסלול של סוכן בנק. הבה נבחן אינטגרציה דרך האפשרויות הנפוצות ביותר.

איך לבחור סוכן בנק?

סוכן בנק סוג API זמן תגובה ממוצע מורכבות אינטגרציה
BSG Bank WSCP (XML) ~200 אלפיות השנייה בינונית
Belaruskbank שירות Web (SOAP) ~500 אלפיות השנייה גבוהה
Priorbank REST (JSON) ~150 אלפיות השנייה נמוכה

ה-API של WSCP של BSG Bank מעבד בקשות בכ-200 אלפיות השנייה בממוצע, מהיר פי 2.5 משירות ה-web של Belaruskbank (500 אלפיות השנייה). Priorbank מציע API מודרני מסוג REST עם זמן השהיה מינימלי. בחירת הבנק האופטימלי תלויה במשימות שלכם—אנו עוזרים בבחירה ובתיעוד.

איך זה עובד

ERIP פועל במצב Pull: זו לא סכמת הפנייה. הקונה מזין את מספר השירות שלכם ב-ERIP (לדוגמה, 'חנויות מקוונות → החנות שלכם → הזן מספר הזמנה'). ERIP מבקש מידע על ההזמנה מהשרת שלכם (בקשת Check), ולאחר התשלום שולח הודעה (בקשת Pay).

השרת שלכם חייב ליישם מטפל בבקשות XML מ-ERIP.

דוגמת קוד PHP למטפל ERIP
class EripController extends Controller
{
    public function handle(Request $request): Response
    {
        $xml = simplexml_load_string($request->getContent());
        $command = (string)$xml->command['type'];

        return match ($command) {
            'check' => $this->check($xml),
            'pay' => $this->pay($xml),
            default => $this->error('Unknown command'),
        };
    }

    private function check(\SimpleXMLElement $xml): Response
    {
        $accountNo = (string)$xml->customer->account;
        $order = Order::where('erip_account', $accountNo)
            ->where('status', 'pending')
            ->first();

        if (!$order) {
            return $this->xmlResponse(200, 'Услуга не найдена');
        }

        $responseXml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <result>
        <errorCode>0</errorCode>
        <errorDescription>Успешно</errorDescription>
    </result>
    <customer>
        <account>{$accountNo}</account>
    </customer>
    <fields>
        <field tag="250" tagName="Сумма к оплате" value="{$order->total}"/>
        <field tag="251" tagName="Номер заказа" value="{$order->id}"/>
    </fields>
    <amount>{$order->total}</amount>
    <currency>933</currency>
    <info>Заказ #{$order->id} от {$order->created_at->format('d.m.Y')}</info>
</response>
XML;

        return response($responseXml, 200)
            ->header('Content-Type', 'application/xml; charset=utf-8');
    }

    private function pay(\SimpleXMLElement $xml): Response
    {
        $accountNo = (string)$xml->customer->account;
        $transId = (string)$xml->transaction['id'];
        $amount = (float)$xml->transaction->amount;
        $paymentDate = (string)$xml->transaction['date'];

        $order = Order::where('erip_account', $accountNo)
            ->where('status', 'pending')
            ->lockForUpdate()
            ->first();

        if (!$order) {
            return $this->xmlResponse(100, 'Счёт не найден');
        }

        if (abs($amount - $order->total) > 0.01) {
            return $this->xmlResponse(200, 'Неверная сумма');
        }

        // Идемпотентность — не обрабатывать повторно
        if (EripTransaction::where('transaction_id', $transId)->exists()) {
            return $this->xmlResponse(0, 'Уже обработан');
        }

        DB::transaction(function () use ($order, $transId, $amount, $paymentDate) {
            EripTransaction::create([
                'transaction_id' => $transId,
                'order_id' => $order->id,
                'amount' => $amount,
                'paid_at' => $paymentDate,
            ]);

            $order->update(['status' => 'paid']);
        });

        return $this->xmlResponse(0, 'Принято');
    }

    private function xmlResponse(int $code, string $message): Response
    {
        $xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <result>
        <errorCode>{$code}</errorCode>
        <errorDescription>{$message}</errorDescription>
    </result>
</response>
XML;

        return response($xml, 200)
            ->header('Content-Type', 'application/xml; charset=utf-8');
    }
}

מספר חשבון ERIP

לכל הזמנה מוקצה מספר חשבון ייחודי. בדרך כלל זהו מזהה ההזמנה עצמו, אך חלק מהבנקים דורשים פורמט ספציפי (לדוגמה, מספר בן 15 ספרות). מספר זה מוצג לקונה ומוזן במסוף ERIP.

יש ליצור את מספר החשבון מראש ולהציגו לקונה בעמוד התשלום:

// Генерация номера ЕРИП-счёта $order->erip_account = str_pad($order->id, 12, '0', STR_PAD_LEFT); 

קוד QR עבור ERIP

כדי לפשט תשלום דרך אפליקציות מובייל, ניתן ליצור קוד QR עם נתוני ERIP. פורמט ה-QR מוגדר על ידי סוכן הבנק; בדרך כלל מדובר בקישור עמוק כמו:

erip://pay?service_code=XXXXX&account=000000012345 
use Endroid\QrCode\QrCode;

$qrCode = QrCode::create("erip://pay?service_code={$serviceCode}&account={$order->erip_account}")
    ->setSize(200);

הגדרה בעץ השירותים של ERIP

השירות שלכם חייב להיות רשום בעץ השירותים של ERIP—זה נעשה דרך סוכן הבנק. ההליך כולל: מילוי בקשה, הסכמה על מיקום בעץ (לדוגמה, 'חנויות מקוונות → [אזור] → שם חנות'), בדיקות. רישום ובדיקות אורכים בין 5 ל-15 ימי עסקים. שינוי המיקום בעץ לאחר הרישום הוא בקשה נפרדת ועוד 5–10 ימים.

אבטחה

בקשות מ-ERIP חייבות להתקבל רק מכתובות ה-IP של סוכן הבנק. רשימת ה-IP מסופקת על ידי הבנק. בנוסף, השתמשו ב-HTTPS עם אימות הדדי (mutual TLS) או חתימת HMAC בהתאם לבנק.

// Middleware для проверки IP
public function handle(Request $request, Closure $next): Response
{
    $allowedIps = explode(',', env('ERIP_ALLOWED_IPS'));
    if (!in_array($request->ip(), $allowedIps)) {
        return response('Forbidden', 403);
    }
    return $next($request);
}

מה כלול בעבודה?

  • ניתוח תשתית התשלומים הנוכחית
  • בחירה וחיבור סוכן בנק (סיוע במסמכים)
  • יישום מטפל בבקשות Check/Pay ב-PHP
  • יצירת קודי QR לאפליקציות מובייל
  • רישום בעץ השירותים של ERIP (תמיכה)
  • בדיקות בסביבות בדיקה וייצור
  • הדרכת הצוות שלכם על המערכת
  • תמיכה לאחר ההשקה (חודש חינם)

הזמינו ביקורת על מערכת התשלומים הנוכחית שלכם להתאמה ל-ERIP. אנו נעזור לכם לחבר תשלומים במהירות וללא שגיאות.