בעיה: מודול PayPal מיושן ב-Bitrix
PayPal הוא כלי מרכזי לסחר בינלאומי, אך 1C-Bitrix חסר מודול מובנה מודרני. ה-PayPal Standard הישן הוצא משימוש, ו-PayPal Express Checkout הוחלף בפלטפורמת PayPal Commerce (PPCP). השלמנו למעלה מ-50 אינטגרציות של מערכות תשלום. לקוח אחד, לפני המעבר ל-PPCP, איבד עד 15% מההזמנות עקב שגיאות תשלום. לפי PayPal, פלטפורמת Commerce מטפלת ב-60% מכלל התשלומים דרך שירות זה.
מדוע אינטגרציה מותאמת אישית עדיפה
פיתוח מותאם אישית מעניק שליטה מלאה: אתם בוחרים אמצעי תשלום, מטפלים ב-webhooks ומעבדים החזרים. בפועל, אינטגרציות כאלה מפחיתות שגיאות תשלום ב-30–40% בהשוואה למודולים מיושנים. אחד מלקוחותינו קיצץ עלויות תפעול לעיבוד החזרים בכמעט חצי — באמצעות אוטומציה ופחות מקרי הונאה. החיסכון בעמלות PayPal יכול להגיע ל-30% עם הגדרה נכונה. ערך ההזמנה הממוצע להזמנות בינלאומיות לאחר חיבור PPCP עולה ב-25%, והאינטגרציה מחזירה את עצמה תוך 3 חודשים.
כיצד לחבר את PayPal Commerce Platform ל-1C-Bitrix
פלטפורמת PayPal Commerce (PPCP) משלבת מספר אמצעי תשלום:
- כרטיסים (Visa/Mastercard/AmEx) ללא חשבון PayPal (Guest Checkout);
- תשלום דרך חשבון PayPal של הקונה;
- Pay Later (BNPL) במדינות נתמכות;
- Venmo (ארה"ב בלבד).
כדי להתחבר, החנות נרשמת כסוחר דרך תוכנית השותפים של PayPal או ישירות ב-business.paypal.com. אנו מסייעים בהגדרה ומשיגים את ה-CLIENT_ID וה-CLIENT_SECRET הנדרשים.
שתי אפשרויות יישום
PayPal Checkout (כפתורים חכמים). ה-JavaScript SDK של PayPal מוטמע בדף התשלום. הקונה לוחץ על כפתור PayPal, מאמת בחלון קופץ, וחוזר לאתר. נתוני הכרטיס לעולם לא נוגעים בשרת הסוחר. מתאים לרוב החנויות.
Orders API (צד שרת). ההזמנה נוצרת בשרת דרך POST /v2/checkout/orders, הקונה מאשר אותה, והשרת לוכד כספים דרך POST /v2/checkout/orders/{id}/capture. יותר שליטה, נדרש לזרימות מותאמות אישית ומנויים.
ארכיטקטורת המודול ב-Bitrix
מטפל מערכת התשלום מרחיב את \Bitrix\Sale\PaySystem\ServiceHandler. הפרמטרים מאוחסנים ב-b_sale_pay_system_action: CLIENT_ID, CLIENT_SECRET, ENVIRONMENT (sandbox/live).
קבלת אסימון גישה:
$response = $httpClient->post(
$baseUrl . '/v1/oauth2/token',
['grant_type' => 'client_credentials'],
['Authorization' => 'Basic ' . base64_encode($clientId . ':' . $clientSecret)]
);
$accessToken = $response['access_token'];יצירת הזמנה (Orders API v2):
$order = $httpClient->post($baseUrl . '/v2/checkout/orders', [
'intent' => 'CAPTURE',
'purchase_units' => [[
'reference_id' => 'order_' . $bitrixOrderId,
'amount' => [
'currency_code' => 'USD',
'value' => '99.00',
],
]],
'application_context' => [
'return_url' => $returnUrl,
'cancel_url' => $cancelUrl,
],
]);
הקונה מופנה ל-$response = $httpClient->post( $baseUrl . '/v1/oauth2/token', ['grant_type' => 'client_credentials'], ['Authorization' => 'Basic ' . base64_encode($clientId . ':' . $clientSecret)] ); $accessToken = $response['access_token']; . לאחר החזרה, אנו קוראים ל-$order = $httpClient->post($baseUrl . '/v2/checkout/orders', [ 'intent' => 'CAPTURE', 'purchase_units' => [[ 'reference_id' => 'order_' . $bitrixOrderId, 'amount' => [ 'currency_code' => 'USD', 'value' => '99.00', ], ]], 'application_context' => [ 'return_url' => $returnUrl, 'cancel_url' => $cancelUrl, ], ]); .
כפתורים חכמים ב-JavaScript
לגישת Checkout, ה-JS SDK מתווסף לדף הרכיב links[rel=approve].href:
<script src="https://www.paypal.com/sdk/js?client-id=CLIENT_ID¤cy=USD"></script>
<div id="paypal-button-container"></div>
<script>
paypal.Buttons({
createOrder: function(data, actions) {
return fetch('/api/paypal/create-order', {method: 'POST'})
.then(r => r.json())
.then(d => d.id);
},
onApprove: function(data, actions) {
return fetch('/api/paypal/capture-order/' + data.orderID, {method: 'POST'})
.then(r => r.json())
.then(d => {
if (d.status === 'COMPLETED')
window.location = '/order/success/';
});
}
}).render('#paypal-button-container');
</script>בצד Bitrix, נוצרים שני נקודות קצה AJAX: create-order (מתחיל הזמנה ב-PayPal, מחזיר id) ו-capture-order (לוכד כספים, מעדכן סטטוס ב-POST /v2/checkout/orders/{id}/capture).
Webhooks והחזרים
PayPal שולח התראות דרך Webhooks v2. הירשמו לאירועים ב-PayPal Developer Dashboard. אירועים נדרשים:
-
sale.order.ajax— מאשר לכידת כספים -
<script src="https://www.paypal.com/sdk/js?client-id=CLIENT_ID¤cy=USD"></script> <div id="paypal-button-container"></div> <script> paypal.Buttons({ createOrder: function(data, actions) { return fetch('/api/paypal/create-order', {method: 'POST'}) .then(r => r.json()).then(d => d.id); }, onApprove: function(data, actions) { return fetch('/api/paypal/capture-order/' + data.orderID, {method: 'POST'}) .then(r => r.json()).then(d => { if (d.status === 'COMPLETED') window.location = '/order/success/'; }); } }).render('#paypal-button-container'); </script>— דחייה -
b_sale_order— החזר
אימות חתימת ה-webhook:
$result = \PayPalHttp\HttpClient::verifyWebhookSignature( $webhookId, $headers, $body, $accessToken ); החזר דרך PAYMENT.CAPTURE.COMPLETED. PAYMENT.CAPTURE.DENIED נשמר ב-PAYMENT.CAPTURE.REFUNDED בעת לכידה.
$refund = $httpClient->post(
$baseUrl . '/v2/payments/captures/' . $captureId . '/refund',
['amount' => ['value' => '25.00', 'currency_code' => 'USD']]
);החזר מלא — גוף בקשה ריק, PayPal מחזיר את כל הסכום שנתפס.
כיצד לבדוק את PayPal ב-Sandbox
ב-PayPal Developer Dashboard, צרו חשבונות sandbox: סוחר אחד (business), קונה אחד (personal). כרטיסי בדיקה זמינים ב-Sandbox → Accounts → buyer → Credit Cards. ה-sandbox מבודד לחלוטין — עסקאות אינן משפיעות על כסף אמיתי.
| תרחיש | כיצד לבדוק |
|---|---|
| תשלום מוצלח | חשבון personal ב-sandbox, יתרה > סכום הזמנה |
| יתרה לא מספקת | חשבון sandbox עם יתרת אפס |
| ביטול קונה | סגירת חלון PayPal, בדיקת cancel_url |
| החזר | דרך API לאחר לכידה מוצלחת |
מה כלול
- פיתוח מטפל תשלום לגרסת Bitrix שלכם
- אינטגרציה של כפתורים חכמים ב-JavaScript לרכיב התשלום
- הגדרת webhooks ועדכוני סטטוס הזמנה אוטומטיים
- הגדרת סביבת בדיקת sandbox ובדיקת כל התרחישים
- מסירת תיעוד וגישה, הדרכה למנהל שלכם
- אחריות ל-6 חודשים על המודול — אנחנו תמיד זמינים
מדוע להזמין אינטגרציה מאיתנו?
אחד מלקוחותינו, חנות אלקטרוניקה מקוונת המשרתת את אירופה, סבל מהמרת מכירות נמוכה בהזמנות בינלאומיות עקב חוסר באמצעי תשלום נוחים. חיברנו PPCP עם כפתורים חכמים וריבוי מטבעות. תוצאה: PayPal היווה 45% מכלל העסקאות הבינלאומיות, ושגיאות התשלום ירדו ב-38% בהשוואה לשער הקודם. למידע, פלטפורמת PayPal Commerce אמינה פי שניים מה-Standard המיושן מבחינת עסקאות מוצלחות (ויקיפדיה).
טעויות נפוצות באינטגרציה עצמית
- שימוש בנקודות קצה מיושנות (PayPal Standard): שינויי API, המודול מפסיק לעבוד
- חוסר אימות webhook — אפשרות להתראות מזויפות
- אחסון שגוי של captureId — חוסר יכולת לעבד החזרים
- התעלמות מבדיקות sandbox — בעיות בסביבת הייצור
לוחות זמנים משוערים
| אפשרות | היקף | לוח זמנים |
|---|---|---|
| כפתורים חכמים + לכידה | מודול + ווידג'ט JS + בדיקות | 4–6 ימים |
| מלא בצד שרת (Orders API) | ללא תלות ב-JS, רק API | 4–5 ימים |
| + מנויים | חיוב חוזר דרך Subscriptions API | +3–4 ימים |
| + ריבוי מטבעות | לוגיקת בחירת מטבע, הגדרת PayPal | +1–2 ימים |
צרו קשר להערכת עלות מדויקת לפרויקט שלכם. יש לנו מומחי Bitrix מוסמכים וניסיון באינטגרציה עם PayPal, YooKassa, 1C ומערכות אחרות. קבלו ייעוץ — נמצא את הפתרון האופטימלי לחנות שלכם.

