Интеграция 1С-Битрикс с платежной системой PayPal

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с платежной системой PayPal
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 1С-Битрикс с платёжной системой PayPal

PayPal — одна из самых распространённых платёжных систем для международной торговли. В 1С-Битрикс штатного актуального модуля PayPal нет: старый модуль для PayPal Standard устарел, PayPal Express Checkout заменён на PayPal Commerce Platform (PPCP). Поэтому интеграция требует кастомной разработки под актуальный API.

Текущий продукт PayPal для мерчантов

PayPal Commerce Platform (PPCP) объединяет несколько методов оплаты:

  • карты Visa/Mastercard/AmEx без аккаунта PayPal (Guest Checkout);
  • оплата через PayPal-аккаунт покупателя;
  • Pay Later (BNPL — купи сейчас, плати потом) в поддерживаемых странах;
  • Venmo (США).

Для подключения магазин регистрируется как мерчант через PayPal Partner Program или напрямую через business.paypal.com.

Два варианта технической реализации

PayPal Checkout (hosted buttons / Smart Buttons). JavaScript SDK от PayPal встраивается на страницу оформления заказа. Покупатель нажимает кнопку PayPal, проходит авторизацию во всплывающем окне, возвращается на сайт. Данные карты не касаются сервера мерчанта. Подходит для большинства магазинов.

Orders API (server-side). Заказ создаётся на сервере через POST /v2/checkout/orders, покупатель авторизует его, сервер выполняет захват средств через POST /v2/checkout/orders/{id}/capture. Больше контроля, необходим для кастомных флоу и подписок.

Архитектура модуля в Битрикс

Обработчик платёжной системы наследует \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,
    ],
]);

Покупатель перенаправляется по links[rel=approve].href. После возврата вызываем POST /v2/checkout/orders/{id}/capture.

JavaScript Smart Buttons

Для Checkout-подхода JS SDK добавляется на страницу компонента sale.order.ajax:

<script src="https://www.paypal.com/sdk/js?client-id=CLIENT_ID&currency=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>

На стороне Битрикс создаются два AJAX-эндпоинта: create-order (инициирует заказ в PayPal, возвращает id) и capture-order (захватывает средства, обновляет статус в b_sale_order).

Вебхуки (Webhooks IPN)

PayPal отправляет уведомления через Webhooks v2. Подписка на события — в PayPal Developer Dashboard. Необходимые события:

  • PAYMENT.CAPTURE.COMPLETED — подтверждение захвата средств
  • PAYMENT.CAPTURE.DENIED — отказ
  • PAYMENT.CAPTURE.REFUNDED — возврат

Верификация подписи вебхука:

$result = \PayPalHttp\HttpClient::verifyWebhookSignature(
    $webhookId, $headers, $body, $accessToken
);

Возвраты

Возврат через POST /v2/payments/captures/{captureId}/refund. captureId сохраняется в b_sale_payment.PS_INVOICE_ID при захвате.

$refund = $httpClient->post(
    $baseUrl . '/v2/payments/captures/' . $captureId . '/refund',
    ['amount' => ['value' => '25.00', 'currency_code' => 'USD']]
);

Полный возврат — тело запроса пустое, PayPal вернёт всю сумму захвата.

Sandbox-тестирование

В PayPal Developer Dashboard создаём sandbox-аккаунты: один мерчант (business), один покупатель (personal). Тестовые карты доступны в разделе Sandbox → Accounts → покупатель → Credit Cards. Песочница полностью изолирована — транзакции не влияют на реальные деньги.

Сценарий Как проверить
Успешная оплата Sandbox personal account, баланс > суммы заказа
Недостаточно средств Sandbox account с нулевым балансом
Отмена покупателем Закрыть окно PayPal, проверить cancel_url
Возврат Через API после успешного захвата

Сроки

Вариант Состав Срок
Smart Buttons + capture Модуль + JS-виджет + тестирование 4–6 дней
Полностью серверный (Orders API) Без JS-зависимости, только API 4–5 дней
+ Subscriptions Recurring billing через Subscriptions API +3–4 дня
+ Мультивалютность Логика выбора валюты, настройка PayPal +1–2 дня