תשלום בקוד QR ב-1C-Bitrix: SBP, Tinkoff, YooKassa

כיצד לשלב תשלומים בקוד QR ב-1C-Bitrix עם SBP, Tinkoff ו-YooKassa ## כאשר לקוח מבצע הזמנה בחנות מקוונת, הוא רוצה לשלם בשתי הקלקות - ללא הזנת פרטי כרטיס. קוד QR בדף התשלום פותר זאת: סריקה, אישור באפליקציית הבנק, וסיימתם. אבל מתחת ל-
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
תשלום בקוד QR ב-1C-Bitrix: SBP, Tinkoff, YooKassa
פשוט
~1 יום

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

שאלות נפוצות

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

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1458
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    806
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1163

כיצד לשלב תשלומי QR Code ב-1C-Bitrix עם SBP, Tinkoff ו-YooKassa

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

קוד QR בדף התשלום פותר זאת: סריקה, אישור באפליקציית הבנק, סיום. אבל מתחת למכסה המנוע, מדובר בשילוב של API של סולק, יצירת QR, בדיקת סטטוס ו-UX נכון. אנו מתמחים בשילובי turnkey עבור 1C-Bitrix ו-Bitrix24. עם ניסיון של למעלה מ-10 שנים, אנו מזהים מיד נקודות תורפה. לדוגמה, בפרויקט עם מלאי של 150,000 SKU, יישמנו QR SBP דרך Tinkoff. הבעיה הייתה שבזמן עומסי שיא של 100 הזמנות במקביל, בדיקת הסטטוס לא עמדה בקצב עדכוני המצב, מה שגרם לחלק מהתשלומים להיתקע. ייעלנו זאת על ידי הוספת תורי סוכנים של Bitrix והגדלת מרווח הבדיקה ל-5 שניות עם backoff אקספוננציאלי. כתוצאה מכך, 99.9% מהתשלומים הושלמו כהלכה. שילוב טיפוסי עולה בין $500–1.5k, אך מחזיר את עצמו תוך 3 חודשים באמצעות חיסכון בעמלות.

סוגי קודי QR לתשלום

QR SBP דרך מערכת התשלומים המהירים

עובד עם כל בנק משתתף. לפי תקנת בנק רוסיה מס' 580-P, העברות מתבצעות תוך שניות. העמלות הן 0.4–0.7% מהסכום — פי 3–5 נמוכות יותר מעיבוד כרטיסים. עם מחזור חודשי של $9k–13k, החיסכון בעמלות מגיע ל-$360–520. זו האפשרות הטובה ביותר בשל עמלות נמוכות וקבלה רחבה.

QR בנקאי — פורמט קנייני

ספציפי לבנק (SberPay QR, Tinkoff QR). עובד רק עם אפליקציית אותו בנק. מתאים לקהל של מותג יחיד.

QR כתמונת קישור

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

QR SBP — הבחירה האופטימלית לחנות מקוונת

QR SBP מנצח בפרמטרים מרכזיים: עמלות נמוכות פי 2–3 מכרטיסים, העברת כספים מיידית והחזרים קלים. עבור הלקוח, זהו תרחיש מוכר: סריקת QR בכל אפליקציית בנק. לפי סטטיסטיקות, 70% מהמשתמשים מעדיפים SBP כאשר הוא זמין. החיסכון בעמלות יכול להגיע ל-80% בהשוואה לכרטיסים. לדוגמה, עם מחזור חודשי של $4.5k–6.5k, החיסכון הוא כ-$180–260; ב-$18k–26k, זה $720–1k.

כיצד אנו מגדירים תשלום בקוד QR ב-1C-Bitrix

סקירת שילוב שלב אחר שלב תהליך ההגדרה כולל מספר שלבים: 1. בחירת סולק ורישום טרמינל (Tinkoff, YooKassa וכו'). 2. יצירת קוד QR לכל הזמנה דרך API של הסולק. 3. יישום בדיקת סטטוס עם idempotency ונעילות עסקאות כדי למנוע תשלומים כפולים. 4. שילוב ברכיבי 1C-Bitrix הסטנדרטיים באמצעות תורי סוכנים אסינכרוניים. 5. בדיקת כל התרחישים (הצלחה, ביטול, פסק זמן) עם אימות חתימת SHA-256 של קריאות חוזרות.

כיצד לחבר QR SBP דרך Tinkoff

ראשית, צור תשלום בסולק באמצעות Init, קבל את PaymentId. לאחר מכן בקש את קוד ה-QR באמצעות GetQr. קוד PHP:

// Создаём платёж с типом QR $params = [ 'TerminalKey' => TINKOFF_TERMINAL, 'Amount' => (int)($order->getPrice() * 100), 'OrderId' => $order->getAccountNumber(), 'Description' => 'Заказ #' . $order->getAccountNumber(), 'NotificationURL' => 'https://shop.ru/bitrix/tools/sale_ps_result.php', 'PayType' => 'O', ]; $params['Token'] = tinkoffSign($params, TINKOFF_SECRET); $initResult = tinkoffPost('/v2/Init', $params); $paymentId = $initResult['PaymentId']; // Запрашиваем QR для СБП $qrParams = [ 'TerminalKey' => TINKOFF_TERMINAL, 'PaymentId' => $paymentId, 'DataType' => 'IMAGE', // или 'PAYLOAD' для получения строки ссылки ]; $qrParams['Token'] = tinkoffSign($qrParams, TINKOFF_SECRET); $qrResult = tinkoffPost('/v2/GetQr', $qrParams); // $qrResult['Data'] — base64-encoded PNG с QR-кодом (при DataType=IMAGE) // или строка-ссылка СБП (при DataType=PAYLOAD) 

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

כיצד ליישם QR SBP דרך YooKassa

YooKassa יוצר אוטומטית QR SBP בעת יצירת תשלום עם שיטת // Создаём платёж с типом QR $params = [ 'TerminalKey' => TINKOFF_TERMINAL, 'Amount' => (int)($order->getPrice() * 100), 'OrderId' => $order->getAccountNumber(), 'Description' => 'Заказ #' . $order->getAccountNumber(), 'NotificationURL' => 'https://shop.ru/bitrix/tools/sale_ps_result.php', 'PayType' => 'O', ]; $params['Token'] = tinkoffSign($params, TINKOFF_SECRET); $initResult = tinkoffPost('/v2/Init', $params); $paymentId = $initResult['PaymentId']; // Запрашиваем QR для СБП $qrParams = [ 'TerminalKey' => TINKOFF_TERMINAL, 'PaymentId' => $paymentId, 'DataType' => 'IMAGE', // или 'PAYLOAD' для получения строки ссылки ]; $qrParams['Token'] = tinkoffSign($qrParams, TINKOFF_SECRET); $qrResult = tinkoffPost('/v2/GetQr', $qrParams); // $qrResult['Data'] — base64-encoded PNG с QR-кодом (при DataType=IMAGE) // или строка-ссылка СБП (при DataType=PAYLOAD) :

$payment = $client->createPayment([ 'amount' => ['value' => '1500.00', 'currency' => 'USD'], 'payment_method_data' => ['type' => 'sbp'], 'confirmation' => ['type' => 'qr'], 'description' => 'Заказ #' . $orderId, ], uniqid('', true)); $qrUrl = $payment->getConfirmation()->getConfirmationData(); // qrUrl — строка вида https://qr.nspk.ru/... — кодируем в QR на клиенте 

כדי להציג את ה-QR מ-URL בצד הלקוח, השתמש בספריית JS sbp או $payment = $client->createPayment([ 'amount' => ['value' => '1500.00', 'currency' => 'USD'], 'payment_method_data' => ['type' => 'sbp'], 'confirmation' => ['type' => 'qr'], 'description' => 'Заказ #' . $orderId, ], uniqid('', true)); $qrUrl = $payment->getConfirmation()->getConfirmationData(); // qrUrl — строка вида https://qr.nspk.ru/... — кодируем в QR на клиенте . זה מהיר יותר ואינו מעמיס על השרת.

הצגת QR בעמוד ובדיקת סטטוס

// Показываем QR и полим статус платежа async function showQRPayment(orderId) { const resp = await fetch('/api/get-payment-qr.php', { method: 'POST', body: JSON.stringify({ orderId }), }); const data = await resp.json(); document.getElementById('qr-image').src = 'data:image/png;base64,' + data.qrBase64; document.getElementById('qr-block').style.display = 'block'; // Polling: проверяем статус каждые 3 секунды const pollInterval = setInterval(async () => { const status = await checkPaymentStatus(orderId); if (status === 'paid') { clearInterval(pollInterval); window.location.href = '/payment/success/'; } if (status === 'expired') { clearInterval(pollInterval); showExpiredMessage(); } }, 3000); // Останавливаем polling через 15 минут setTimeout(() => clearInterval(pollInterval), 15 * 60 * 1000); } 

סקריפט בדיקת סטטוס בצד השרת עם idempotency ושלמות עסקאות:

// local/api/check-payment-status.php $orderId = (int)($_POST['orderId'] ?? 0); $paymentId = getExternalPaymentId($orderId); // сохранённый PaymentId Тинькофф $params = [ 'TerminalKey' => TINKOFF_TERMINAL, 'PaymentId' => $paymentId, ]; $params['Token'] = tinkoffSign($params, TINKOFF_SECRET); $status = tinkoffPost('/v2/GetState', $params); $map = [ 'CONFIRMED' => 'paid', 'CANCELED' => 'cancelled', 'DEADLINE_EXPIRED' => 'expired', ]; echo json_encode([ 'status' => $map[$status['Status']] ?? 'pending', ]); 

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

טעויות נפוצות בהגדרת תשלום QR

בעיה נפוצה אחת היא פסק זמן ביצירת ה-QR דרך API של הסולק. אם הסולק לא מגיב תוך 10 שניות, יש צורך ב-fallback: הצג אמצעי תשלום חלופי או נסה שוב את הבקשה במרווח של 1-2 שניות. אנו מגדירים פסק זמן של לפחות 30 שניות עבור API של Tinkoff ובודקים את סטטוס התשלום ברקע באמצעות סוכנים.

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

מה כלול בהגדרת תשלום QR Turnkey

רכיב תיאור
בחירת סולק וחיבור Tinkoff, YooKassa או בנק אחר עם SBP
יצירת קוד QR בדף ההזמנה תמונת Base64 או URL + עיבוד בצד הלקוח
בדיקת סטטוס תשלום עם idempotency סקריפט שרת + מרווח לקוח עם טיפול בפסק זמן
שילוב עם 1C-Bitrix מערכת תשלום, מטפלי הודעות, רישום לוגים
תיעוד ובדיקות הוראות למנהל, כל התרחישים נבדקו
תמיכה לאחר השקה אחריות לחודש, ייעוץ לשינויים

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

שלב זמן
QR SBP דרך Tinkoff/YooKassa 1–2 ימים
בדיקת סטטוס + עדכון UX עם backoff אקספוננציאלי 0.5–1 יום
שילוב בדף התשלום 0.5–1 יום
סה"כ (כולל בדיקות) מ-2 עד 4 ימים

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