.. meta:: :description: Initiate Sale API в процессе Mobile Device Server Payneteasy: регистрирует запрос Sale на сервере до того, как мобильное приложение соберёт данные держателя карты. .. _api_initiate_sale: Описание: Initiate sale ############# .. role:: ex .. role:: code Введение ^^^^^^^^^^^^ | Инициирование продажи выполняется запросом :code:`HTTPS POST` с использованием :ref:`URL` и :ref:`параметров`. | Для инициирования продажи приложение Присоединяющейся стороны отправляет :ex:`{accessToken}` с суммой транзакции и другими параметрами устройства на сервер Присоединяющейся стороны; они используются для запуска сеанса с уникальными случайными :ex:`{nonce}` и зашифрованной :ex:`{signature}`. | In ответ Присоединяющаяся сторона’s server also provides information about invoice in Присоединяющаяся сторона’s system and endpoint in site.company_название. Payneteasy .. _api_url_initiate_sale: API URL ^^^^^^^^ .. note:: | Это пример URL на сервере Присоединяющейся Стороны. .. list-table:: :widths: 100 :header-rows: 1 :class: longtable * - Сервер Присоединяющейся Стороны * - :ex:`https://proxy.connectingpartyserver.com/sale/initiate-sale` .. _api_parameters_initiate_sale: Параметры запроса ^^^^^^^^^^^^^^^^^^ .. 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 Параметры успешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. list-table:: :widths: 30, 45, 25 :header-rows: 1 :class: longtable * - Название параметра - Описание - Значение * - :code:`endpointId` - Идентификатор точки входа для транзакции Sale. - | ``Необходимость``: Обязательно | ``Тип``: 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 Параметры неуспешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^ .. 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", "session": { "nonce": "string", "signature": "string" } } Пример неуспешного ответа ^^^^^^^^^^^^^^^^^^^^^ .. code-block:: json { "error": { "cause": "enum", "code": "string", "message": "string" } }