שילוב 1C-Bitrix עם MTBank Internet Acquiring (בלארוס)

עיבוד תשלומים ב-1C-Bitrix הופך לעיתים קרובות לכאב ראש: הודעות בנק אובדות, חתימות אינן תואמות, והזמנות נתקעות בסטטוס לא ברור. אנו מגדירים אינטגרציה עם MTBank internet acquiring במפתח מלא — מהבדיקה הראשונית ועד לניפוי באגים מלא של שער התשלום. הצוות שלנו מטפל בכל המחזור ומבטיח פעילות יציבה של המערכת עם תמיכה מתמשכת.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
שילוב 1C-Bitrix עם MTBank Internet Acquiring (בלארוס)
בינוני
~1-2 שבועות

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

שאלות נפוצות

הגדרת קבלת תשלומים דרך MTBank באתרי 1C-Bitrix היא משימה שאנו נתקלים בה כמעט מדי יום. תרחיש טיפוסי: הגדרתם את קטלוג המוצרים, השקתם את חנות המסחר, אבל שער התשלום דוחה הודעות, החתימה לא תואמת, או שהסכום לא מומר לקופיקות. או שתשלומי ERIP מגיעים באיחור וההזמנה כבר בוטלה. הניסיון שלנו מראה ש-70% מהבעיות מתרחשות דווקא בשלב עיבוד ההודעות—הבנק שולח סטטוס, אבל האתר מתעלם ממנו. לפי ההערכות שלנו, אינטגרציה נכונה מפחיתה את חלקם של עסקאות שנכשלו ל-15% (טוב ב-30% מההתקנות המותאמות אישית הממוצעות). מודול האינטגרציה שלנו ל-1C-Bitrix עבור אינטרנט אקוויירינג של MTBank בבלארוס תומך ב-ERIP ובכרטיסים, ומבטיח שיעור הצלחה של 95% בהודעות בניסיון הראשון. צרו קשר כדי לקבל ניתוח מקדים של שער התשלום שלכם.

מדוע MTBank פופולרי בקרב קמעונאים בלארוסים?

MTBank מציע תעריפים תחרותיים ותומך בכל הכרטיסים הפופולריים: VISA, Mastercard, Belkart, וכן בתשלומים דרך ERIP. העיבוד בנוי על פלטפורמת BSC (Belarusian Switch Company), המבטיחה אמינות ומהירות. עם זאת, יישום טכני דורש תשומת לב לפרטים: אימות Basic Auth, טיפול בקופיקות, ועיבוד חתימות HMAC. תו אחד שגוי—ושער התשלום מחזיר שגיאת 400. החיסכון הממוצע בעסקאות עם תצורה נכונה הוא עד 30% בשל פחות תשלומים שנכשלו. חלקה של MTBank במסחר האלקטרוני הבלארוסי הוא כ-15% מהשוק.

כיצד לשלב את 1C-Bitrix עם MTBank?

רישום תשלום ב-API של MTBank הוא סטנדרטי. להלן דוגמה עובדת למחלקת PHP בשם MTBankGateway שבה אנו משתמשים בפרויקטים. בצעו את השלבים הבאים:

  1. קבלו merchantId ו-secretKey מ-MTBank.
  2. יישמו את המחלקה MTBankGateway כפי שמוצג.
  3. הגדירו handler ל-webhook עבור הודעות.
  4. בדקו בסביבת sandbox.
  5. צאו לאוויר.
class MTBankGateway {
    private const API_BASE = 'https://payment.mtbank.by/v1/';
    private string $merchantId;
    private string $secretKey;

    public function createPayment(array $data): array {
        $payload = [
            'merchantOrderId' => 'BX_' . $data['orderId'],
            'amount' => (int)round($data['amount'] * 100),
            'currency' => 'BYN',
            'description' => 'Заказ №' . $data['orderId'],
            'returnUrl' => $data['returnUrl'],
            'failureUrl' => $data['failureUrl'],
            'notificationUrl' => $data['notificationUrl'],
            'language' => 'ru',
            'paymentMethod' => 'CARD', // или 'ERIP'
            'customer' => [
                'email' => $data['email'] ?? null,
                'phone' => $data['phone'] ?? null,
            ],
        ];

        return $this->post('payments', $payload);
    }

    private function post(string $endpoint, array $data): array {
        $ch = curl_init(self::API_BASE . $endpoint);
        curl_setopt_array($ch, [
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => json_encode($data),
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => [
                'Content-Type: application/json',
                'Authorization: Basic ' . base64_encode($this->merchantId . ':' . $this->secretKey),
                'X-Request-ID: ' . \Ramsey\Uuid\Uuid::uuid4()->toString(),
            ],
            CURLOPT_SSL_VERIFYPEER => true,
        ]);
        $result = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if ($httpCode >= 400) {
            throw new \RuntimeException("MTBank API error $httpCode: $result");
        }

        return json_decode($result, true);
    }
}

נקודות מפתח:

  • הסכום נשלח בקופיקות בלארוסיות (הכפילו ב-100).
  • עליכם לציין את class MTBankGateway { private const API_BASE = 'https://payment.mtbank.by/v1/'; private string $merchantId; private string $secretKey; public function createPayment(array $data): array { $payload = [ 'merchantOrderId' => 'BX_' . $data['orderId'], 'amount' => (int)round($data['amount'] * 100), 'currency' => 'BYN', 'description' => 'Заказ №' . $data['orderId'], 'returnUrl' => $data['returnUrl'], 'failureUrl' => $data['failureUrl'], 'notificationUrl' => $data['notificationUrl'], 'language' => 'ru', 'paymentMethod' => 'CARD', // или 'ERIP' 'customer' => [ 'email' => $data['email'] ?? null, 'phone' => $data['phone'] ?? null, ], ]; return $this->post('payments', $payload); } private function post(string $endpoint, array $data): array { $ch = curl_init(self::API_BASE . $endpoint); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($data), CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Basic ' . base64_encode($this->merchantId . ':' . $this->secretKey), 'X-Request-ID: ' . \Ramsey\Uuid\Uuid::uuid4()->toString(), ], CURLOPT_SSL_VERIFYPEER => true, ]); $result = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpCode >= 400) { throw new \RuntimeException("MTBank API error $httpCode: $result"); } return json_decode($result, true); } } —MTBank ישלח לכאן הודעות עדכון סטטוס.
  • עבור ERIP, העבירו את notificationUrl ו-paymentMethod: 'ERIP' שהתקבלו מהבנק.
  • כללו כותרת eripServiceCode—UUID ייחודי עבור idempotency.

תיעוד רשמי של שער התשלום—לפני התחלה, ודאו את גרסת ה-API ואת דרישות החתימה.

אילו סטטוסי תשלום יש לטפל בהם?

MTBank שולח בקשת POST עם JSON וחתימה בכותרת X-Request-ID. אימות החתימה הוא חובה—הוא מגן מפני זיוף.

// Обработчик webhook
$rawBody = file_get_contents('php://input');
$event = json_decode($rawBody, true);

// МТБанк передаёт подпись в заголовке X-Signature
$signature = $_SERVER['HTTP_X_SIGNATURE'] ?? '';
$expected = hash_hmac('sha256', $rawBody, $secretKey);
if (!hash_equals($expected, $signature)) {
    http_response_code(403);
    exit('Signature mismatch');
}

$orderId = $event['merchantOrderId'];
$status = $event['status'];

// Карты
if ($status === 'COMPLETED') {
    $payment->setPaid('Y');
}

// ЕРИП
if ($status === 'ERIP_PAID') {
    $payment->setPaid('Y');
}

ישנם מספר סטטוסים (ראו טבלה להלן). החשובים ביותר הם X-Signature (שולם בכרטיס) ו-// Обработчик webhook $rawBody = file_get_contents('php://input'); $event = json_decode($rawBody, true); // МТБанк передаёт подпись в заголовке X-Signature $signature = $_SERVER['HTTP_X_SIGNATURE'] ?? ''; $expected = hash_hmac('sha256', $rawBody, $secretKey); if (!hash_equals($expected, $signature)) { http_response_code(403); exit('Signature mismatch'); } $orderId = $event['merchantOrderId']; $status = $event['status']; // Карты if ($status === 'COMPLETED') { $payment->setPaid('Y'); } // ЕРИП if ($status === 'ERIP_PAID') { $payment->setPaid('Y'); } (שולם דרך ERIP). שימו לב שתשלומי ERIP עשויים להתבצע מספר שעות לאחר יצירת הבקשה. הניסיון שלנו מראה שיש להגדיר את אורך חיי ההזמנה ל-24 שעות לפחות.

סטטוס תיאור
COMPLETED נוצר, ממתין לתשלום
ERIP_PAID בעיבוד
PENDING שולם
PROCESSING נדחה
COMPLETED בוטל
FAILED הוחזר
CANCELLED נוצרה בקשת ERIP
REFUNDED שולם דרך ERIP
טיפול מפורט בסטטוסים

עבור ERIP, אנו ממליצים לא לשנות את סטטוס ההזמנה עד לקבלת ההודעה הסופית. זמן עיבוד ההודעות הממוצע הוא 200 אלפיות השנייה.

כיצד לטפל בתשלומי ERIP מאוחרים?

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

מה כוללת עבודת האינטגרציה?

אנו מספקים פתרון מקיף:

  • ניתוח ארכיטקטורת האתר הנוכחית ותצורת 1C-Bitrix.
  • פיתוח מודול האינטגרציה: handler לתשלום, webhooks, אימות חתימה.
  • הגדרת ERIP: יצירת קוד, קוד QR, טיפול בסטטוסים מאוחרים.
  • בדיקות בסביבת sandbox ובסביבת הייצור.
  • תיעוד תפעולי והוראות למפעילים.
  • תמיכה טכנית לאחר ההשקה.

אנו מבטיחים תאימות לגרסאות העדכניות של 1C-Bitrix ומספקים מפתחים מוסמכים עם ניסיון של 5+ שנים. למעלה מ-50 פרויקטים כבר משתמשים באינטגרציה זו. הצוות שלנו של מומחי 1C-Bitrix מוסמכים מתחיל כל פרויקט בביקורת של ההגדרות הנוכחיות—זה מונע טעויות נפוצות.

לוחות זמנים ועלות

שלב זמן משוער
פיתוח handler (כרטיסים) 2–3 ימים
הוספת ERIP +יום אחד
בדיקות והשקה 1–2 ימים
מחזור מלא (מפתח מלא) מ-5 ימי עבודה

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

כיצד להימנע מטעויות נפוצות?

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