Как генерировать ссылки на оплату uniteller php

Как генерировать ссылки на оплату uniteller php

Интеграция с платёжным шлюзом Uniteller требует точного формирования ссылки, содержащей все параметры транзакции и корректную цифровую подпись. На стороне сервера разработчику необходимо собрать строку запроса с учётом параметров Shop_IDP, Order_IDP, Subtotal_P, URL_RETURN, а также сгенерировать хеш на основе секретного ключа и отправляемых данных.

Для расчёта подписи Uniteller использует алгоритм SHA-256. Последовательность параметров критична: они должны идти в строгом порядке, без пробелов и дополнительных символов. Нарушение порядка приведёт к отказу в приёме платежа. Хеш формируется по схеме Shop_IDP + Order_IDP + Subtotal_P + ... + Password, где Password – это секрет, известный только продавцу и Uniteller.

Важно учитывать, что URL должен быть правильно закодирован. Используйте функцию urlencode() для всех значений параметров, особенно если они содержат специальные символы или кириллицу. Ошибки в кодировке URL часто становятся причиной сбоев при переадресации пользователя на платёжную страницу.

При разработке необходимо предусмотреть защиту от подмены параметров. Проверяйте Order_IDP на уникальность, а сумму – на соответствие фактическому заказу. Это не только снижает риски мошенничества, но и упрощает последующую верификацию транзакций в личном кабинете Uniteller.

Настройка параметров магазина в личном кабинете Uniteller

Настройка параметров магазина в личном кабинете Uniteller

Перейдите в раздел «Настройки магазина» в личном кабинете Uniteller. Убедитесь, что указан корректный домен, с которого будут инициироваться платежи. Домен должен совпадать с тем, что вы используете в ссылке на оплату. Несоответствие приведёт к отказу в обработке транзакции.

В поле «Callback URL» укажите прямую ссылку на ваш сервер, который будет принимать уведомления о статусе платежа. Рекомендуемый формат: https://ваш-домен/notify. Сервер должен обрабатывать POST-запросы и возвращать HTTP 200 в случае успешной обработки данных.

Активируйте передачу параметров в ответе Uniteller: включите опцию «Отправка параметров в методе POST». Это позволит вам обрабатывать статусы платежей на стороне сервера, а не только на клиенте.

Настройте список разрешённых IP-адресов для приёма уведомлений, если вы используете фильтрацию. Уточните текущий список IP у поддержки Uniteller, чтобы избежать блокировки уведомлений.

В разделе «Ключи и подписи» получите значения параметров Shop_IDP и Password. Эти данные требуются для формирования подписи при генерации ссылки на оплату. Никогда не размещайте Password в открытом доступе, особенно в клиентском JavaScript.

Включите поддержку тестового режима, если вы не завершили интеграцию. Это позволит проверять платежи без фактического списания средств. Тестовые транзакции имеют специальную пометку и не обрабатываются банком-эквайером.

Сохраните все изменения и выполните пробную оплату, чтобы убедиться, что уведомления обрабатываются корректно, а параметры ссылки соответствуют требованиям Uniteller.

Формирование массива параметров для платежной ссылки

Формирование массива параметров для платежной ссылки

Для генерации корректной ссылки оплаты через Uniteller необходимо собрать ассоциативный массив с параметрами, строго соответствующими требованиям API. Обязательные поля включают:

'Shop_IDP' – идентификатор интернет-магазина, выдается Uniteller, тип значения – строка.

'Order_IDP' – уникальный номер заказа в системе продавца. Рекомендуется использовать UUID или префиксированный числовой идентификатор для обеспечения уникальности.

'Subtotal_P' – сумма заказа в копейках (например, 100 рублей – это 10000), только целое положительное число без разделителей.

'URL_RETURN' – абсолютный URL, на который пользователь будет перенаправлен после завершения оплаты. Должен поддерживать HTTPS.

'Signature' – криптографическая подпись, формируемая из заранее определенного набора параметров и секретного ключа. Порядок параметров при генерации подписи имеет значение.

undefined'Signature'</code> – криптографическая подпись, формируемая из заранее определенного набора параметров и секретного ключа. Порядок параметров при генерации подписи имеет значение.»></p>
<p>Дополнительные параметры, такие как <code>'Customer_IDP'</code>, <code>'Lifetime'</code>, <code>'Comment'</code>, можно использовать при необходимости. Все строки должны быть в кодировке UTF-8 без BOM. Значения следует экранировать и валидировать перед вставкой в ссылку.</p>
<p>Не включайте параметры с пустыми значениями – Uniteller может интерпретировать это как ошибку. Рекомендуется отсортировать параметры по алфавиту перед формированием строки для подписи, если используется ручной способ генерации.</p>
<h2>Создание цифровой подписи для запроса на оплату</h2>
<p><img decoding=

Цифровая подпись в Uniteller формируется из значений параметров запроса и служит для подтверждения подлинности данных. Подпись создаётся путём последовательной конкатенации параметров в определённом порядке и последующего хэширования полученной строки с использованием алгоритма SHA-256.

Последовательность параметров для подписи строго фиксирована и определяется документацией Uniteller. Пример порядка: Shop_IDP, Order_IDP, Subtotal_P, MeanType, Lifetime, Customer_IDP. Отсутствующие значения не исключаются – в подпись включаются даже пустые строки между разделителями.

Алгоритм создания подписи:

  1. Получить значения всех параметров, входящих в подпись.
  2. Сконкатенировать значения в одну строку, разделяя символом точки: ..
  3. Добавить в конец строки секретный ключ магазина, предоставленный Uniteller.
  4. Применить хеш-функцию SHA-256 к полученной строке.
  5. Преобразовать результат в шестнадцатеричную строку в нижнем регистре.

Пример на PHP:


$params = [
'Shop_IDP'     => '123456',
'Order_IDP'    => 'A0001',
'Subtotal_P'   => '1500.00',
'MeanType'     => '',
'Lifetime'     => '3600',
'Customer_IDP' => 'user42'
];
$secretKey = 'секретный_ключ';
$signatureBase = implode('.', [
$params['Shop_IDP'],
$params['Order_IDP'],
$params['Subtotal_P'],
$params['MeanType'],
$params['Lifetime'],
$params['Customer_IDP'],
$secretKey
]);
$signature = strtolower(hash('sha256', $signatureBase));

Генерируемую подпись необходимо передавать в параметре Signature при формировании ссылки на оплату. Несоответствие подписи приводит к отклонению запроса платёжным шлюзом.

Генерация URL-ссылки с учетом требований Uniteller

Генерация URL-ссылки с учетом требований Uniteller

Для корректной генерации URL-ссылки на оплату через Uniteller необходимо строго соблюдать требования к параметрам и их кодировке. Базовый адрес для формирования ссылки: https://secure.uniteller.ru/payment/. К нему добавляются GET-параметры, содержащие информацию о платеже.

  • Shop_IDP – обязательный параметр, идентификатор торговой точки, присвоенный Uniteller. Значение должно совпадать с тем, что указано в личном кабинете Uniteller.
  • Order_IDP – уникальный идентификатор заказа в вашей системе. Допустимы только латинские буквы, цифры и символы -, _.
  • Subtotal_P – сумма к оплате в копейках или центах. Указывается без десятичной точки, только целое число (например, 15000 для 150.00 руб).
  • URL_RETURN – URL, на который пользователь будет перенаправлен после завершения оплаты. Должен быть закодирован через urlencode().
  • Signature – криптографическая подпись, обязательная для защиты данных. Формируется как SHA-256 хеш от строки, содержащей параметры в строгой последовательности.

Формирование подписи должно выполняться по алгоритму:

  1. Соберите строку из параметров в порядке: Shop_IDP, Order_IDP, Subtotal_P, URL_RETURN, SecretKey.
  2. Конкатенируйте значения без разделителей.
  3. Вычислите хеш с помощью hash('sha256', $data).

Пример генерации ссылки на PHP:


$shopId = '123456';
$orderId = 'ORD001';
$amount = 15000;
$returnUrl = 'https://example.com/success';
$secretKey = 'ВашСекретныйКлюч';
$data = $shopId . $orderId . $amount . $returnUrl . $secretKey;
$signature = hash('sha256', $data);
$url = 'https://secure.uniteller.ru/payment/?' . http_build_query([
'Shop_IDP' => $shopId,
'Order_IDP' => $orderId,
'Subtotal_P' => $amount,
'URL_RETURN' => $returnUrl,
'Signature' => $signature
]);

Нельзя менять порядок параметров при формировании подписи. Все значения должны быть строковыми. URL должен быть полностью закодирован и передан по HTTPS.

Обработка успешной и неуспешной оплаты через returnUrl и cancelUrl

Обработка успешной и неуспешной оплаты через returnUrl и cancelUrl

После завершения транзакции Uniteller перенаправляет пользователя на одну из двух URL-страниц, указанных в параметрах запроса: returnUrl – при успешной оплате, cancelUrl – при отказе или ошибке. Эти URL должны быть заранее настроены в личном кабинете Uniteller и передаваться при генерации ссылки на оплату.

На стороне сервера необходимо реализовать проверку статуса платежа по OrderId, полученному из GET-параметров. Пример: /success.php?OrderId=12345. Подтверждение статуса производится через API Uniteller методом GetStatus. Только при получении статуса Authorized или Paid следует считать оплату завершённой.

Нельзя полагаться исключительно на редирект пользователя, так как он может закрыть окно до завершения перехода. Для гарантированной фиксации результата следует дополнительно обрабатывать уведомления через callbackUrl.

На cancelUrl не требуется выполнять API-запрос, но желательно логировать отказ пользователя и сохранять попытку в базе данных. Это позволяет отслеживать прерванные транзакции и при необходимости инициировать повторную оплату.

Важно предусмотреть защиту от подмены запросов: проверяйте цифровую подпись, если Uniteller её передаёт, или валидируйте OrderId с использованием внутренней базы данных.

Рекомендуется разделять обработку логики и отображения: скрипты success.php и cancel.php должны выполнять серверную верификацию, а затем переадресовывать пользователя на публичные страницы с соответствующим сообщением.

Проверка целостности данных при получении уведомлений от Uniteller

Проверка целостности данных при получении уведомлений от Uniteller

При интеграции с платёжной системой Uniteller важно обеспечить проверку целостности данных, получаемых через уведомления. Это необходимо для предотвращения мошенничества и ошибок, связанных с передачей данных.

Uniteller отправляет уведомления о статусе транзакции через HTTP POST-запросы на указанный вами URL. В этих уведомлениях содержатся важные данные, такие как сумма платежа, идентификатор транзакции и подпись. Для проверки целостности данных необходимо убедиться, что уведомление не было изменено и действительно поступило от Uniteller.

Основным механизмом защиты является использование цифровой подписи, которая генерируется на сервере Uniteller. При получении уведомления вы должны проверить её с помощью алгоритма HMAC (Hash-based Message Authentication Code), используя секретный ключ, который был предоставлен при настройке системы.

Алгоритм проверки:

  1. Извлеките данные из уведомления, которые необходимо проверить, включая такие параметры, как orderId, amount, status и другие.
  2. Создайте строку из этих данных в том порядке, в котором они были переданы (например, orderId=12345&amount=1000&status=success).
  3. Примените HMAC с использованием вашего секретного ключа и выбранного алгоритма (например, SHA-256) к этой строке.
  4. Сравните полученную подпись с подписью, переданной в уведомлении. Если подписи совпадают, то данные целостны и поступили от настоящего источника.

Кроме того, важно учитывать проверку параметра amount, чтобы убедиться, что сумма платежа соответствует ожидаемой. Для этого можно сравнить значение с ранее полученным значением при создании платежа.

Еще один аспект – проверка IP-адресов, с которых приходят уведомления. Uniteller использует конкретные диапазоны IP-адресов для отправки уведомлений. Вы можете сравнить адреса источника с этим списком, чтобы дополнительно убедиться в подлинности уведомления.

Рекомендации:

  • Обрабатывайте только те уведомления, подписи которых успешно прошли проверку.
  • Регулярно обновляйте список IP-адресов, с которых приходят уведомления.
  • Записывайте все входящие уведомления и ошибки проверки для дальнейшего анализа и выявления возможных попыток атак.
  • Используйте HTTPS для всех запросов, чтобы обеспечить защиту данных от перехвата в процессе передачи.

Следуя этим рекомендациям, вы можете значительно повысить безопасность своей платёжной системы и минимизировать риски, связанные с обработкой уведомлений от Uniteller.

Вопрос-ответ:

Что такое генерация ссылок на оплату через Uniteller на PHP?

Генерация ссылок на оплату через Uniteller на PHP — это процесс создания уникальных ссылок, которые позволяют пользователям перейти на страницу оплаты для завершения транзакции через систему Uniteller. Для этого нужно использовать API Uniteller, которое позволяет интегрировать процесс оплаты в веб-приложение на языке PHP. Такие ссылки включают в себя информацию о сумме, валюте и уникальном идентификаторе заказа, что позволяет пользователю удобно и безопасно осуществить оплату.

Как настроить подключение к API Uniteller для генерации ссылок на оплату?

Для того чтобы начать использовать API Uniteller, необходимо зарегистрироваться на платформе и получить ключи для доступа к API. После этого в PHP можно настроить подключение к API, передавая необходимые параметры через HTTP-запросы. В коде на PHP нужно будет использовать библиотеку для работы с запросами, такую как cURL или Guzzle, чтобы отправить данные в API и получить ссылку на оплату. Пример запроса включает в себя параметры, такие как сумма, валюта, номер заказа и другие данные, которые обеспечат правильное оформление транзакции.

Как проверить успешность платежа с помощью API Uniteller?

Для проверки успешности платежа через API Uniteller необходимо использовать функцию уведомлений о статусе транзакции. После того как пользователь завершит оплату, Uniteller отправляет запрос на сервер продавца (callback или webhook), который должен обработать эти данные. В ответе от Uniteller содержится информация о статусе платежа, таких как успешность операции, сумма, идентификатор заказа и другие данные. Важно проверять подпись ответа, чтобы удостовериться в его подлинности и предотвратить фальсификацию данных. В PHP это можно сделать с помощью соответствующих функций для работы с хешами.

Что делать, если ссылка на оплату не работает?

Если ссылка на оплату через Uniteller не работает, стоит проверить несколько моментов. Во-первых, убедитесь, что все переданные параметры корректны: правильный идентификатор магазина, правильная сумма и валюта. Во-вторых, проверьте, был ли правильно настроен секретный ключ для подписи запроса. Иногда проблема может быть связана с ошибками в API или с устаревшей версией библиотеки. В таких случаях рекомендуется обновить библиотеку или обратиться в поддержку Uniteller для получения помощи. Также стоит проверить правильность обработки ответа от API и наличие необходимых параметров для редиректа.

Как создать ссылку на оплату через Uniteller с помощью PHP?

Для создания ссылки на оплату через Uniteller с использованием PHP, вам нужно интегрировать API Uniteller с вашим сайтом. В первую очередь необходимо зарегистрировать ваш аккаунт в системе Uniteller и получить API-ключи. Затем нужно сформировать запрос к API, который будет содержать данные о платеже, такие как сумма, валюта и описание товара или услуги. Ответ от API будет содержать ссылку на страницу оплаты, которую можно будет отправить пользователю. Важно помнить, что запрос должен быть подписан с использованием секретного ключа для обеспечения безопасности. В PHP вы можете использовать cURL для отправки запроса и обработки ответа от Uniteller.

Какие параметры необходимы для формирования запроса к Uniteller API для оплаты?

Для формирования запроса к Uniteller API необходимо указать несколько ключевых параметров. Во-первых, это сумма и валюта оплаты. Далее, важно указать уникальный идентификатор заказа (order_id), который поможет вам отслеживать оплату. Также нужно указать ссылку для возврата пользователя на сайт после завершения транзакции (return_url), а также ссылку на страницу, на которую будет перенаправлен клиент в случае отмены платежа (cancel_url). В запросе также могут быть дополнительные данные, например, описание товара или услуги, контактная информация покупателя. Все эти данные должны быть переданы через POST-запрос к API Uniteller, при этом важно использовать шифрование для защиты данных.

Ссылка на основную публикацию