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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с платежной системой Apple Pay
Средняя
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    989

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

Apple Pay в интернет-магазине — не отдельная интеграция с Apple, а надстройка над существующим эквайрингом. Без банка-эквайера или агрегатора Apple Pay не работает. Разработчики, столкнувшиеся с задачей впервые, обычно недооценивают серверную часть: Apple требует верификации домена через Merchant Identity Certificate, и без неё кнопка не появится, как бы правильно ни был написан JS.

Архитектура: что происходит при оплате

  1. Фронтенд проверяет доступность: ApplePaySession.canMakePayments() — работает только в Safari на Apple-устройствах
  2. При инициации платежа браузер запрашивает Payment Session у сервера магазина
  3. Сервер магазина проксирует запрос к Apple через Merchant Identity Certificate
  4. Apple верифицирует домен → возвращает сессионный объект
  5. Пользователь подтверждает Face ID/Touch ID → браузер получает зашифрованный токен
  6. Токен передаётся в банк-эквайер для проведения транзакции

Шаги 3–4 требуют серверного кода — чисто клиентской реализации нет.

Предварительные требования

  • Аккаунт Apple Developer Program ($99/год) — для Merchant ID и сертификатов
  • Верификация домена: файл .well-known/apple-developer-merchantid-domain-association в корне сайта
  • Банк-эквайер или агрегатор с поддержкой Apple Pay
  • HTTPS — Apple Pay недоступен без SSL

Интеграция через агрегатор (рекомендуемый путь)

Если уже используется CloudPayments или ЮКасса — Apple Pay включается через их виджет, вся серверная часть с сертификатами берётся агрегатором на себя:

// CloudPayments Widget
const cp = new cp.CloudPayments({ publicId: 'pk_XXXXXX' });

// Проверяем доступность
if (window.ApplePaySession && ApplePaySession.canMakePaymentsWithActiveCard('merchant.ru.shop')) {
    document.getElementById('apple-pay-btn').style.display = 'block';
}

document.getElementById('apple-pay-btn').addEventListener('click', () => {
    cp.pay('applepay', {
        description: 'Заказ #' + orderId,
        amount:      orderAmount,
        currency:    'RUB',
        invoiceId:   String(orderId),
        accountId:   customerEmail,
    }, {
        onSuccess: () => confirmOrderPaid(orderId),
        onFail:    (reason) => showError(reason),
    });
});

Предварительно в личном кабинете агрегатора нужно зарегистрировать домен — он автоматически добавит файл верификации.

Серверная валидация домена (прямая интеграция)

Если нужна реализация без виджета агрегатора:

// local/api/apple-pay-validate.php
$validationUrl = filter_var($_POST['validationUrl'] ?? '', FILTER_VALIDATE_URL);

// Разрешаем только домены Apple
if (!preg_match('#^https://apple-pay-gateway(-cert)?\.apple\.com#', $validationUrl)) {
    http_response_code(400); exit;
}

$ch = curl_init($validationUrl);
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => json_encode([
        'merchantIdentifier' => 'merchant.ru.yourshop',
        'domainName'         => 'yourshop.ru',
        'displayName'        => 'Your Shop',
    ]),
    CURLOPT_SSLCERT        => APPLE_PAY_CERT_PATH,
    CURLOPT_SSLKEY         => APPLE_PAY_KEY_PATH,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
]);
$response = curl_exec($ch);
curl_close($ch);

header('Content-Type: application/json');
echo $response;

JS-код на странице оплаты

const session = new ApplePaySession(3, {
    countryCode:          'RU',
    currencyCode:         'RUB',
    supportedNetworks:    ['visa', 'masterCard', 'mir'],
    merchantCapabilities: ['supports3DS'],
    total: { label: 'Ваш магазин', amount: String(orderAmount) },
});

session.onvalidatemerchant = async ({ validationURL }) => {
    const resp = await fetch('/api/apple-pay-validate.php', {
        method: 'POST',
        body:   new URLSearchParams({ validationUrl: validationURL }),
    });
    session.completeMerchantValidation(await resp.json());
};

session.onpaymentauthorized = async ({ payment }) => {
    const result = await sendTokenToServer(payment.token);
    session.completePayment(
        result.success ? ApplePaySession.STATUS_SUCCESS : ApplePaySession.STATUS_FAILURE
    );
};

session.begin();

Добавление в Битрикс

Кнопку добавляем в шаблон sale.order.checkout. Показываем только при canMakePayments() === true. После получения токена — AJAX к PHP-обработчику, который передаёт токен в банк и вызывает $payment->setPaid('Y').

Сроки

Задача Срок
Регистрация Merchant ID, верификация домена 0.5 дня
Интеграция через виджет агрегатора 1–2 дня
Прямая интеграция с Apple Pay JS API 3–5 дней