.. meta:: :description: API Initiate Transfer в серверном потоке Mobile Device SBC: регистрация серверной заявки на P2P-перевод до продолжения работы мобильного приложения. .. _api_initiate_transfer: Описание: Initiate transfer ################# .. role:: ex .. role:: code Введение ^^^^^^^^^^^^ | Инициация перевода выполняется через запрос :code:`HTTPS POST` с использованием :ref:`URLs` и :ref:`parameters`. | Для инициирования перевода средств приложение Присоединяющейся стороны отправляет :ex:`{accessToken}` с суммой транзакции и другими параметрами устройства на сервер Присоединяющейся стороны; они используются для запуска сеанса с уникальными случайными :ex:`{nonce}` и зашифрованной :ex:`{signature}`. | In ответ Присоединяющаяся сторона’s server also provides information about invoice in Присоединяющаяся сторона’s system and endpoint in site.company_название. SBC | The Присоединяющаяся сторона's server may also respond with the транзакция's commission. .. _api_url_initiate_transfer: API URL ^^^^^^^^ .. note:: | Это пример URL на сервере Присоединяющейся Стороны. .. list-table:: :widths: 100 :header-rows: 1 :class: longtable * - Сервер Присоединяющейся Стороны * - :ex:`https://proxy.connectingpartyserver.com/transfer/initiate-transfer` .. _api_parameters_initiate_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:`transaction` - | - | ``Необходимость``: Обязательно | ``Тип``: **Object** * - :code:`transaction.amountCentis` - Сумма транзакции: 1,00 EUR = 100 центов. - | ``Необходимость``: Обязательно | ``Тип``: Integer * - :code:`transaction.currency` - Буквы верхнего регистра (alpha-код по ISO 4217). - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 3 * - :code:`session` - | - | ``Необходимость``: Обязательно | ``Тип``: **Object** * - :code:`session.accessToken` - Ключ токена доступа, полученный при необязательной аутентификации потребителя. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 32-128 * - :code:`consumer.device.imei` - Международный идентификатор мобильного оборудования устройства потребителя. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 14-16 * - :code:`location` - - | ``Необходимость``: Опционально | ``Тип``: **Object** * - :code:`location.lat` - Широта указывается в диапазоне от -90.0 до +90.0 включительно. - | ``Тип``: Double * - :code:`location.lng` - Долгота указывается в диапазоне от -180.0 до +180.0 включительно. - | ``Тип``: Double * - :code:`consumer.ipAddresses` - IP-адреса потребителя. - | ``Тип``: List * - :code:`consumer.ipAddresses[]` - IP-адрес потребителя. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 7-15 * - :code:`fromBin` - BIN карты-источника средств (первые 6 цифр номера карты) может использоваться для отображения предварительно рассчитанной комиссии. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 6 * - :code:`toBin` - BIN карты-получателя средств (первые 6 цифр номера карты) может использоваться для отображения предварительно рассчитанной комиссии. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 6 Параметры успешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. list-table:: :widths: 30, 45, 25 :header-rows: 1 :class: longtable * - Название параметра - Описание - Значение * - :code:`endpointId` - Идентификатор точки входа для транзакции Transfer. - | ``Необходимость``: Обязательно | ``Тип``: String * - :code:`invoiceId` - Идентификатор транзакции transfer. - | ``Необходимость``: Обязательно | ``Тип``: String * - :code:`session` - | - | ``Необходимость``: Обязательно | ``Тип``: **Object** * - :code:`session.nonce` - Уникальная случайная строка, сгенерированная сервером Присоединяющейся стороны. - | ``Необходимость``: Обязательно | ``Тип``: String * - :code:`session.signature` - Контрольная сумма, сгенерированная hmac-sha1 (см. :ref:`signature-computation`) из конкатенации accessToken, consumer.device.serialNumber, endpointId, session.nonce, invoiceId, transaction.amountCentis и transaction.currency. - | ``Необходимость``: Обязательно | ``Тип``: String * - :code:`rates` - - | ``Необходимость``: Опционально | ``Тип``: **Object** * - :code:`rates.min` - Possible минимальный commission сумма. - | ``Необходимость``: Опционально | ``Тип``: String * - :code:`rates.max` - Possible максимальный commission сумма. - | ``Необходимость``: Опционально | ``Тип``: String Параметры неуспешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^ .. 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-block:: json { "consumer": { "device": { "imei": "string", "serialNumber": "string" }, "ipAddresses": ["string"] }, "location": { "lat": "double", "lng": "double" }, "session": { "accessToken": "string" }, "transaction": { "amountCentis": "integer", "currency": "string" } } Пример успешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: json { "endpointId": "string", "invoiceId": "string", "rates": { "min": "string", "max": "string" }, "session": { "nonce": "string", "signature": "string" } } Пример неуспешного ответа ^^^^^^^^^^^^^^^^^^^^^ .. code-block:: json { "error": { "cause": "enum", "code": "string", "message": "string" } }