Подпись сообщения
В случае если используется тип подписи capi или md5, для сообщения дополнительно формируется соответствующая подпись, которая затем включается в само сообщение (тег request.header.signature).
В данном разделе будет рассказано про то, как формировать данную подпись. В общем случае этот процесс состоит из двух частей: формирование строки для подписи и непосредственно подпись полученной строки.
Формирования текста для подписи
Текст подписи формируется путем конкатенации следующих параметров: «Название метода» + «Строка для подписи от параметров» + «GUID запроса».
Примечание:
Все буквы в GUID запроса при подписи переводятся в нижний регистр, то есть вместо A, B, C, D, E и F используются a, b, c, d, e и f.
Название метода
Название метода зависит от вызываемого метода, а так же от параметра async (если он есть).
Метод XML шлюза
|
Название метода
|
checkCommand
|
Check
|
payCommand
|
Pay
|
statusCommand
|
Status
|
cashinCommand
|
Cashin
|
batchCommand
|
Batch
|
balanceCommand
|
Balance
|
operatorCommand
|
Operator
|
providersCommand
|
Providers
|
commissionsCommand
|
Commissions
|
ratesCommand
|
Rates
|
Строка для подписи от параметров
Для команд Check и Cashin формируется строка подписи от параметра paymentInfo. О том, как это сделать, написано в разделе
«Формирование строки подписи для объекта PaymentInfo».
Для команд Pay и Status формируется строка подписи от параметра registeredPaymentInfo. О том, как это сделать, написано в разделе «Формирование строки подписи для объекта RegisteredPaymentInfo».
Для команды batch строка для подписи формируется следующим образом: поочередно формируется строки подписи для всех платежей находящихся в теге check, затем cashin, затем pay и затем в status. После этого все они конкатенируются.
Формирование строки подписи для объекта PaymentInfo
Строка для подписи элемента
paymentInfo формируется путем склеивания значения всех свойств, приведенных к строке, в следующем порядке:
PaymentId +
Provider +
Amount +
UserAmount (если передается) +
Field1.Name +
Field1.Value + … +
FieldN.Name +
FieldN.Value.
Обратите внимание, что строковое представление суммы платежа выглядит как дробное число с 2 знаками после разделителя, в качестве разделителя используется точка. Т.е., например, для суммы 5.5 строковое представление будет иметь следующий вид – «5.50», для суммы 95.34 – «95.34», для 90 – «90.00».
Пример:
Строка для подписи: “127823mega5.50phone922549899”.
Формирование строки подписи для объекта RegisteredPaymentInfo
Строка для подписи элемента
registeredPaymentInfo формируется путем склеивания значения всех свойств, приведенных к строке, в следующем порядке:
PaymentId +
“0”.
Пример:
Строка для подписи: “1278230”.
Подпись с помощью Crypto API
При использовании способа подписи capi, в тег signature помещается электронно-цифровая подпись, полученная при кодировании строки для подписи с помощью MS Crypto API, в Base64 Encoding.
Для использования MS Crypto API необходимо использовать закрытый ключ оператора.
Подпись с помощью MD5
При использовании способа подписи md5, в тег signature помещается md5 отпечаток строки, получаемой в результате конкатенации строки для подписи с секретной фразой оператора, приводимый к строке путем преобразования каждого байта отпечатка к 16ричному числу, представленному 2 символами.
Операции поддерживаемые XML шлюзом
Xml шлюз поддерживает следующие операции:
Операция
|
Назначение
|
Параметры
|
Возвращаемое значение
|
checkCommand
|
Проверка возможности проведения платежа. При этом платеж регистрируется в системе X-plat.
|
Описание платежа в виде XML объекта PaymentInfo
|
Ответ шлюза, содержащий объект PaymentStatus в виде XML
|
payCommand
|
Проведение зарегистрированного платежа в системе X-plat.
|
Описание платежа в виде XML объекта RegisteredPaymentInfo
|
Ответ шлюза, содержащий объект PaymentStatus в виде XML
|
statusCommand
|
Получение текущего статуса по платежу, зарегистрированного в системе X-plat.
|
Описание платежа в виде XML объекта RegisteredPaymentInfo
|
Ответ шлюза, содержащий объект PaymentStatus в виде XML
|
cashinCommand
|
Однофазное проведение платежа в системе X-plat.
|
Описание платежа в виде XML объекта PaymentInfo
|
Ответ шлюза, содержащий объект PaymentStatus в виде XML
|
batchCommand
|
Пакетное выполнение запросов.
|
Список платежей на выполнение команд check, сashin, pay и status в виде XML
|
Ответ шлюза, содержащий объект BatchResult в виде XML
|
balanceCommand
|
Получение баланса дилера.
|
Отсутствуют
|
Ответ шлюза, содержащий объект BalanceResult в виде XML
|
operatorCommand
|
Получение информации о текущем операторе, в том числе и баланса дилера.
|
Отсутствуют
|
Ответ шлюза, содержащий объект OperatorResult в виде XML
|
providersCommand
|
Получение информации о доступных операторах.
|
Нужно ли получение диапазонов, комиссий и картинок
|
Ответ шлюза, содержащий объект ProvidersResult в виде XML
|
commissionsCommand
|
Получение комиссий по операторам.
|
Отсутствуют
|
Ответ шлюза, содержащий объект CommissionsResult в виде XML
|
ratesCommand
|
Получение раскурсовки по провайдерам, для которых это необходимо
|
Отсутствувют
|
Ответ шлюза, содержащий список объектов ProviderRate в виде XML
|
<предыдущая страница | следующая страница>