.. meta:: :description: API Check Transfer в серверном потоке Mobile Device Payneteasy: серверный этап проверки перед обработкой инициированного мобильным приложением P2P-перевода. .. _api_check_transfer: Описание: Check transfer ############## .. role:: ex .. role:: code Введение ^^^^^^^^^^^^ | Проверка перевода инициируется через запрос :code:`HTTPS POST` с использованием :ref:`URLs` и :ref:`parameters`. | Описание: Check transfer is used for security purposes and allows site.company_название to compare the data sent by Присоединяющаяся сторона’s app with the data stored on Присоединяющаяся сторона’s server. Payneteasy | Настоятельно рекомендуется отвечать актуальной информацией, хранящейся на сервере Присоединяющейся Стороны. .. _api_url_check_transfer: API URL ^^^^^^^^ .. note:: | Это пример URL на сервере Присоединяющейся Стороны. .. list-table:: :widths: 100 :header-rows: 1 :class: longtable * - Сервер Присоединяющейся Стороны * - :ex:`https://proxy.connectingpartyserver.com/transfer/{invoiceId}/check` .. _api_parameters_check_transfer: Параметры запроса ^^^^^^^^^^^^^^^^^^ .. list-table:: :widths: 30, 45, 25 :header-rows: 1 :class: longtable * - Название параметра - Описание - Значение * - :code:`consumer` - | - | ``Необходимость``: Обязательно | ``Тип``: **Object** * - :code:`consumer.device` - | - | ``Необходимость``: Обязательно | ``Тип``: **Object** * - :code:`consumer.device.serialNumber` - Серийный номер устройства потребителя. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 1-50 * - :code:`session` - | - | ``Необходимость``: Обязательно | ``Тип``: **Object** * - :code:`session.accessToken` - Ключ access token потребителя, отправленный приложением Присоединяющейся Стороны. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 32-128 * - :code:`session.nonce` - Значение, отправленное приложением Присоединяющейся Стороны. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 32-128 * - :code:`session.signature` - Значение, отправленное приложением Присоединяющейся Стороны. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 32-128 * - :code:`session.token` - Token сессии транзакции transfer. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 16-36 * - :code:`sourceOfFunds` - - | ``Необходимость``: Опционально | ``Тип``: **Object** * - :code:`sourceOfFunds.reference` - - | ``Необходимость``: Опционально | ``Тип``: **Object** * - :code:`sourceOfFunds.reference.clientCardId` - Идентификатор ссылки на карту источника (на стороне клиента), если он отправлен в запросе Perform Transfer. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 1-128 * - :code:`destinationOfFunds` - - | ``Необходимость``: Опционально | ``Тип``: **Object** * - :code:`destinationOfFunds.reference` - - | ``Необходимость``: Опционально | ``Тип``: **Object** * - :code:`destinationOfFunds.reference.clientCardId` - Идентификатор ссылки на карту получателя (на стороне клиента), если он отправлен в запросе Perform Transfer. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 1-128 Параметры успешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. list-table:: :widths: 30, 45, 25 :header-rows: 1 :class: longtable * - Название параметра - Описание - Значение * - :code:`invoiceId` - Идентификатор транзакции transfer. - | ``Необходимость``: Обязательно | ``Тип``: String * - :code:`session` - | - | ``Необходимость``: Обязательно | ``Тип``: **Object** * - :code:`session.checkSignature` - Контрольная сумма, сформированная hmac-sha1 (см. :ref:`signature-computation`) из конкатенации consumer.device.serialNumber, session.nonce, destinationOfFunds.reference.serverCardId (если есть), endpointId, invoiceId, sourceOfFunds.reference.serverCardId (если есть). - | ``Необходимость``: Обязательно | ``Тип``: String * - :code:`session.nonce` - Unique random string generated by Присоединяющаяся сторона's server in Initiate transfer ответ. - | ``Необходимость``: Обязательно | ``Тип``: String * - :code:`session.token` - Token сессии транзакции transfer. - | ``Необходимость``: Обязательно | ``Тип``: String * - :code:`consumer.email` - Потребитель's email адрес. - | ``Необходимость``: Опционально | ``Тип``: String * - :code:`destinationOfFunds` - - | ``Необходимость``: Опционально | ``Тип``: **Object** * - :code:`destinationOfFunds.reference` - - | ``Необходимость``: Опционально | ``Тип``: **Object** * - :code:`destinationOfFunds.reference.serverCardId` - Идентификатор ссылки на карту получателя (на стороне сервера). - | ``Необходимость``: Опционально | ``Тип``: String * - :code:`sourceOfFunds` - - | ``Необходимость``: Опционально | ``Тип``: **Object** * - :code:`sourceOfFunds.reference` - - | ``Необходимость``: Опционально | ``Тип``: **Object** * - :code:`sourceOfFunds.reference.serverCardId` - Идентификатор ссылки на карту-источник (на стороне сервера). - | ``Необходимость``: Опционально | ``Тип``: String * - :code:`transaction.currency` - Буквы верхнего регистра (alpha-код по ISO 4217). - | ``Необходимость``: Опционально | ``Тип``: String * - :code:`transaction.randomSumCentis` - Случайная сумма (для проверки случайной суммы), 1.00 EUR = 100 центов. - | ``Необходимость``: Опционально | ``Тип``: Integer Параметры неуспешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^ .. list-table:: :widths: 30, 45, 25 :header-rows: 1 :class: longtable * - Название параметра - Описание - Значение * - :code:`error` - - | ``Тип``: **Object** * - :code:`error.cause` - Причина ошибки. Возможные значения: ``FILTERED``, ``INVALID_REQUEST``, ``SERVER_FAILED``, ``SERVER_UNAVAILABLE``. - | ``Тип``: Enum * - :code:`error.code` - Уникальный код ошибки. - | ``Тип``: String * - :code:`error.message` - Описание ошибки. - | ``Тип``: String * - :code:`invoiceId` - Идентификатор транзакции transfer. - | ``Тип``: String Пример запроса ^^^^^^^^^^^^^^^ .. code-block:: json { "consumer": { "device": { "serialNumber": "string" } }, "destinationOfFunds": { "reference": { "clientCardId": "string" } }, "session": { "accessToken": "string", "nonce": "string", "signature": "string", "token": "string" }, "sourceOfFunds": { "reference": { "clientCardId": "string" } } } Пример успешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: json { "consumer": { "email": "string" }, "destinationOfFunds": { "card": { "number": "string" }, "reference": { "serverCardId": "string" } }, "invoiceId": "string", "session": { "checkSignature": "string", "nonce": "string", "token": "string" }, "sourceOfFunds": { "card": { "expiry": { "month": "integer", "year": "integer" }, "holder":{ "firstName": "string", "lastName": "string" }, "number": "string" }, "reference": { "serverCardId": "string", } }, "transaction": { "currency": "string", "randomSumCentis": "integer" } } Пример неуспешного ответа ^^^^^^^^^^^^^^^^^^^^^ .. code-block:: json { "error": { "cause": "enum", "code": "string", "message": "string" }, "invoiceId": "string" }