Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Описание
Система дает возможность регистрировать/отменять подписку и проводить платежи без участия карточных данных клиента. Данный функционал применим для магазинов, работающих по протоколу IntellectMoney, в настройках магазина должна быть включена настройка "Требовать HASH".
Схема работы
Выставляем счёт. Счёт можно выставить как через Merchant API так и с помощью HTML формы.
Оплачиваем, выставленный в пункте 1, счёт банковской картой. Оплатить можно на странице оплаты merchant.intellectmoney.ru или через Merchant API.
В оповещение о платеже, которое отправляется на Result URL, добавляются статусы по запрошенным операциям, хеш уведомлений при этом не изменяется.
Создание операции по расписанию.
Выставление счёта
При выставлении счёта надо обязательно передать дополнительные параметры для использования карты в цепочке рекуррентных платежей.
В случае передачи recurringType формирование хеша происходит по схеме:
Code Block | ||||
---|---|---|---|---|
| ||||
eshopId::orderId::serviceName::recipientAmount::recipientCurrency::recurringType::secretKey |
Имя параметра | Обязательный | Описание | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
recurringType | Нет | Тип операции рекарринга, возможные значения:
| ||||||||||||
recurringInfo | Нет | Информация для пользователя, которая показывается в процессе оплаты, перед вводом реквизитов банковской карты | ||||||||||||
recurringSourceInvoiceId | Нет | Номер СКО, которым была инициирована цепочка платежей (счет, по которому был передан recurringType = Activate) Является обязательным если не передан recurringType = Pay |
Оплата счёта
Для создания операции по расписанию, счёт должен быть оплачем методом "Банковская карта", это можно сделать разными способами:
- Из личного кабинета IntellectMoney в разделе "Список счетов".
- Воспользоваться Merchant API
- Перейти по ссылке https://merchant.intellectmoney.ru/ru/index.php?invoiceId=номер_счёта&eshopId=номер_магазина
Оповещение на Result URL
В оповещении, отправляемом на Result URL придет параметр recurringState, нам Важны два параметра:
reccurringState - отображает состояния операции по расписанию
Имя параметра
Описание
recurringState Activated - Активирован, можно создавать операцию по расписанию
Deactivated - Активация отменена
Payed - Оплата завершена, операцию по расписанию выполнена
Error - Ошибка обработки операции, операция обработана не будет
SetScheduledOperation() — РЕДАКТИРОВАНИЕ ОПЕРАЦИЙ ПО РАСПИСАНИЮ
Для редактирования операций по расписанию необходимо отправить GET- или POST-запрос на следующий адрес URL:
https://api.intellectmoney.ru/personal/payment/setScheduledOperation
В уведомлении придет параметр sourceInvoiceId
Название
Имя параметра
Обязательный
Описание
Номер операции
OperationId
Нет
Номер операции для ее изменения, если не передать создается новая операция (GUID)
Объект операции
ObjectId
Да
Объект источник, например:
- SourceInvoiceId - для операции рекарринга
Дополнительные параметры в формате JSON, например:
{'Amount':15}
Флаг, указывающий возможность запуска паралельных тасков
- 0 - один поток
- 1 - не ограниченное количество потоков
Флаг, указывающий статус активности
- 0 - Активен
- 1 - Выключен
В ответ возвращается код операции и возможны 3 варианта:
Запрос обработался моментально. Ответ типа <Response> будет содержать структуру <SetScheduledOperationData> (синхронная обработка). ( Код операции - 0 )
Запрос был поставлен в очередь на обработку. Ответ типа <Response> будет содержать идентификатор операции, по которому можно запросить результат выполнения операции (асинхронная обработка). (Код операции - 1 )
- paymentId - номер счёта к оплате в системе IntellectMoney, начинается на "3", десятизначный.
getUserToken() — Аутентификация клиента API
Multiexcerpt include | ||||
---|---|---|---|---|
|
SetScheduledOperation() — Создание операций по расписанию
Ошибка обработки операции. Операция выполнена не будет. ( Код операции - 2 )mu
GetScheduledOperation() — получение списка операций по расписанию
Для получения списка операций по расписанию необходимо отправить GET- или POST-запрос на следующий адрес URL:
https://api.intellectmoney.ru/personal/payment/getScheduledOperation
Название | Имя параметра | Обязательный | Описание |
---|---|---|---|
Ключ доступа | UserToken | Да | Ключ доступа клиента к API, запрашиваемый операцией аутентификации клиента Рекуррентые платежи. |
Номер операции | OperationId | Нет | Номер операции для ее изменения, если не передать создается новая операция (GUID) |
Объект операции | ObjectId | Нет | Объект источник,
|
Тип операции | ObjectTypeVal | Нет | Тип регулярной операции (1 - Recurring) |
Параметры | Params | Нет | Дополнительные параметры в формате JSON, например: {'Amount':15} |
План выполнения | RepeatPlan | Нет | Cron expressions запуска задачи (можно использовать http://www.cronmaker.com/) |
План повторов выполнения | RetryOnFailPlan | Нет | Cron expressions запуска задачи (можно использовать http://www.cronmaker.com/) |
Количество повторов выполнения | RetryOnFailCount | Нет | Количество повторных попыток выполнения (целое число) |
Многопоточность | IsSingle | Нет | Флаг, указывающий возможность запуска паралельных тасков
|
Перезапуск | FireOnSkip | Нет | Флаг, указывающий необходимость создания всех запланированных задач, в случае их непредвиденного пропуска (0 или 1) |
Активность | State | Нет | Флаг, указывающий статус активности
|
Дата начала выборки | DateFrom | Нет | Пограничные значения даты изменения расписания ММ.ДД.ГГГГ. |
Дата окончания выборки | DateTo | Нет | Пограничные значения даты изменения расписания ММ.ДД.ГГГГ. |
Ограничение выборки по количеству объектов | Skip | Нет | Количество объектов, пропускаемых перед отдачей |
Ограничение выборки по количеству объектов | Take | Да | Ограничение на количество возвращаемых объектов. |
В ответ возвращается код операции и возможны 3 варианта:
Запрос обработался моментально. Ответ типа <Response> будет содержать структуру <GetScheduledOperationData> (синхронная обработка). ( Код операции - 0 )
Запрос был поставлен в очередь на обработку. Ответ типа <Response> будет содержать идентификатор операции, по которому можно запросить результат выполнения операции (асинхронная обработка). (Код операции - 1 )
Ошибка обработки операции. Операция выполнена не будет. ( Код операции - 2 )
Пример на языке программирования PHP
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
$urlMerchantApi = "https://dev.app.server:1443/usemyachkin/merchant/"; $urlGetToken = "https://api.intellectmoney.ru/personal/user/getUserToken"; $login = "Ваш логин от личного кабинета IntellectMoney"; $password = "Ваш пароль от личного кабинета IntellectMoney"; function curlRequest($func, $data) { global $urlMerchantApi; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_URL, $urlMerchantApi . $func . "?" . $data); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); print_r($ch); curl_close($ch); } function getToken(){ global $urlGetToken; global $login; global $password; $result = file_get_contents($urlGetToken."?Login=".$login."&Password=".$password); $xml = new SimpleXMLElement($result); $userToken = $xml->Result->UserToken[0]; return $userToken; } // создаем счёт через метод createInvoice() $orderId = '86543189414563218'; $recipientAmount = number_format(floatval(10), 2, '.', ''); $recipientCurrency = 'TST'; $serviceName = 'test'; $eshopId = '450090'; $secretKey = '<56id786ih89'; $recurringType = "Activate"; $userName = "Payer Name"; $email = "s.zhukov@intellectmoney.ru"; $purchaseHash = md5($eshopId . "::" . $orderId . "::" . $serviceName . "::" . $recipientAmount . "::" . $recipientCurrency . "::" . $recurringType . "::" . $secretKey); $hash = md5("$eshopId::$orderId::$serviceName::$recipientAmount::$recipientCurrency::$userName::$email::::::::::::::::$secretKey"); $data = array( 'eshopId' => $eshopId, 'recipientAmount' => $recipientAmount, 'recipientCurrency' => $recipientCurrency, 'email' => $email, 'userName' => $userName, 'serviceName' => $serviceName, 'orderId' => $orderId, 'recurringType' => $recurringType, 'purchaseHash' => $purchaseHash, 'hash' => $hash, ); $queryString = http_build_query($data); curlRequest('createInvoice', $queryString); //Данный метод можно вызывать только когда на Result URL пришло уведомление об оплате счёта банковской картой //С параметром recurringState равным Activated //Создаём операцию по расписанию через метод SetScheduledOperation() { $userToken = getToken(); $objectId = "paymentId";//Номер счёта к оплате в системе IntellectMoney $objectTypeVal = 1; $params = '{"Amount":"15"}'; $repeatPlan = "0 0 12 1/1 * ? *"; $retryOnFailPlan = "0 0/15 * 1/1 * ? *"; $retryOnFailCount = 3; $fireOnSkip = 1; $state = 1; $data = array( 'UserToken' => $userToken, 'OperationId' => $operationId, 'ObjectId' => $objectId, 'ObjectTypeVal' => $objectTypeVal, 'Params' => $params, 'RepeatPlan' => $repeatPlan, 'RetryOnFailPlan' => $retryOnFailPlan, 'RetryOnFailCount' => $retryOnFailCount, 'FireOnSkip' => $fireOnSkip, 'State' => $state ); $queryString = http_build_query($data); curlRequest('GetScheduledOperation', $queryString); |
Типы данных
Anchor <SetScheduledOperationData> <SetScheduledOperationData>
<SetScheduledOperationData>
<SetScheduledOperationData> | |
<SetScheduledOperationData> |
Поле | Тип | Описание |
---|---|---|
State | Статусы выполнения запросов | |
SetScheduledOperationData | Bool | 1 - Расписание отредактировано успешно |
Multiexcerpt include | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Поле | Тип | Описание |
---|---|---|
State | Статусы выполнения запросов | |
GetScheduledOperationData | Список операций |
Anchor <ScheduledOperationData> <ScheduledOperationData>
<ScheduledOperationData>
<ScheduledOperationData> | |
<ScheduledOperationData> |
Поле | Тип | Описание |
---|---|---|
OperationId | GUID | Номер операции для ее изменения, если не передать создается новая операция (GUID) |
ObjectId | long | Объект источник, например:
|
ObjectTypeVal | tinyint | Тип регулярной операции (1 - Recurring) |
Params | text | Дополнительные параметры в формате JSON, например: {'Amount':15} |
RepeatPlan | text | Cron expressions запуска задачи (можно использовать http://www.cronmaker.com/ ) |
RetryOnFailPlan | text | Cron expressions запуска задачи (можно использовать http://www.cronmaker.com/ ) |
RetryOnFailCount | text | Количество повторных попыток выполнения (целое число) |
IsSingle | bool | Флаг, указывающий возможность запуска паралельных тасков
|
FireOnSkip | bool | Флаг, указывающий необходимость создания всех запланированных задач, в случае их непредвиденного пропуска (0 или 1) |
State | bool | Флаг, указывающий статус активности
|
Table of Contents | ||
---|---|---|
|