שילוב 1C-Bitrix עם שירותי תשלומים分期 (Yandex Split, Dolyami)
קונה לעיתים קרובות נוטש רכישה גדולה אם המחיר פוגע בתקציב. תשלום分期 הוא מנגנון המחלק את הסכום ל-2–4 תשלומים ללא ריבית וללא הסכם אשראי. אנחנו, צוות עם 10 שנות ניסיון ב-Bitrix, כבר שילבנו את Yandex Split ו-Dolyami עבור עשרות חנויות מקוונות. נספר לכם כיצד לעשות זאת טכנית בצורה מקצועית, אילו מלכודות תפגשו, וכיצד להימנע מהן.
כיצד פועל תשלום分期 ב-Bitrix
שירותי分期 אינם נותנים ללקוח הלוואה—הם משלמים לחנות את הסכום המלא מיד (או תוך 1–2 ימים), ולאחר מכן גובים תשלומים מהלקוח בעצמם. עבור 1C-Bitrix, מדובר במערכת תשלום רגילה: צרו handler, קבלו webhook עם אישור, סמנו את ההזמנה כשולמה. ההבדל הוא ב-API ובמודל הסטטוסים: פחות סטטוסי ביניים מאשר במערכות אשראי.
השוואה בין Yandex Split ו-Dolyami
שני השירותים פותרים את אותה בעיה אך נבדלים במגבלות ובקהל. Yandex Split מאפשר פיצול סכומים מ-$10–1.5k ל-2–4 תשלומים. Dolyami — מ-$5–300 ל-4 תשלומים. Yandex Split מתאים יותר למוצרים יקרים (אלקטרוניקה, רהיטים), בעוד Dolyami מתאים למוצרים בטווח מחירים ממוצע (ביגוד, קוסמטיקה). אנו ממליצים לחבר את שניהם: בדף הקופה אנו מציגים שני כפתורים, והלקוח בוחר את השירות שלו.
יישום טכני של Yandex Split
Yandex Split מוטמע דרך Yandex Pay SDK. בדף הקופה, כללו כפתור JavaScript עם הפרמטר paymentType: 'SPLIT'. לאחר האישור, Yandex שולח webhook אל callbackUrl שלכם. ה-handler ב-1C-Bitrix חייב:
- לאמת את ה-JWT token מהכותרת.
- ליצור הזמנה (
\Bitrix\Sale\Order::create). - לאשר דרך API (
POST /api/merchant/v1/orders/{orderId}/capture).
דוגמה ל-handler ב-/local/php_interface/include/sale_payment/yandex_split/:
public function initiatePay( \Bitrix\Sale\Payment $payment, \Bitrix\Main\Request $request = null ) {
$this->setExtraParams([
'MERCHANT_ID' => $this->getBusinessValue($payment, 'MERCHANT_ID'),
'CART_ITEMS' => $this->getCartItems($payment),
'AMOUNT' => $payment->getSum(),
]);
return $this->showTemplate($payment, 'template');
}התבנית public function initiatePay( \Bitrix\Sale\Payment $payment, \Bitrix\Main\Request $request = null ) { $this->setExtraParams([ 'MERCHANT_ID' => $this->getBusinessValue($payment, 'MERCHANT_ID'), 'CART_ITEMS' => $this->getCartItems($payment), 'AMOUNT' => $payment->getSum(), ]); return $this->showTemplate($payment, 'template'); } מציגה את כפתור Yandex Pay עם הפרמטר template/template.php.
יישום טכני של Dolyami
שירות "Dolyami" מ-T-Bank משתמש ב-REST API. נקודת קצה: SPLIT. אימות: HTTP Basic Auth + חתימת תעודת X509. יצירת הזמנה:
$response = $this->apiRequest('POST', '/v1/orders', [
'id' => $payment->getField('ORDER_ID'),
'amount' => $payment->getSum(),
'prepaid_amount' => 0,
'items' => $this->formatItems($payment),
'client_info' => [
'first_name' => $order->getPropertyValue('NAME'),
'last_name' => $order->getPropertyValue('LAST_NAME'),
'phone' => $order->getPropertyValue('PHONE'),
'email' => $order->getPropertyValue('EMAIL'),
],
'notification_url' => $this->getCallbackUrl($payment),
'success_url' => $this->getSuccessUrl($payment),
'fail_url' => $this->getFailUrl($payment),
]);ה-API מחזיר https://partner.dolyame.ru/v1/orders — הפניה לדף האישור.
מודל סטטוסים והחזרים
| סטטוס | Yandex Split | Dolyami | פעולה ב-Bitrix |
|---|---|---|---|
| נוצר | PENDING | new | בהמתנה |
| אושר | CONFIRMED | approved | $response = $this->apiRequest('POST', '/v1/orders', [ 'id' => $payment->getField('ORDER_ID'), 'amount' => $payment->getSum(), 'prepaid_amount' => 0, 'items' => $this->formatItems($payment), 'client_info' => [ 'first_name' => $order->getPropertyValue('NAME'), 'last_name' => $order->getPropertyValue('LAST_NAME'), 'phone' => $order->getPropertyValue('PHONE'), 'email' => $order->getPropertyValue('EMAIL'), ], 'notification_url' => $this->getCallbackUrl($payment), 'success_url' => $this->getSuccessUrl($payment), 'fail_url' => $this->getFailUrl($payment), ]); |
| נדחה | REJECTED | rejected | בטל תשלום |
| בוטל | CANCELED | canceled | בטל תשלום |
| הוחזר | REFUNDED | refunded | החזר ב-Bitrix |
שני השירותים תומכים בהחזרים חלקיים. עבור Yandex: link, עבור Dolyami: $payment->setPaid('Y'). בהחזר חלקי, השירות מחשב מחדש את לוח הזמנים של הלקוח, ורק הסכום העודף מוחזר לחנות.
הגישה שלנו: מקרה אמיתי
אחד הלקוחות שלנו, קמעונאי אלקטרוניקה עם 5,000 הזמנות בחודש, חווה עיכובים באישור תשלום של עד 10 שניות עקב עיבוד webhook סינכרוני. העברנו את טיפול ה-webhook לתור של Bitrix agent, יישמנו בדיקות idempotency, וייעלנו את לוגיקת יצירת ההזמנות. תוצאה: זמן האישור הממוצע ירד ל-1.5 שניות, וההזמנות שאבדו עקב timeout ירדו ב-80%. זהו העומק האופייני שאנו מביאים לכל אינטגרציה.
מה כולל השירות
- ניתוח מערכת התשלום והעגלה הקיימת.
- פיתוח שני handlers (Yandex Split ו-Dolyami) עם טיפול ב-webhook.
- אינטגרציה עם 1C (החלפת סטטוסי הזמנות).
- בדיקות על הזמנות בדיקה ואמיתיות.
- תיעוד תפעולי.
- הדרכה למנהלים על טיפול בהחזרים.
העלות מחושבת באופן אישי, לוח הזמנים הוא מ-3 עד 5 ימי עבודה.
אבטחה וניטור של אינטגרציות分期
שני השירותים שולחים הודעות webhook עם חתימה שיש לאמת בצד השרת. עבור Yandex Split, החתימה נמצאת ב-JWT token של הכותרת POST /api/merchant/v1/orders/{orderId}/refund; עבור Dolyami, דרך HMAC-SHA256 בכותרת POST /v1/orders/{orderId}/refund. ללא אימות חתימה, תוקף יכול לזייף אישור תשלום ולקבל את הסחורה בחינם.
אנו ממליצים להגדיר ניטור תור webhook: אם סטטוס אישור לא מגיע תוך 10 דקות, שלחו בקשה חוזרת דרך ה-API של השירות. שני הספקים תומכים בבדיקת סטטוס הזמנה ידנית דרך Authorization (Yandex) ו-X-Signature (Dolyami). זה מגן מפני הזמנות שאבדו במהלך תקלות רשת זמניות.
עבור חנויות עם תעבורה גבוהה (מעל 200 הזמנות ביום), אנו ממליצים לעבד webhooks דרך תור משימות—לדוגמה, דרך Bitrix agents או Redis Queue—כדי לא לחסום את תגובת ה-HTTP לשירות. נקודת הקצה חייבת להגיב תוך 3 שניות, אחרת השירות יחזור על ההודעה. הגדירו idempotency ל-handler: בקבלת אותו webhook פעמיים, סטטוס ההזמנה לא אמור להשתנות פעמיים. זה נעשה על ידי בדיקת סטטוס התשלום הנוכחי לפני העדכון ודילוג על ההודעה אם הסטטוס כבר מוגדר.
היתרונות של האינטגרציה שלנו
מעל 200 פרויקטים מוצלחים של אינטגרציית מערכות תשלום עם 1C-Bitrix, 10+ שנים בשוק, מומחים מוסמכים בבית. אנו משתמשים ב-SDKs הרשמיים ועוקבים אחר המלצות הספקים (Yandex Pay SDK, Dolyami API).
צרו קשר — נעריך את הפרויקט שלכם ונציע את הפתרון הטוב ביותר.

