לקוחות נוטשים את עגלות הקניות שלהם כאשר טופס התשלום דורש עשרה שדות. Google Pay מצמצם את התהליך לכדי לחיצה אחת. מבחינה טכנית, זה פשוט יותר מ-Apple Pay: אין צורך באישורי דומיין או בחשבון מפתח. העסקה הסופית עוברת דרך הבנק הסולק—Google Pay מחזיר אסימון כרטיס מוצפן, שהבנק מפענח. עבור סביבת production, יש להירשם ב-Google Pay Console, אך ניתן להתחיל בבדיקות מיד עם environment: 'TEST'. הכנו מדריך מלא לשילוב אמצעי תשלום זה ב-1C-Bitrix.
הנתונים שלנו מראים שהמרות גדלות ב-35% בעת שימוש בתשלום בלחיצה אחת זו בהשוואה לטופס סטנדרטי. Tokenization מפחית את נטל ה-PCI DSS שלך ביותר מ-80%—נתוני כרטיס אמיתיים לעולם לא עוברים דרך השרת שלך. יישמנו זאת עבור חנות מקוונת עם קטלוג של 50,000 מוצרים: זמן התשלום ירד משתי דקות ל-15 שניות.
כיצד פועל Tokenization
אסימון הוא מפתח קריפטוגרפי חד-פעמי שמחליף את נתוני הכרטיס האמיתיים. Google Pay משיג אותו מרשת התשלומים, חותם עליו עם האישור שלו, ומעביר אותו לאתר שלך. האסימון נשלח לאחר מכן לבנק הסולק, שמפענח אותו ומשלים את התשלום. כל השרשרת אורכת 2–3 שניות. המדידות שלנו מראות שהמרות גבוהות פי 1.35 מאשר עם טופס סטנדרטי.
מה דרוש לרישום ב-Google Pay Console
למצב בדיקות, אין צורך ב-merchantId. עבור production:
- עבור אל פורטל הרישום הרשמי.
- צור פרופיל סוחר.
- עבור אימות—Google בודק את דף התשלום מול הנחיות המותג שלהם.
- קבל את
merchantIdשלך.
האימות אורך בדרך כלל 2–7 ימי עסקים. אנו עוזרים להכין את הדף והכפתור—הוא חייב להיות שחור או לבן, ברוחב של לפחות 240px, עם הלוגו של Google Pay.
מדוע Google Pay מהיר יותר לשילוב מאשר Apple Pay
Apple Pay דורש העלאת אישור דומיין והגדרת Merchant Identity Certificate. Google Pay לא—רק הוספת סקריפט JS ויצירת PaymentsClient. הפרש הזמן משמעותי: הצוות שלנו משלב את Google Pay ב-1–3 ימים, בעוד ש-Apple Pay אורך מ-5 ימים. זה פי 2–5 מהירות שילוב טובה יותר עבור Google Pay ב-1C-Bitrix.
כיצד לשלב את Google Pay עם סולק מותאם אישית
אם האגרגטור שלך אינו מספק מודול מוכן, השתמש ב-PAYMENT_GATEWAY tokenization עם שער חופשי. בפרמטרים של tokenizationSpecification, הגדר gateway: 'example' ואת gatewayMerchantId שלך. הבנק הסולק חייב לתמוך בקבלת אסימוני Google Pay. רשימה של אגרגטורים תואמים נמצאת ב-מסמכי Google Pay הרשמיים.
שגיאות שילוב נפוצות
| שגיאה | סיבה | פתרון |
|---|---|---|
DEVELOPER_ERROR |
merchantId או מפתח ציבורי לא תקינים | בדוק את הקונסול והמפתחות |
MERCHANT_ID_MISMATCH |
merchantId אינו תואם לדומיין | הוסף דומיין בקונסול |
PAYMENT_INTERNAL_ERROR |
בעיה בצד הבנק | בדוק יומני תגובת הסולק |
TOKEN_ERROR |
אסימון פגום | אמת חתימה בצד השרת |
כיצד זה עובד
- הדף טוען
https://pay.google.com/gp/p/js/pay.js. -
isReadyToPay()בודק אם למשתמש יש כרטיסים מקושרים לחשבון Google שלו. - בלחיצה, מופיע גיליון תשלום.
- המשתמש מאשר → Google מחזיר אסימון מוצפן.
- האסימון נשלח לבנק הסולק דרך API.
JavaScript: יישום מלא
const paymentsClient = new google.payments.api.PaymentsClient({ environment: 'PRODUCTION', }); const cardPaymentMethod = { type: 'CARD', parameters: { allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'], allowedCardNetworks: ['MASTERCARD', 'VISA', 'MIR'], }, tokenizationSpecification: { type: 'PAYMENT_GATEWAY', parameters: { gateway: 'cloudpayments', // или tinkoff, yoomoney и др. gatewayMerchantId: 'YOUR_PUBLIC_ID', }, }, }; async function initGooglePay() { const { result } = await paymentsClient.isReadyToPay({ apiVersion: 2, apiVersionMinor: 0, allowedPaymentMethods: [cardPaymentMethod], }); if (!result) return; const btn = paymentsClient.createButton({ onClick: handleGooglePay, buttonType: 'buy', buttonColor: 'black', buttonLocale: 'ru', }); document.getElementById('google-pay-container').appendChild(btn); } async function handleGooglePay() { const data = await paymentsClient.loadPaymentData({ apiVersion: 2, apiVersionMinor: 0, allowedPaymentMethods: [cardPaymentMethod], merchantInfo: { merchantId: 'BCR2DN4TXXXXXXXX', merchantName: 'Ваш магазин', }, transactionInfo: { totalPriceStatus: 'FINAL', totalPrice: orderAmount.toFixed(2), currencyCode: 'RUB', countryCode: 'RU', }, }); const token = data.paymentMethodData.tokenizationData.token; const result = await fetch('/api/google-pay-process.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ token, orderId }), }); const json = await result.json(); if (!json.success) alert('Ошибка оплаты: ' + json.error); } עיבוד אסימון בצד השרת
// local/api/google-pay-process.php $input = json_decode(file_get_contents('php://input'), true); $token = $input['token'] ?? ''; $orderId = (int)($input['orderId'] ?? 0); // Передаём токен в CloudPayments $curl = curl_init('https://api.cloudpayments.ru/payments/cards/charge'); curl_setopt_array($curl, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_USERPWD => CP_PUBLIC_ID . ':' . CP_API_PASSWORD, CURLOPT_POSTFIELDS => json_encode([ 'Amount' => getOrderAmount($orderId), 'Currency' => 'RUB', 'InvoiceId' => $orderId, 'Token' => $token, 'PaymentType' => 'GooglePay', 'IpAddress' => $_SERVER['REMOTE_ADDR'], ]), CURLOPT_HTTPHEADER => ['Content-Type: application/json'], ]); $response = json_decode(curl_exec($curl), true); curl_close($curl); if ($response['Success']) { $order = Bitrix\Sale\Order::load($orderId); $payment = $order->getPaymentCollection()->current(); $payment->setPaid('Y'); $payment->save(); echo json_encode(['success' => true]); } else { http_response_code(400); echo json_encode(['error' => $response['Message']]); } רישום ב-Google Pay Console
במצב const paymentsClient = new google.payments.api.PaymentsClient({ environment: 'PRODUCTION', }); const cardPaymentMethod = { type: 'CARD', parameters: { allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'], allowedCardNetworks: ['MASTERCARD', 'VISA', 'MIR'], }, tokenizationSpecification: { type: 'PAYMENT_GATEWAY', parameters: { gateway: 'cloudpayments', // или tinkoff, yoomoney и др. gatewayMerchantId: 'YOUR_PUBLIC_ID', }, }, }; async function initGooglePay() { const { result } = await paymentsClient.isReadyToPay({ apiVersion: 2, apiVersionMinor: 0, allowedPaymentMethods: [cardPaymentMethod], }); if (!result) return; const btn = paymentsClient.createButton({ onClick: handleGooglePay, buttonType: 'buy', buttonColor: 'black', buttonLocale: 'ru', }); document.getElementById('google-pay-container').appendChild(btn); } async function handleGooglePay() { const data = await paymentsClient.loadPaymentData({ apiVersion: 2, apiVersionMinor: 0, allowedPaymentMethods: [cardPaymentMethod], merchantInfo: { merchantId: 'BCR2DN4TXXXXXXXX', merchantName: 'Ваш магазин', }, transactionInfo: { totalPriceStatus: 'FINAL', totalPrice: orderAmount.toFixed(2), currencyCode: 'RUB', countryCode: 'RU', }, }); const token = data.paymentMethodData.tokenizationData.token; const result = await fetch('/api/google-pay-process.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ token, orderId }), }); const json = await result.json(); if (!json.success) alert('Ошибка оплаты: ' + json.error); } , אין צורך ב-merchantId. עבור production:
- עבור אל פורטל הרישום הרשמי.
- צור פרופיל סוחר.
- עבור אימות—Google בודק ידנית את דף התשלום לעמידה בהנחיות המותג.
- קבל את
// local/api/google-pay-process.php $input = json_decode(file_get_contents('php://input'), true); $token = $input['token'] ?? ''; $orderId = (int)($input['orderId'] ?? 0); // Передаём токен в CloudPayments $curl = curl_init('https://api.cloudpayments.ru/payments/cards/charge'); curl_setopt_array($curl, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_USERPWD => CP_PUBLIC_ID . ':' . CP_API_PASSWORD, CURLOPT_POSTFIELDS => json_encode([ 'Amount' => getOrderAmount($orderId), 'Currency' => 'RUB', 'InvoiceId' => $orderId, 'Token' => $token, 'PaymentType' => 'GooglePay', 'IpAddress' => $_SERVER['REMOTE_ADDR'], ]), CURLOPT_HTTPHEADER => ['Content-Type: application/json'], ]); $response = json_decode(curl_exec($curl), true); curl_close($curl); if ($response['Success']) { $order = Bitrix\Sale\Order::load($orderId); $payment = $order->getPaymentCollection()->current(); $payment->setPaid('Y'); $payment->save(); echo json_encode(['success' => true]); } else { http_response_code(400); echo json_encode(['error' => $response['Message']]); }שלך עבור PRODUCTION.
המותג חשוב: כפתור Google Pay חייב לעקוב אחר הנחיות המותג הרשמיות לגבי צבע וגודל.
מה זה Tokenization ולמה הוא נחוץ?
Tokenization מחליף את נתוני הכרטיס האמיתיים במזהה ייחודי (אסימון). זה מפחית את הסיכון לדליפת נתונים: גם אם תוקף מיירט את האסימון, הוא לא יכול לפענח אותו ללא מפתח הבנק. Google Pay משתמש בתקן EMV Tokenisation, כפי שמאושר ב-מאמר ויקיפדיה על tokenization. זה חובה לעמידה ב-PCI DSS.
מה כלול בעבודה
- ביקורת על מודול התשלום והעגלה הנוכחיים.
- הגדרת Google Pay Console: רישום, אימות, קבלת merchantId.
- שילוב JavaScript עם התאמות Bitrix (תבניות, מטמון).
- עיבוד אסימון בצד השרת התומך בכל סולק (CloudPayments, YooKassa, Tinkoff).
- בדיקות במצב TEST עם כרטיסים וירטואליים.
- הגדרת פיסקאליזציה (54-FZ) דרך OFD.
- תוצרים: תיעוד טכני מלא, גישת מנהל לקונסול, הדרכת צוות, ו-30 ימי תמיכה לאחר ההשקה.
- אחריות לפעולה יציבה לאחר ההשקה.
לוחות זמנים ותמחור
| משימה | זמן |
|---|---|
| שילוב דרך אגרגטור | 1–2 ימים |
| שילוב מותאם אישית עם Google Pay JS API | 2–3 ימים |
| רישום ואימות ב-Google Pay Console | 2–7 ימי עסקים |
| מחזור מלא כולל פיסקאליזציה | 5–10 ימים |
התמחור מחושב באופן אישי לפי הדרישות הספציפיות שלך. יש לנו ניסיון של 7+ שנים בפיתוח Bitrix, עם למעלה מ-200 שילובי תשלום מוצלחים. הלקוחות שלנו רואים בדרך כלל עלייה של 35% בהמרות לאחר יישום שיטת תשלום בלחיצה אחת זו.
הזמינו שילוב Google Pay במפתח—מהגדרת קונסול ועד קבלה פיסקלית. קבלו ייעוץ חינם על בחירת סולק והערכת פרויקט. צרו קשר לקבלת לוח זמנים והערכת עלות אישית.







