Page tree

Versions Compared

Key

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


Section


Column
width60%


Info

Эта статья - вступление в работу с API IntellectMoney. Информацию по всему доступному функционалу можно найти в последующих статьях раздела Методы API

Без запроса доступа к API можно использовать методы из этой статьи с валютой TST. 

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

Для вызова методов API нужно придумать и задать свой секретный ключ в настройках магазина, на вкладке "Подключение магазина". Также, после заключения договора, нужно получить Bearer токен с доп. ключом на странице Безопасность, они понадобятся для авторизации:

Image Added

Уровень PCI DSS нужен для методов API, в которых передаются карточные данные, например для метода BankCardPayment

До заключения договора можно использовать валюту TST, она не требует авторизации (для нее не обязательно передавать заголовки Authorization и Sign).


Column
width40%

Table of Contents



...

Multiexcerpt
hiddentrue
MultiExcerptNameHTTP Заголовок Sign

В

Схема интеграции

  1. Выставляем счёт
    • Либо с помощью метода API CreateInvoice
    • Либо можно сформировать ссылку, при переходе покупателя на которую счёт выставится автоматически
  2. Покупатель оплачивает счёт
    • Либо на нашей платежной странице
    • Либо в нашем виджете
    • Либо на вашем сайте, с помощью метода BankCardPayment (у вашей организации должна быть сертификация PCI DSS)
  3. Получаем статус оплаты
    • Либо ждем HTTP POST запроса об изменении статуса от IntellectMoney
    • Либо периодически вызываем метод API GetBankCardPaymentState

Авторизация в API

Для авторизации в запросе нужно передать 3 строки: ваш Bearer токен и два хеша.

HTTP заголовок Authorization

В заголовке Authorization нужно передать Bearer токен в формате Bearer 92022dd8245a56d8a73446b43ebb3590. Bearer token (с секретным ключом) можно запросить тут: https://lk.intellectmoney.ru/profile/security/api.

![[Screenshot_18.png]]

HTTP заголовок Sign

...

заголовке Sign нужно передать хеш, сформированный из остальных параметров. Хеш формируется по шаблону, которой уникален для каждого метода. Для примера, вот шаблон из метода CreateInvoice:

Code Block
languagetext
titleШаблон формирования заголовка Sign
eshopId::orderId::serviceName::recipientAmount::recipientCurrency::userName::email::successUrl::failUrl::backUrl::resultUrl::expireDate::holdMode::preference::signSecretKey

...

В нем signSecretKey - секретный ключ, полученный вместе с Bearer токеном на странице https://lk.intellectmoney.ru/profile/security/api (можно получить после заключения договора), остальное - параметры передаваемые в метод.

Скажем, что вы вызываете метод CreateInvoice со следующими параметрами:

Code Block
languagetext
titleПараметры
eshopId: 462539
orderId: myorder
recipientAmount: 10.00
recipientCurrency: RUB
email: e@e.ru

...


Для рассчета хеша нужно:

  1. Заменить имена параметров в шаблоне их значениями, и подставить секретный ключ вместо signSecretKey. Получаем строку:

    Code Block
    languagetext
    462539::myorder::::10.00::RUB::::e@e.ru::::::::::::::::21baff51c1a342f3ac059e61e0894583

...


  1. Эту строку нужно закодировать в UTF-8 и посчитать от нее хеш SHA256. Получаем

...

  1. хеш:

    Code Block
    languagetext
    1c4e379396faee212c676d500ee12a21354d8f68b1acbc40b64065cd7dcd50fa

...

...


Полученный хеш

...

записываем в заголовок Sign.


Multiexcerpt
hiddentrue
MultiExcerptNameHTTP заголовок Authorization

В заголовке Authorization нужно передать Bearer токен в формате Bearer 92022dd8245a56d8a73446b43ebb3590. Bearer token (вместе с секретным ключом) можно запросить в личном кабинете после заключения договора.


Multiexcerpt
hiddentrue
MultiExcerptNameПараметр hash

У каждого метода API имеется параметр hash.

...

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

...

Code Block
languagetext
titleШаблон формирования параметра hash
eshopId::

...

orderId::serviceName::recipientAmount::recipientCurrency::userName::email::successUrl::failUrl::backUrl::resultUrl::expireDate::holdMode::preference::secretKey

...

Здесь secretKey - ключ, заданный в личном кабинете в настройках магазина. Это ключ, как и весь шаблон, не связаны с ключем и шаблоном из заголовка Sign.

Возьмем такие параметры для примера:

Code Block
languagetext
titleПараметры
eshopId: 462539
orderId: myorder
recipientAmount: 10.00
recipientCurrency: RUB
email: e@e.ru

...


Для расчета параметра hash нужно:

  1. Заменить имя каждого параметра его значением, и подставить секретный ключ вашего магазина вместо secretKey:

    Code Block
    languagetext
    462539::myorder::::10.00::RUB::::e@e.ru::::::::::::::::my_very_secret_key

...


  1. Закодировать полученную строку в UTF-8 и расчитать её MD5 хеш:

    Code Block
    languagetext
    7a97ff0cda3d7593c1a69a04d0a78a13

...


Полученный хеш нужно передать в параметре hash.

...


column

CreateInvoice - ВЫСТАВЛЕНИЕ СЧЁТА К ОПЛАТЕ

POST https://api.intellectmoney.ru/merchant/createInvoice

Заголовки:

Authorization: Bearer <ваш токен>Content-Type:
Multiexcerptsection
hidden
true
MultiExcerptNameЗаголовки Merchant 2.0 API

Заголовки:

  • Authorization: Bearer <ваш токен>

    Expand
    titleФормирование заголовка Authorization

    Multiexcerpt include
    MultiExcerptNameHTTP заголовок Authorization
    addpaneltrue
    PageWithExcerptAPI: Быстрый старт

width60%


  • Sign: <хеш рассчитанный по

  • шаблону ниже>
    • шаблону>

      Expand
      titleФормирование заголовка Sign

      Multiexcerpt include
      MultiExcerptNameHTTP Заголовок Sign
      addpaneltrue
      PageWithExcerptAPI: Быстрый старт


    • Content-Type:
    • application/json или application/x-www-form-urlencoded
    • Accept: application/json или application/xml
    code


    languagetext
    Multiexcerpt
    hidden
    true
    titleШаблон формирования заголовка Sign
    eshopId::orderId::serviceName::recipientAmount::recipientCurrency::userName::email::successUrl::failUrl::backUrl::resultUrl::expireDate::holdMode::preference::signSecretKey
    Code Block
    languagetext
    titleШаблон формирования параметра hash
    eshopId::orderId::serviceName::recipientAmount::recipientCurrency::userName::email::successUrl::failUrl::backUrl::resultUrl::expireDate::holdMode::preference::secretKey
    Column Section
    Column
    width20%

    Параметры

    Имя параметраОписание
    eshopId
    Обязательный
    ID магазина
    orderId
    Обязательный
    Уникальный идентификатор покупки из вашей системы.
    до 50 символов
    recipientAmount
    Обязательный
    Сумма платежа, разделенная точкой. Минимальное значение - 10.00.
    До 13 символов, до 2 цифр после точки.
    recipientCurrency
    Обязательный
    Валюта платежа.
    Допустимые значения
    - TST (тестовая валюта)
    - RUB
    - USD
    - EUR
    email
    Обязательный
    E-mail покупателя. До 100 символов.
    hash
    Обязательный
    Контрольная подпись запроса
    serviceNameНазначение платежа - описание товара или услуги.
    До 1024 символов.
    userNameИмя покупателя, До 255 символов.
    successUrlАдрес, на который происходит перенаправление плательщика с платежной страницы после успешной оплаты
    До 512 символов.
    failUrlАдрес, на который происходит перенаправление плательщика с платежной страницы в случае неуспешной оплаты
    До 512 символов.
    backUrlАдрес ссылки "Вернуться в магазин" на платежной странице
    До 512 символов.
    resultUrlАдрес, на который система IntellectMoney посылает HTTP/S POST запросы об изменении состояния cчёта
    До 512 символов.
    expireDateСрок существования счёта - дата и время, по достижению которых оплатить счёт станет невозможно.
    Формат: yyyy-MM-dd HH:mm:ss.
    preferenceВозможные способы оплаты счёта. Если не передавать, счет можно будет оплатить любым из подключенных способов.
    Допустимые значения
    - BankCard
    - YandexPay
    - Sbp
    Можно перечислить несколько значений через запятую, например "BankCard,YandexPay,Sbp".

    В этой таблице опущена часть параметров, например параметры связанные с холдированием, онлайн кассой, и рекаррингом. См. полный список параметров здесь: СЮДА НАДО ССЫЛКУ НА Merchant API

    Column

    Пример запроса

    Code Block
    languagetext
    titleЗаголовки
    Content-Type: application/json
    Accept: application/json
    Authorization: Bearer 92022dd8245a56d8a73446b43ebb3590
    Sign: 58654f0550d44fb36fdb986080318aa9b277e1c7336ff6bdb2d00e329f2550e2
    Code Block
    languagetext
    titleТело
    {
        "eshopId": "465932",
        "orderId": "a072334a33c0428d8a447072a779ddf0",
        "recipientAmount": "15.00",
        "recipientCurrency": "TST",
        "email": "e.mozgovoy+1@intellectmoney.ru",
        "hash": "9b37951051c0ef86f837d1ed5a0780f6"
    }
    
    

    Пример ответа

    Чтобы получить ответ в формате JSON, нужно добавить в запрос заголовок Accept: application/json

    {
        "OperationState": {
            "Code": 0,
            "Desc": "Успешно обработана"
        },
        "EshopId": 465932,
        "Result": {
            "State": {
                "Code": 0,
                "Desc": "Успешно обработан"
            },
            "InvoiceId": 3227169792,
            "PaymentWays": [
                {
                    "Id": 132,
                    "Amount": {
                        "Amount": 15.0000,
                        "Currency": "TST"
                    },
                    "InputType": "TestAcquiring",
                    "Preference": "BankCard",
                    "PreferenceTypes": [
                        "All",
                        "Popular",
                        "Online",
                        "NonComission",
                        "Flash"
                    ],
                    "ServiceTimeOfEnrollmentType": "Flash",
                    "Commission": 0.0,
                    "IsVisible": true,
                    "IsActive": true,
                    "Position": 110
                }
            ]
        }
    }
    

    GetBankCardPaymentState - СОСТОЯНИЕ ПЛАТЕЖА

    POST https://api.intellectmoney.ru/merchant/getbankcardpaymentstate Заголовки:

    • Authorization: Bearer <ваш токен>
    • Sign: <хеш рассчитанный по шаблону ниже>
    • Content-Type: application/json или application/x-www-form-urlencoded
    • Accept: application/json или application/xml

    Шаблон формирования заголовка Sign: eshopId::invoiceId::signSecretKey

    Шаблон формирования параметра hash: eshopId::invoiceId::secretKey

    Параметры

    Имя параметраОписание
    eshopId
    Обязательный
    ID магазина, в котором был выставлен счёт
    invoiceId
    Обязательный
    Номер счёта
    hash
    Обязательный
    Контрольная подпись запроса

    Пример запроса

    Заголовки:

    Content-Type: application/json
    Accept: application/json
    Authorization: Bearer 92022dd8245a56d8a73446b43ebb3590
    Sign: 0ae3bb9779c482057580595c6b47e437ee6a4dda1065002e7d77ab597956bb70
    

    Тело:

    {
        "eshopId": "465932",
        "invoiceId": "3227169792",
        "hash": "815ec9d288bd6926bc37304cde7db05e"
    }
    

    Пример ответа

    Чтобы получить ответ в формате JSON, нужно добавить в запрос заголовок Accept: application/json

    {
        "OperationState": {
            "Code": 0,
            "Desc": "Успешно обработана"
        },
        "EshopId": 465932,
        "Result": {
            "PaymentStep": "InProcess",
            "State": {
                "Code": 0,
                "Desc": "Успешно обработан"
            }
        }
    }
    

    BankCardPayment - ОПЛАТА БАНКОВСКОЙ КАРТОЙ

    POST https://api.intellectmoney.ru/merchant/bankcardpayment Заголовки:

    • Authorization: Bearer <ваш токен>
    • Sign: <хеш рассчитанный по шаблону ниже>
    • Content-Type: application/json или application/x-www-form-urlencoded
    • Accept: application/json или application/xml Шаблон формирования заголовка Sign: eshopId::invoiceId::pan::cardHolder::expiredMonth::expiredYear::cvv::returnUrl::ipAddress::signSecretKey Шаблон формирования параметра hash:eshopId::invoiceId::pan::cardHolder::expiredMonth::expiredYear::cvv::returnUrl::ipAddress::secretKey

    Используется для передачи реквизитов банковской карты и дальнейшей оплаты счета.

    Для использования этого метода у вашей организации должна быть сертификация PCI DSS. Если у вас её нет, то оплату можно реализовать перенаправлением покупателя на нашу платежную страницу, либо внедрением нашего платежного виджета на сайт.

    Параметры

    Имя параметраОписание
    eshopId
    Обязательный
    ID магазина, где был выставлен счёт
    invoiceId
    Обязательный
    Номер счёта к оплате
    ipAddress
    Обязательный
    IP адрес сайта, с которого выставляется платеж.
    returnUrl
    Обязательный
    Адрес, на который перенаправляет плательщика после завершения 3DS.
    cardHolderИмя и фамилия с карты
    pan
    Обязательный
    Номер карты плательщика
    cvv
    Обязательный для карт имеющих CVV2 (CVC2)
    Секретный код CVV2 (CVC2), как правило написан на обороте карты (последние три цифры на полосе для подписи). Параметр не нужно передавать, если карта не имеет кода.
    expiredYear
    Обязательный
    Год, до которого действует карта
    expiredMonth
    Обязательный
    Месяц, до которого действует карта
    hash
    Обязательный
    Контрольная подпись запроса

    Пример запроса

    Заголовки:

    Content-Type: application/json
    Accept: application/json
    Authorization: Bearer 7b51b65ec7da4b518bc0ef41617adf3a
    Sign: a861e54fd1aae4e0686a4dd532ba15daf892058752329a07f57b0cb8d199a05b
    

    Тело:

    {
        "eshopId": "465932",
        "invoiceId": "3227169792",
        "ipAddress": "1.1.1.1",
        "returnUrl": "https://example.com",
        "cardHolder": "NAME SURNAME",
        "pan": "4111111111111111",
        "cvv": "123",
        "expiredYear": "29",
        "expiredMonth": "02",
        "hash": "46cc4a126da424cd1495eeccd791cb71"
    }
    

    Пример ответа

    Чтобы получить ответ в формате JSON, нужно добавить в запрос заголовок Accept: application/json

    MultiExcerptNameВозможные значения Currency


    Expand
    titleВозможные значения
    • TST (тестовая валюта)
    • RUB
    • USD
    • EUR



    Multiexcerpt
    hiddentrue
    MultiExcerptNameВозможные значения OperationState.Code


    Expand
    titleВозможные значения


    0Успех
    2Ошибка




    Multiexcerpt
    hiddentrue
    MultiExcerptNameВозможные значения Result.State.Code


    Expand
    titleВозможные значения


    0Успех
    1Успех с предупреждениями
    любое другое значениеОшибка




    Section


    Column
    width60%

    CreateInvoice - ВЫСТАВЛЕНИЕ СЧЁТА К ОПЛАТЕ

    Multiexcerpt include
    MultiExcerptNameЗаголовки Merchant 2.0 API
    PageWithExcerptAPI: Быстрый старт

    Code Block
    languagetext
    titleШаблон формирования заголовка Sign
    eshopId::orderId::serviceName::recipientAmount::recipientCurrency::userName::email::successUrl::failUrl::backUrl::resultUrl::expireDate::holdMode::preference::signSecretKey


    Code Block
    languagetext
    titleШаблон формирования параметра hash
    eshopId::orderId::serviceName::recipientAmount::recipientCurrency::userName::email::successUrl::failUrl::backUrl::resultUrl::expireDate::holdMode::preference::secretKey

    Запрос

    Имя параметраОписание
    eshopId
    Обязательный
    ID магазина
    orderId
    Обязательный
    Уникальный идентификатор покупки из вашей системы.
    до 50 символов
    recipientAmount
    Обязательный
    Сумма платежа, разделенная точкой. Минимальное значение - 10.00.
    До 13 символов, до 2 цифр после точки.
    recipientCurrency
    Обязательный

    Валюта платежа.

    Multiexcerpt include
    MultiExcerptNameВозможные значения Currency
    PageWithExcerptAPI: Быстрый старт

    email
    Обязательный
    E-mail покупателя.
    До 100 символов.
    hash
    Обязательный

    Контрольная подпись запроса

    Expand
    titleФормирование подписи запроса

    Multiexcerpt include
    MultiExcerptNameПараметр hash
    addpaneltrue
    PageWithExcerptAPI: Быстрый старт


    serviceNameНазначение платежа - описание товара или услуги.
    До 1024 символов.
    userNameИмя покупателя
    До 255 символов.
    successUrlАдрес, на который происходит перенаправление плательщика с платежной страницы после успешной оплаты
    До 512 символов.
    failUrlАдрес, на который происходит перенаправление плательщика с платежной страницы в случае неуспешной оплаты
    До 512 символов.
    backUrlАдрес ссылки "Вернуться в магазин" на платежной странице
    До 512 символов.
    resultUrlАдрес, на который система IntellectMoney посылает HTTP/S POST запросы об изменении состояния cчёта
    До 512 символов.
    preference

    Возможные способы оплаты счёта. Если не передавать, счет можно будет оплатить любым из подключенных способов.

    Expand
    titleВозможные значения
    • BankCard
    • YandexPay
    • Sbp

    Можно перечислить несколько значений через запятую, например BankCard,YandexPay,Sbp


    holdMode

    Сразу списывать средства с карты, или холдировать (замораживать)

    Expand
    titleВозможные значения
    • 1 - включить холдирование
    • 0 - отключить холдирования
    • null/не передан - использовать настройки холдирования магазина


    expireDate
    Обязательный при holdMode = 1

    Срок существования счёта - дата и время, по достижению которых оплатить счёт станет невозможно.
    Формат: yyyy-MM-dd HH:mm:ss.
    holdTime
    Обязательный при holdMode = 1

    Время, через которое захолдированные средства будут автоматически зачислены на счёт магазина или возвращены покупателю, измеряется в часах.
    Целое число от 1 до 119 часов

    В этой таблице опущена часть параметров, например параметры связанные с онлайн кассой и рекаррингом. См. полный список параметров в описании Merchant 2.0 API.

    Ответ

    • OperationState
      • Code - Статус предвалидации запроса
        Multiexcerpt include
        MultiExcerptNameВозможные значения OperationState.Code
        PageWithExcerpt@self
      • Desc - Описание статуса предвалидации запроса
    • EshopId - ID магазина, в котором выставляется счёт
    • Result
      • State
        • Code - Результат выполнения запроса
          Multiexcerpt include
          MultiExcerptNameВозможные значения Result.State.Code
          PageWithExcerpt@self
        • Desc - Описание результата выполнения запроса
      • InvoiceId - Номер созданного счёта
      • PaymentWays - Список возможных способов оплаты
        • Id - ID способа оплаты
        • Amount
          • Amount - Сумма оплаты
          • Currency - Валюта оплаты
            Multiexcerpt include
            MultiExcerptNameВозможные значения Currency
            PageWithExcerpt@self
        • InputType - Тип способа оплаты
        • Preference - Название способа оплаты
        • Commission - Комиссия
        • IsVisible - Будет ли этот способ оплаты отображаться на платежной странице
        • IsActive - Доступен ли этот способ оплаты
        • Position - Положение в списке относительно остальных способов


    Column


    Tip
    iconfalse
    titleПример запроса


    Localtab Group


    Localtab
    activetrue
    titleСырое тело


    Code Block
    languagetext
    titleЗаголовки
    Content-Type: application/json
    Accept: application/json
    Authorization: Bearer 92022dd8245a56d8a73446b43ebb3590
    Sign: 58654f0550d44fb36fdb986080318aa9b277e1c7336ff6bdb2d00e329f2550e2


    Code Block
    languagetext
    titleТело
    {
        "eshopId": "465932",
        "orderId": "a072334a33c0428d8a447072a779ddf0",
        "recipientAmount": "15.00",
        "recipientCurrency": "TST",
        "email": "e.mozgovoy+1@intellectmoney.ru",
        "hash": "9b37951051c0ef86f837d1ed5a0780f6"
    }



    Localtab
    titlePHP (библиотека IM)


    Code Block
    languagephp
    titleПример PHP с библиотекой IM
    // Используется библиотека https://github.com/IntellectMoney/intellectmoney-sdk-php
    <?php
    require_once __DIR__ . '/../vendor/autoload.php';
    use IntellectMoney\SDK\MerchantApiClient;
    use IntellectMoney\SDK\Structs\Common\AuthData;
    use IntellectMoney\SDK\Structs\Request\CreateInvoiceDataModel;
    use IntellectMoney\SDK\Structs\Common\Money;
    
    $dataModel = new CreateInvoiceDataModel([
    	"eshopId" => "465932",
    	"orderId" => "fdsfdsfsd",
    	"recipientAmount" => new Money(10),
    	"email" => "e.mozgovoy+1@intellectmoney.ru"
    ]);
    
    $authData = new AuthData("your_eshop_secret_key");
    
    $result = MerchantApiClient::createInvoice($dataModel, $authData);
    echo "<pre>";
    var_dump($result);



    Localtab
    titleBash/Curl


    Code Block
    languagebash
    #!/bin/bash
    
    # Ключи
    bearer_token="d41d8cd98f00b204e9800998ecf8427e"
    sign_secret_key="1d5dde3821c0acfd4e3c748de9aaea5c"
    eshop_secret_key="123456"
    
    # Параметры запроса
    eshop_id="465932"
    order_id="order_$(date +%s | sha1sum | head -c 8)"
    recipient_amount="10.00"
    recipient_currency="TST"
    email="e.mozgovoy+1@intellectmoney.ru"
    service_name=""
    user_name=""
    success_url=""
    fail_url=""
    back_url=""
    result_url=""
    preference=""
    hold_mode=""
    expire_date=""
    hold_time=""
    
    # Генерируем хеш для заголовка Sign
    sign_hash_string="${eshop_id}::${order_id}::${service_name}::${recipient_amount}::${recipient_currency}::${user_name}::${email}::${success_url}::${fail_url}::${back_url}::${result_url}::${expire_date}::${hold_mode}::${preference}::${sign_secret_key}"
    sign_hash=$(echo -n "$sign_hash_string" | sha256sum | awk '{print $1}')
    
    # Генерируем хеш для параметра hash
    hash_string="${eshop_id}::${order_id}::${service_name}::${recipient_amount}::${recipient_currency}::${user_name}::${email}::${success_url}::${fail_url}::${back_url}::${result_url}::${expire_date}::${hold_mode}::${preference}::${eshop_secret_key}"
    hash=$(echo -n "$hash_string" | md5sum | awk '{print $1}')
    
    response=$(curl -X POST \
      -H "Authorization: Bearer ${bearer_token}" \
      -H "Sign: ${sign_hash}" \
      -H "Content-Type: application/x-www-form-urlencoded" \
      --data-urlencode "eshopId=${eshop_id}" \
      --data-urlencode "orderId=${order_id}" \
      --data-urlencode "recipientAmount=${recipient_amount}" \
      --data-urlencode "recipientCurrency=${recipient_currency}" \
      --data-urlencode "email=${email}" \
      --data-urlencode "hash=${hash}" \
      --data-urlencode "serviceName=${service_name}" \
      --data-urlencode "userName=${user_name}" \
      --data-urlencode "successUrl=${success_url}" \
      --data-urlencode "failUrl=${fail_url}" \
      --data-urlencode "backUrl=${back_url}" \
      --data-urlencode "resultUrl=${result_url}" \
      --data-urlencode "preference=${preference}" \
      --data-urlencode "holdMode=${hold_mode}" \
      --data-urlencode "expireDate=${expire_date}" \
      --data-urlencode "holdTime=${hold_time}" \
      https://api.intellectmoney.ru/merchant/createInvoice)
    
    echo "Response: $response"





    Tip
    iconfalse
    titleПример ответа

    Для получения ответа в формате JSON в запросе должен быть заголовок Accept: application/json

    Code Block
    languagetext
    titleТело
    {
        "OperationState": {
            "Code": 0,
            "Desc": "Успешно обработана"
        },
        "EshopId": 465932,
        "Result": {
            "State": {
                "Code": 0,
                "Desc": "Успешно обработан"
            },
            "InvoiceId": 3227169792,
            "PaymentWays": [
                {
                    "Id": 132,
                    "Amount": {
                        "Amount": 15.0000,
                        "Currency": "TST"
                    },
                    "InputType": "TestAcquiring",
                    "Preference": "BankCard",
                    "Commission": 0.0,
                    "IsVisible": true,
                    "IsActive": true,
                    "Position": 110
                }
            ]
        }
    }




    ...

    Section


    Column
    width60%

    GetBankCardPaymentState - СОСТОЯНИЕ ПЛАТЕЖА

    POST https://api.intellectmoney.ru/merchant/getbankcardpaymentstate

    Multiexcerpt include
    MultiExcerptNameЗаголовки Merchant 2.0 API
    PageWithExcerpt@self

    Code Block
    languagetext
    titleШаблон формирования заголовка Sign
    eshopId::invoiceId::signSecretKey


    Code Block
    languagetext
    titleШаблон формирования параметра hash
    eshopId::invoiceId::secretKey

    Запрос

    Имя параметраОписание
    eshopId
    Обязательный
    ID магазина, в котором был выставлен счёт
    invoiceId
    Обязательный
    Номер счёта
    hash
    Обязательный

    Контрольная подпись запроса

    Expand
    titleФормирование подписи запроса

    Multiexcerpt include
    MultiExcerptNameПараметр hash
    addpaneltrue
    PageWithExcerpt@self


    Ответ

    • OperationState
      • Code - Статус предвалидации запроса
        Multiexcerpt include
        MultiExcerptNameВозможные значения OperationState.Code
        PageWithExcerpt@self
      • Desc - Описание статуса предвалидации запроса
    • EshopId - ID магазина, в котором выставляется счёт
    • Result
      • State
        • Code - Результат выполнения запроса
          Multiexcerpt include
          MultiExcerptNameВозможные значения Result.State.Code
          PageWithExcerpt@self
        • Desc - Описание результата выполнения запроса
      • PaymentStep - Текущее состояние платежа

        Expand
        titleВозможные значения


        CreatedСоздан
        InProcessВ обработке
        SendTo3DSОжидается прохождение 3DS
        ActivationPaymentОжидается завершение активационного платежа
        ErrorОплата завершилась ошибкой
        OkОплачен




    Column


    Tip
    iconfalse
    titleПример запроса


    Localtab Group


    Localtab
    activetrue
    titleСырое тело


    Code Block
    languagetext
    titleЗаголовки
    Content-Type: application/json
    Accept: application/json
    Authorization: Bearer 92022dd8245a56d8a73446b43ebb3590
    Sign: 0ae3bb9779c482057580595c6b47e437ee6a4dda1065002e7d77ab597956bb70


    Code Block
    languagetext
    titleТело
    {
        "eshopId": "465932",
        "invoiceId": "3227169792",
        "hash": "815ec9d288bd6926bc37304cde7db05e"
    }



    Localtab
    titlePHP (библиотека IM)


    Code Block
    languagephp
    titleПример PHP с библиотекой IM
    // Используется библиотека https://github.com/IntellectMoney/intellectmoney-sdk-php <?php
    
    require_once __DIR__ . '/../vendor/autoload.php';
    use IntellectMoney\SDK\MerchantApiClient;
    use IntellectMoney\SDK\Structs\Common\AuthData;
    use IntellectMoney\SDK\Structs\Request\CheckInvoiceDataModel;
    
    $dataModel = new CheckInvoiceDataModel([
        "eshopId" => "465932",
        "invoiceId" => "3168498287"
    ]);
    
    $authData = new AuthData("your_eshop_secret_key");
    
    $result = MerchantApiClient::getBankCardPaymentState($dataModel, $authData);
    echo "<pre>";
    var_dump($result);



    Localtab
    titleBash/Curl


    Code Block
    languagebash
    #!/bin/bash
    
    # Ключи
    bearer_token="d41d8cd98f00b204e9800998ecf8427e"
    sign_secret_key="1d5dde3821c0acfd4e3c748de9aaea5c"
    eshop_secret_key="123456"
    
    # Параметры запроса
    eshop_id="465932"
    invoice_id="3168498287"
    
    # Генерируем хеш для заголовка Sign
    sign_hash_string="${eshop_id}::${invoice_id}::${sign_secret_key}"
    sign_hash=$(echo -n "$sign_hash_string" | sha256sum | awk '{print $1}')
    
    # Генерируем хеш для параметра hash
    hash_string="${eshop_id}::${invoice_id}::${eshop_secret_key}"
    hash=$(echo -n "$hash_string" | md5sum | awk '{print $1}')
    
    response=$(curl -X POST \
      -H "Authorization: Bearer ${bearer_token}" \
      -H "Sign: ${sign_hash}" \
      -H "Content-Type: application/x-www-form-urlencoded" \
      --data-urlencode "eshopId=${eshop_id}" \
      --data-urlencode "invoiceId=${invoice_id}" \
      --data-urlencode "hash=${hash}" \
      https://api.intellectmoney.ru/merchant/getbankcardpaymentstate)
    
    echo "Response: $response"





    Tip
    iconfalse
    titleПример ответа

    Для получения ответа в формате JSON в запросе должен быть заголовок Accept: application/json

    Code Block
    languagetext
    titleТело
    {
        "OperationState": {
            "Code": 0,
            "Desc": "Успешно обработана"
        },
        "EshopId": 465932,
        "Result": {
            "PaymentStep": "InProcess",
            "State": {
                "Code": 0,
                "Desc": "Успешно обработан"
            }
        }
    }




    ...

    Section

    Anchor
    BankCardPaymentApiMethod
    BankCardPaymentApiMethod

    Column
    width60%

    BankCardPayment - ОПЛАТА БАНКОВСКОЙ КАРТОЙ

    POST https://api.intellectmoney.ru/merchant/bankcardpayment

    Multiexcerpt include
    MultiExcerptNameЗаголовки Merchant 2.0 API
    PageWithExcerpt@self

    Code Block
    languagetext
    titleШаблон формирования заголовка Sign
    eshopId::invoiceId::pan::cardHolder::expiredMonth::expiredYear::cvv::returnUrl::ipAddress::signSecretKey


    Code Block
    languagetext
    titleШаблон формирования параметра hash
    eshopId::invoiceId::pan::cardHolder::expiredMonth::expiredYear::cvv::returnUrl::ipAddress::secretKey

    Используется для передачи реквизитов банковской карты и дальнейшей оплаты счета.

    Для использования этого метода у вашей организации должна быть сертификация PCI DSS. Если у вас её нет, то оплату можно реализовать перенаправлением покупателя на нашу платежную страницу, либо внедрением нашего платежного виджета на сайт.

    Запрос

    Имя параметраОписание
    eshopId
    Обязательный
    ID магазина, где был выставлен счёт
    invoiceId
    Обязательный
    Номер счёта к оплате
    ipAddress
    Обязательный
    IP адрес сайта, с которого выставляется платеж.
    returnUrl
    Обязательный
    Адрес, на который перенаправляет плательщика после завершения 3DS.
    cardHolderИмя и фамилия с карты
    pan
    Обязательный
    Номер карты плательщика
    cvv
    Обязательный для карт имеющих CVV2 (CVC2)
    Секретный код CVV2 (CVC2), как правило написан на обороте карты (последние три цифры на полосе для подписи). Параметр не нужно передавать, если карта не имеет кода.
    expiredYear
    Обязательный
    Год, до которого действует карта
    expiredMonth
    Обязательный
    Месяц, до которого действует карта
    hash
    Обязательный

    Контрольная подпись запроса

    Expand
    titleФормирование подписи запроса

    Multiexcerpt include
    MultiExcerptNameПараметр hash
    addpaneltrue
    PageWithExcerpt@self


    Ответ

    • OperationState
      • Code - Статус предвалидации запроса
        Multiexcerpt include
        MultiExcerptNameВозможные значения OperationState.Code
        PageWithExcerpt@self
      • Desc - Описание статуса предвалидации запроса
    • EshopId - ID магазина, в котором выставляется счёт
    • Result
      • State
        • Code - Результат выполнения запроса
          Multiexcerpt include
          MultiExcerptNameВозможные значения Result.State.Code
          PageWithExcerpt@self
        • Desc - Описание результата выполнения запроса


    Column


    Tip
    iconfalse
    titleПример запроса


    Localtab Group


    Localtab
    activetrue
    titleСырое тело


    Code Block
    languagetext
    titleЗаголовки
    Content-Type: application/json
    Accept: application/json
    Authorization: Bearer 7b51b65ec7da4b518bc0ef41617adf3a
    Sign: a861e54fd1aae4e0686a4dd532ba15daf892058752329a07f57b0cb8d199a05b


    Code Block
    languagetext
    titleТело
    {
        "eshopId": "465932",
        "invoiceId": "3227169792",
        "ipAddress": "1.1.1.1",
        "returnUrl": "https://example.com",
        "cardHolder": "NAME SURNAME",
        "pan": "4111111111111111",
        "cvv": "123",
        "expiredYear": "29",
        "expiredMonth": "02",
        "hash": "46cc4a126da424cd1495eeccd791cb71"
    }



    Localtab
    titlePHP (библиотека IM)


    Code Block
    languagephp
    titleПример PHP с библиотекой IM
    // Используется библиотека https://github.com/IntellectMoney/intellectmoney-sdk-php <?php
    require_once __DIR__ . '/../vendor/autoload.php';
    use IntellectMoney\SDK\MerchantApiClient;
    use IntellectMoney\SDK\Structs\Common\AuthData;
    use IntellectMoney\SDK\Structs\Request\PayInvoiceBankCardDataModel;
    
    $dataModel = new PayInvoiceBankCardDataModel([
        "eshopId" => "465932",
        "invoiceId" => "3227169792",
        "ipAddress" => "1.1.1.1",
        "returnUrl" => "https://example.com",
        "cardHolder" => "NAME SURNAME",
        "pan" => "4111111111111111",
        "cvv" => "123",
        "expiredYear" => "29",
        "expiredMonth" => "02"
    ]);
    
    $authData = new AuthData("your_eshop_secret_key");
    
    $result = MerchantApiClient::bankCardPayment($dataModel, $authData);
    echo "<pre>";
    var_dump($result);



    Localtab
    titleBash/Curl


    Code Block
    languagebash
    #!/bin/bash
    
    # Ключи
    bearer_token="d41d8cd98f00b204e9800998ecf8427e"
    sign_secret_key="1d5dde3821c0acfd4e3c748de9aaea5c"
    eshop_secret_key="123456"
    
    # Параметры запроса
    eshop_id="465932"
    invoice_id="3227169792"
    ip_address="1.1.1.1"
    return_url="https://example.com"
    card_holder="NAME SURNAME"
    pan="4111111111111111"
    cvv="123"
    expired_year="29"
    expired_month="02"
    
    # Генерируем хеш для заголовка Sign
    sign_hash_string="${eshop_id}::${invoice_id}::${pan}::${card_holder}::${expired_month}::${expired_year}::${cvv}::${return_url}::${ip_address}::${sign_secret_key}"
    sign_hash=$(echo -n "$sign_hash_string" | sha256sum | awk '{print $1}')
    
    # Генерируем хеш для параметра hash
    hash_string="${eshop_id}::${invoice_id}::${pan}::${card_holder}::${expired_month}::${expired_year}::${cvv}::${return_url}::${ip_address}::${eshop_secret_key}"
    hash=$(echo -n "$hash_string" | md5sum | awk '{print $1}')
    
    response=$(curl -X POST \
      -H "Authorization: Bearer ${bearer_token}" \
      -H "Sign: ${sign_hash}" \
      -H "Content-Type: application/x-www-form-urlencoded" \
      --data-urlencode "eshopId=${eshop_id}" \
      --data-urlencode "invoiceId=${invoice_id}" \
      --data-urlencode "ipAddress=${ip_address}" \
      --data-urlencode "returnUrl=${return_url}" \
      --data-urlencode "cardHolder=${card_holder}" \
      --data-urlencode "pan=${pan}" \
      --data-urlencode "cvv=${cvv}" \
      --data-urlencode "expiredYear=${expired_year}" \
      --data-urlencode "expiredMonth=${expired_month}" \
      --data-urlencode "hash=${hash}" \
      https://api.intellectmoney.ru/merchant/bankcardpayment)
    
    echo "Response: $response"





    Tip
    iconfalse
    titleПример ответа

    Для получения ответа в формате JSON в запросе должен быть заголовок Accept: application/json

    Code Block
    languagetext
    titleТело
    {
        "OperationState": {
            "Code": 0,
            "Desc": "Успешно обработана"
        },
        "EshopId": 465932,
        "Result": {
            "State": {
                "Code": 0,
                "Desc": "Успешно обработан"
            }
        }
    }