שילוב Webpay: קבל תשלומים באתר שלך

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

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

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

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

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

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

שאלות נפוצות

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

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

שילוב Webpay: קבלת תשלומים באתר שלך

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

Webpay נותר שער תשלום מרכזי עבור פרויקטים בלארוסיים בזכות תמיכתו ב-ERIP וב-Belkart. בלעדיו, אתה מאבד עד 30% מהקהל שאינו משתמש בכרטיסים בינלאומיים. בניגוד ל-Stripe או PayPal, Webpay מספק עיבוד מקומי ומפחית עמלה ב-15–20%. במקרה אמיתי לחנות מקוונת עם מחזור של 10,000 BYN, חיסכון העמלה הסתכם ב-250 BYN לחודש. שילבנו את Webpay עבור 20+ פרויקטים וצברנו ניסיון המאפשר לנו להימנע ממלכודות טיפוסיות.

Webpay מעבד תשלומים דרך ERIP פי 3 מהר יותר מאשר ממשקי API של ספקים אחרים — זה קריטי עבור שליחות המוניות ומבצעים.

אילו בעיות אנו פותרים במהלך השילוב?

שגיאות חתימה הן נקודת הכאב הנפוצה ביותר. הפרמטרים מחוברים בסדר קפדני: seed, store_id, order_num, test_flag, currency, amount, secret_key. אם תשנה את הסדר, החתימה לא תתאים. השתמש בתבנית שלנו.

עיבוד שגוי של הודעות — מטפל ה-notify חייב לבדוק לא רק את החתימה אלא גם את קוד התוצאה (wsb_result_code). הצלחה היא רק קוד 1. כל דבר אחר הוא דחייה או ביטול.

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

כיצד להימנע משגיאות חתימה בעת שילוב Webpay?

הנה דוגמה לאתחול תשלום ב-Laravel:

function buildWebpayForm(int $orderId, float $amount, string $currency = 'BYN'): string {
    $storeId = env('WEBPAY_STORE_ID');
    $secretKey = env('WEBPAY_SECRET_KEY');
    $wsb_order_num = $orderId;
    $wsb_total = number_format($amount, 2, '.', '');
    $wsb_currency_id = $currency;
    $seed = time();
    $wsb_test = env('WEBPAY_TEST', 1);
    $signature = md5(
        $seed . $storeId . $wsb_order_num . $wsb_test . $wsb_currency_id . $wsb_total . $secretKey
    );
    $action = $wsb_test ? 'https://test.webpay.by' : 'https://payment.webpay.by';
    return <<<HTML
    <form method="POST" action="{$action}" id="webpay-form">
        <input type="hidden" name="*scart" value="">
        <input type="hidden" name="wsb_version" value="2">
        <input type="hidden" name="wsb_storeid" value="{$storeId}">
        <input type="hidden" name="wsb_store" value="Магазин">
        <input type="hidden" name="wsb_order_num" value="{$wsb_order_num}">
        <input type="hidden" name="wsb_currency_id" value="{$wsb_currency_id}">
        <input type="hidden" name="wsb_version" value="2">
        <input type="hidden" name="wsb_test" value="{$wsb_test}">
        <input type="hidden" name="wsb_total" value="{$wsb_total}">
        <input type="hidden" name="wsb_signature" value="{$signature}">
        <input type="hidden" name="wsb_seed" value="{$seed}">
        <input type="hidden" name="wsb_return_url" value="https://example.com/payment/return">
        <input type="hidden" name="wsb_fail_url" value="https://example.com/payment/fail">
        <input type="hidden" name="wsb_notify_url" value="https://example.com/webhook/webpay">
        <input type="hidden" name="wsb_lang" value="russian">
        <button type="submit">Перейти к оплате</button>
    </form>
    HTML;
}

מדוע מטפל ה-notify צריך להחזיר HTTP 200?

בעת קבלת POST אל function buildWebpayForm(int $orderId, float $amount, string $currency = 'BYN'): string { $storeId = env('WEBPAY_STORE_ID'); $secretKey = env('WEBPAY_SECRET_KEY'); $wsb_order_num = $orderId; $wsb_total = number_format($amount, 2, '.', ''); $wsb_currency_id = $currency; $seed = time(); $wsb_test = env('WEBPAY_TEST', 1); $signature = md5( $seed . $storeId . $wsb_order_num . $wsb_test . $wsb_currency_id . $wsb_total . $secretKey ); $action = $wsb_test ? 'https://test.webpay.by' : 'https://payment.webpay.by'; return <<<HTML <form method="POST" action="{$action}" id="webpay-form"> <input type="hidden" name="*scart" value=""> <input type="hidden" name="wsb_version" value="2"> <input type="hidden" name="wsb_storeid" value="{$storeId}"> <input type="hidden" name="wsb_store" value="Магазин"> <input type="hidden" name="wsb_order_num" value="{$wsb_order_num}"> <input type="hidden" name="wsb_currency_id" value="{$wsb_currency_id}"> <input type="hidden" name="wsb_version" value="2"> <input type="hidden" name="wsb_test" value="{$wsb_test}"> <input type="hidden" name="wsb_total" value="{$wsb_total}"> <input type="hidden" name="wsb_signature" value="{$signature}"> <input type="hidden" name="wsb_seed" value="{$seed}"> <input type="hidden" name="wsb_return_url" value="https://example.com/payment/return"> <input type="hidden" name="wsb_fail_url" value="https://example.com/payment/fail"> <input type="hidden" name="wsb_notify_url" value="https://example.com/webhook/webpay"> <input type="hidden" name="wsb_lang" value="russian"> <button type="submit">Перейти к оплате</button> </form> HTML; } , בדוק את החתימה ואת קוד התוצאה:

public function notify(Request $request): Response
{
    $data = $request->all();
    $expected = md5(
        $data['wsb_seed'] .
        env('WEBPAY_STORE_ID') .
        $data['wsb_order_num'] .
        $data['wsb_test'] .
        $data['wsb_currency_id'] .
        $data['wsb_total'] .
        env('WEBPAY_SECRET_KEY')
    );

    if ($data['wsb_signature'] !== $expected) {
        Log::warning('Webpay: invalid signature', $data);
        return response('ERROR', 400);
    }

    if ((int)$data['wsb_result_code'] === 1) {
        $orderId = (int)$data['wsb_order_num'];
        Order::where('id', $orderId)->update([
            'status' => 'paid',
            'transaction_id' => $data['wsb_transaction_num'] ?? null,
        ]);
    }

    return response('OK');
}

wsb_notify_url: 1 — הצלחה, 2 — דחייה, 3 — ביטול על ידי הקונה.

מה לעשות בדף החזרה?

אל תסתמך על פרמטרים ב-returnUrl — השתמש בסטטוס ההזמנה ממסד הנתונים, שמתעדכן על ידי מטפל ה-notify:

public function return(Request $request): View
{
    $orderId = $request->input('wsb_order_num');
    $order = Order::findOrFail($orderId);
    return view('payment.result', ['paid' => $order->status === 'paid', 'order' => $order]);
}

כיצד לטפל בהחזרים דרך Webpay?

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

מה לעשות במקרה של פסק זמן בחיבור?

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

השוואה בין סביבת בדיקה לסביבת ייצור

פרמטר סביבת בדיקה סביבת ייצור
URL test.webpay.by payment.webpay.by
wsb_test 1 0
כרטיסים כרטיסי בדיקה מהתיעוד כרטיסים אמיתיים
הפעלה מיידית 1–3 ימי עסקים לאחר הבדיקות

טבלת קודי שגיאה וטיפול בהם

קוד תוצאה תיאור פעולה
1 תשלום מוצלח עדכן סטטוס הזמנה ל-'שולם'
2 דחיית בנק הודע ללקוח והצע כרטיס אחר
3 ביטול על ידי הקונה חזור לדף העגלה
אחר שגיאה טכנית רשום ביומן והחזר HTTP 400

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

תהליך עבודה: מניתוח ועד פריסה

  1. ניתוח — אנו לומדים את החנות שלך, בוחרים את שיטת השילוב (מודולים מוכנים או מותאם אישית).
  2. עיצוב — אנו מסכמים על תוכנית זרימת התשלום, כתובות URL להודעות.
  3. יישום — אנו מיישמים את טופס התשלום, מטפלים, החזרים.
  4. בדיקות — אנו מריצים את כל התרחישים בסביבת הבדיקה: הצלחה, דחייה, פסק זמן.
  5. פריסה — אנו מפעילים מצב ייצור, עוקבים אחר העסקאות הראשונות.

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

  • תיעוד שילוב (תוכנית, תיאורי שיטות).
  • בדיקת 10+ תרחישי תשלום.
  • הדרכת מנהל המערכת שלך על טיפול בהחזרים ודוחות Webpay.
  • תמיכה למשך 30 יום לאחר ההשקה.

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

שילוב Webpay אורך בין 5 ל-10 ימי עסקים בהתאם למורכבות החנות. העלות מחושבת באופן אישי. אנו נעריך את הפרויקט שלך לאחר סקירת האתר שלך — צור קשר. הזמן שילוב וקבל ייעוץ ממהנדס.

למה להפקיד בידינו את השילוב?

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