Настройка оплаты по ссылке 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка оплаты по ссылке 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1175
  • 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С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка оплаты по ссылке в 1С-Битрикс

Оплата по ссылке — менеджер отправляет покупателю ссылку (в мессенджере, по email, SMS), покупатель открывает её и оплачивает без входа на сайт. Полезно для B2B-продаж, телефонных заказов, оффлайн-точек с онлайн-оплатой. В Битрикс реализуется двумя способами: стандартная ссылка на детальную страницу заказа или кастомный «платёжный экран».

Стандартный подход: ссылка на детальный заказ

Битрикс из коробки умеет генерировать ссылку на оплату заказа в личном кабинете:

https://shop.ru/personal/order/payment/?ORDER_ID=12345&ACCOUNT_NUMBER=ON-12345&HASH=abc123

Эта ссылка работает только для авторизованных пользователей — покупатель должен войти в аккаунт. Для B2B и разовых заказов это неудобно.

Кастомная страница оплаты по токену

Более гибкий вариант: генерируем одноразовый токен, по которому открывается страница оплаты без авторизации.

Генерация ссылки:

function generatePaymentLink(int $orderId): string
{
    $token = bin2hex(random_bytes(32)); // 64 символа
    $expire = new DateTime('+72 hours');

    Bitrix\Main\Application::getConnection()->query("
        INSERT INTO b_order_payment_links (order_id, token, expires_at, used)
        VALUES (?, ?, ?, 0)",
        [$orderId, $token, $expire->format('Y-m-d H:i:s')]
    );

    return 'https://shop.ru/pay/' . $token . '/';
}

// При создании заказа — генерируем и отправляем ссылку менеджеру
$link = generatePaymentLink($order->getId());
sendPaymentLinkToManager($link, $order);

Страница оплаты /pay/{token}/:

// Компонент или PHP-скрипт на странице /pay/
$token = basename($_SERVER['REQUEST_URI']); // извлекаем токен из URL

$db  = Bitrix\Main\Application::getConnection();
$row = $db->queryFetchAll("
    SELECT * FROM b_order_payment_links
    WHERE token = ? AND used = 0 AND expires_at > NOW()",
    [$token]
);

if (empty($row)) {
    // Ссылка просрочена или уже использована
    $APPLICATION->SetTitle('Ссылка недействительна');
    include getLocalPath('templates/404.php');
    exit;
}

$orderId = (int)$row[0]['order_id'];
$order   = Bitrix\Sale\Order::load($orderId);

if ($order->isPaid()) {
    // Уже оплачено
    LocalRedirect('/pay/success/');
}

// Показываем форму оплаты — кнопки платёжных систем
// После успешной оплаты помечаем ссылку как использованную

Оплата по ссылке через агрегаторы

Большинство агрегаторов предоставляют собственный механизм платёжных ссылок:

ЮКасса (payment link):

$payment = $client->createPayment([
    'amount'       => ['value' => '1500.00', 'currency' => 'RUB'],
    'confirmation' => [
        'type'       => 'redirect',
        'return_url' => 'https://shop.ru/payment/success/',
    ],
    'description'  => 'Счёт #' . $invoiceNumber,
    'metadata'     => ['order_id' => $orderId],
], uniqid('', true));

$paymentUrl = $payment->getConfirmation()->getConfirmationUrl();
// Отправляем $paymentUrl покупателю

Тинькофф:

$response = tinkoffPost('/v2/Init', [
    'TerminalKey' => TINKOFF_TERMINAL,
    'Amount'      => 150000, // копейки
    'OrderId'     => $orderId,
    'Description' => 'Счёт #' . $invoiceNumber,
    'NotificationURL' => 'https://shop.ru/bitrix/tools/sale_ps_result.php',
    'Token'       => tinkoffSign([...], TINKOFF_SECRET),
]);
$paymentUrl = $response['PaymentURL'];

Отправка ссылки

Ссылку отправляем через встроенные почтовые события Битрикс или через мессенджер-интеграцию:

// Отправка через почтовый шаблон Битрикс
$event = new Bitrix\Main\Mail\Event([
    'EVENT_NAME' => 'PAYMENT_LINK_SEND',
    'TO_EMAIL'   => $buyerEmail,
    'C_FIELDS'   => [
        'ORDER_ID'    => $orderId,
        'PAYMENT_URL' => $paymentUrl,
        'AMOUNT'      => $amount,
        'EXPIRE_DATE' => $expireDate,
    ],
]);
$event->send();

Срок жизни ссылки

Рекомендуется устанавливать TTL через конфигурацию платёжной системы (большинство агрегаторов поддерживают параметр expirationDate). Стандартный срок — 24–72 часа. Просроченную ссылку нельзя оплатить.

Сроки

Задача Срок
Оплата по ссылке через агрегатор 0.5–1 день
Кастомная страница оплаты по токену 1–2 дня
Интерфейс отправки ссылки для менеджера 0.5–1 день