Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Описание

Система дает возможность регистрировать/отменять подписку и проводить платежи без участия карточных данных клиента. Данный функционал применим для магазинов, работающих по протоколу IntellectMoney, в настройках магазина должна быть включена настройка "Требовать HASH".

Схема работы

  1. Выставляем счёт. Счёт можно выставить как через Merchant API так и с помощью HTML формы.

  2. Оплачиваем, выставленный в пункте 1, счёт банковской картой. Оплатить можно на странице оплаты merchant.intellectmoney.ru или через Merchant API.

  3. В оповещение о платеже, которое отправляется на Result URL, добавляются статусы по запрошенным операциям, хеш уведомлений при этом не изменяется. 

  4. Создание операции по расписанию.

Выставление счёта

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

В случае передачи recurringType формирование хеша происходит по схеме: 

Code Block
languagexml
titleФормирование hash- подписи
eshopId::orderId::serviceName::recipientAmount::recipientCurrency::recurringType::secretKey

Имя параметра

Обязательный

Описание

recurringType

Нет

Тип операции рекарринга, возможные значения:

НазваниеНазначениеОписание
ActivateДля регистрации цепочкиКарта регистрируется в цепочке платежей, дальше для всех операций с этой картой нужно передавать оплаченный счет в поле recurringSourceInvoiceId, остальные операции над выставленными счетами проводится системой в автоматическом режиме без участия пользователя
DeactivateДля отмены регистрации цепочки
PayДля оплаты
recurringInfoНетИнформация для пользователя, которая показывается в процессе оплаты, перед вводом реквизитов банковской карты
recurringSourceInvoiceIdНет

Номер СКО, которым была инициирована цепочка платежей (счет, по которому был передан recurringType = Activate)

Является обязательным если не передан recurringType = Pay

Оплата счёта

Для создания операции по расписанию, счёт должен быть оплачем методом "Банковская карта", это можно сделать разными способами:

  1. Из личного кабинета IntellectMoney в разделе "Список счетов".
  2. Воспользоваться Merchant API
  3. Перейти по ссылке https://merchant.intellectmoney.ru/ru/index.php?invoiceId=номер_счёта&eshopId=номер_магазина

Оповещение на Result URL

В оповещении, отправляемом на Result URL, нам Важны два параметра:

  1. reccurringState - отображает состояния операции по расписанию

    Имя параметра

    Описание

    recurringState

    Activated - Активирован, можно создавать операцию по расписанию

    Deactivated - Активация отменена

    Payed - Оплата завершена, операцию по расписанию выполнена

    Error - Ошибка обработки операции, операция обработана не будет

  2. paymentId - номер счёта к оплате в системе IntellectMoney, начинается на "3", десятизначный.

Anchor
getUserToken
getUserToken
getUserToken() — Аутентификация клиента API

Multiexcerpt include
MultiExcerptNamegetUserToken
PageWithExcerptДокументация Personal API


SetScheduledOperation() — Создание операций по расписанию

Multiexcerpt include
MultiExcerptNamesetScheduledOperation
PageWithExcerptДокументация Personal API


GetScheduledOperation() — получение списка операций по расписанию

Multiexcerpt include
MultiExcerptNamegetScheduledOperation
PageWithExcerptДокументация Personal API

Anchor
additionalInfo
additionalInfo
Дополнительная информация

Multiexcerpt include
MultiExcerptNameadditionalInfo
PageWithExcerptДокументация Personal API

Пример на языке программирования PHP

Code Block
languagephp
themeConfluence
titleобщий пример на языке программирования PHP
$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() {

Типы данных

Anchor
<SetScheduledOperationData>
<SetScheduledOperationData>
<SetScheduledOperationData>

Поле

Тип

Описание

State

<RequestState>

Статусы выполнения запросов

SetScheduledOperationData

Bool

1 - Расписание отредактировано успешно
0 - Ошибки, расписание не отредактировано

Multiexcerpt include
MultiExcerptName

test

setScheduledOperationData
PageWithExcerptДокументация Personal API

Anchor
<GetScheduledOperationData>
<GetScheduledOperationData>
<GetScheduledOperationData>

Поле

Multiexcerpt include

Тип

MultiExcerptName

Описание

getScheduledOperation

State

PageWithExcerpt

<RequestState>

Статусы выполнения запросов

GetScheduledOperationData

List<ScheduledOperationData>

Список операций

Документация Personal API

Anchor
<ScheduledOperationData>
<ScheduledOperationData>
<ScheduledOperationData>

Поле

Тип

Описание

OperationId
GUID
Номер операции для ее изменения, если не передать создается новая операция (GUID)
ObjectId
long

Объект источник, например:

  • SourceInvoiceId - для операции рекарринга
ObjectTypeValtinyintТип регулярной операции (1 - Recurring)Paramstext

Дополнительные параметры в формате JSON, например:

{'Amount':15}

RepeatPlantextCron expressions запуска задачи (можно использовать  http://www.cronmaker.com/ )RetryOnFailPlantextCron expressions запуска задачи (можно использовать  http://www.cronmaker.com/ )RetryOnFailCounttextКоличество повторных попыток выполнения (целое число)IsSinglebool

Флаг, указывающий возможность запуска паралельных тасков

  • 0 - один поток
  • 1 - не ограниченное количество потоков
FireOnSkipboolФлаг, указывающий необходимость создания всех запланированных задач, в случае их непредвиденного пропуска (0 или 1)

Multiexcerpt include
MultiExcerptNameScheduledOperationData
PageWithExcerptДокументация Personal API

Statebool

Флаг, указывающий статус активности

  • 0 - Активен
  • 1 - Выключен



    Table of Contents
    maxLevel2