# SDK React Native для Android и iOS {#ru_sdk_react_native} статья о порядке применения SDK React Native для интеграции платёжной формы в мобильные приложения на платформах Android и iOS **На уровень выше:**[Интеграция с использованием SDK](ru_sdk_overview.md) ## Общая информация {#ru_sdk_react_native_overview} ### Введение {#section_gtz_fqk_rbc .section} Mobile SDK React Native для Android и iOS\(далее по тексту SDK React Native\) — это набор средств разработки с открытым программным кодом, который может использоваться для подключения к платёжной платформе Ecommpay мобильных приложений, разработанных с использованием „фреймворка“ React Nativeдля работы на платформах Android и iOS. SDK React Nativeреализован как „плагин“ в терминологии этого „фреймворка“ и позволяет обеспечивать взаимодействие мобильного приложения с платёжной платформой Ecommpayдля отправки и приёма необходимой информации при проведении платежей, а такжеобеспечивает интерфейсное взаимодействие с пользователем. SDK React Native можно встраивать в мобильные приложения, разработанные с использованием „фреймворка“ React Native \(версии 0.75.3 и выше\) и работающие на платформе Android \(версии 5.0 и выше\) или iOS \(версии 15.6 и выше\). Библиотеки SDK React Native и примеры кода для работы с ним расположенына порталах GitHub и NPM. - [https://github.com/ITECOMMPAY/msdk-react-native](https://github.com/ITECOMMPAY/msdk-react-native) - [https://www.npmjs.com/package/msdk-react-native](https://www.npmjs.com/package/msdk-react-native) ### Возможности {#section_a5h_gqk_rbc .section} При работе с SDK React Native доступны следующие возможности: - Проведение платежей различных типов с прямым использованием платёжных карти с применением методов Google Pay и Apple Pay\(в зависимости от используемой платформы\), а также других платёжных методов, доступных в рамках проекта мерчанта. К поддерживаемым типам платежей относятся: - одностадийные разовые оплаты; - двухстадийные разовые оплаты\(с блокировкой средств через SDK и последующим списанием через Gate или Dashboard\); - повторяемые оплаты\(с регистрацией через SDK и последующим управлением списаниями через Gate или Dashboard\). **Прим.:** При проведении платежей с использованием карт и методов Google Pay и Apple Pay задействуется платёжный интерфейс, описанный в этой статье, а при проведении платежей с использованием других платёжных методов — платёжная форма Payment Page. - Проверка действительности платёжных карт\(с проведением условных платежей на нулевые суммы\). - Контроль состояния платежей. - Поддержка различных вспомогательных процедур и дополнительных возможностей для повышения проходимости платежей, включая: - дополнение информации о платежах; - повторные попытки проведения платежей; - сбор данных о пользователях. - Поддержка различных дополнительных возможностей для улучшения пользовательского опыта, включая: - сохранение платёжных данных пользователей; - управление языком платёжного интерфейса; - отправку пользователям уведомлений с информацией о товарных позициях по проведённым платежам. - Возможности индивидуального оформления платёжного интерфейса, включая его стилизацию за счёт настройки цветовой палитры, а также более глубокую адаптацию к специфике приложения за счёт работы с открытым программным кодом SDK. ### Схема работы {#section_bvm_gqk_rbc .section} В общем случае одностадийные оплаты с использованием SDK React Native проводятся в соответствии со следующей схемой. ![](images/sdk/reactnative/ru_sdk_reactnative_functional.svg) 1. Пользователь инициирует оплату в пользовательском интерфейсе мобильного приложенияс помощью кнопки оплаты или иным заданным способом. 2. В приложении формируется набор параметров для создания платёжной сессии, с помощью SDK React Native этот набор преобразуется в строку для подписывания, после чего строка передаётся к серверной части веб-сервисамерчанта. 3. В серверной части веб-сервисамерчанта при необходимости могут выполняться проверка и дополнение параметров и обязательно формируется подпись к итоговому набору, после чего подготовленные данные передаются назад к SDK React Native. 4. С помощью SDK React Native инициируется создание платёжной сессии в платёжной платформе. 5. На стороне платёжной платформы выполняются подготовка платёжного интерфейсас учётом параметров вызова и передача к пользовательскому устройству данных для отображения этого интерфейса. 6. В мобильном приложении пользователю отображается форма оплаты. 7. Пользователь выбирает платёжный метод\(если он не был задан при открытии платёжной сессии\),указывает необходимую информацию и подтверждает готовность провести оплату. 8. От SDK React Native к платёжной платформе отправляется запрос на проведение оплаты. 9. На стороне платёжной платформы выполняются регистрация платежа и все необходимые технические действия, в том числе передача требуемых данных в платёжную среду: к провайдерам и платёжным системам. 10. В платёжной среде выполняется обработка платежа, по итогам которой в платёжную платформу поступает информация о результате. 11. В платёжной платформе обрабатывается итоговая информация, после чего к серверной части веб-сервиса отправляется программное оповещение о результате оплаты. 12. От платёжной платформы к SDK React Native направляется информация о результате оплаты. 13. Информация о результате отображается в пользовательском интерфейсе. ### Интерфейс {#section_swg_3qk_rbc .section} При проведении платежейс использованием платёжных карт и методов Google Pay и Apple Pay пользователю отображается интерфейс, разработанный специалистами Ecommpay. Со стороны мерчанта можно настраивать базовый цвет для основных элементов этого интерфейса. ![](images/sdk/android/all_sdk_ui_core_design_color.svg "Варианты индивидуального оформления") ![](images/sdk/android/all_sdk_ui_core_design_card_details.svg "Страница указания платёжных данных") ![](images/sdk/android/all_sdk_ui_core_design_result.png "Страница уведомления о результате платежа") ## Подготовка к использованию {#ru_sdk_react_native_setup} ### Порядок интеграции {#section_c53_kqk_rbc .section} Для подключения веб-сервиса к платёжной платформе Ecommpay с использованием SDK React Native со стороны мерчанта необходимо: 1. Решить организационные вопросы, касающиеся взаимодействия с Ecommpay: 1. Если у компании нет идентификатора и ключа для взаимодействия с Ecommpay — отправить заявку на подключение. 2. Если у компании есть идентификатор и ключ для взаимодействия с Ecommpay — сообщить специалистам технической поддержки о намерении интеграции с использованием SDK React Native и согласовать порядок тестирования и запуска. 2. Выполнить подготовительные технические работы: 1. Подключить SDK React Native. 2. Обеспечить сбор данных, необходимых для вызова платёжного интерфейса.Минимальный набор данных, который необходимо собрать для вызова платёжной интерфейса, состоит из идентификаторов проекта, платежа и пользователя, а также суммы и валюты платежа. 3. Обеспечить подписывание данных на стороне серверной части мобильного приложения. 4. Обеспечить на стороне веб-сервиса приём и корректное реагирование на уведомления от SDK React Native, а также оповещения от платёжной платформы. 3. Согласовать со специалистами технической поддержки Ecommpay порядок и сроки интеграции, тестирования\(в том числе с использованием доступных платёжных методов\) и запуска решения в работу. 1. Для тестирования следует использовать идентификатор тестового проекта и данные [тестовых карт](ru_test_cards.md). 2. Для перехода в рабочий режим следует изменить значение идентификатора тестового проекта на рабочее значение, полученное от Ecommpay. При возникновении вопросов о работе с SDK React Native следует обращаться в службу технической поддержки Ecommpay\([support@ecommpay.com](mailto:support@ecommpay.com)\). ### Установка {#section_rcm_lqk_rbc .section} Чтобы установить SDK React Nativeс использованием инструментов этого „фреймворка“, необходимо выполнить следующее: 1. В командной строке операционной системы перейти в каталог с исходным кодом веб-сервиса и выполнить одну из команд. ``` npm install msdk-react-native // или yarn install msdk-react-native ``` 2. В исходный код веб-сервиса добавить команды импорта функциональных возможностей. ```language-javascript import {initializePayment, getParamsForSignature} from 'msdk-react-native'; ``` Также могут использоваться другие способы установки, в соответствии с документацией React Native \([подробнее](https://reactnative.dev/docs/integration-with-existing-apps)\). ### Обеспечение работы с подписью {#section_flm_mqk_rbc .section} Подписывание данных должно выполняться в серверной части веб-сервиса с использованием секретного ключа, полученного от Ecommpay. Для работы с подписью могут использоваться готовые компоненты, такие как SDK для веб-сервисов на разных языках программирования \([подробнее](ru_sdk_overview.md)\), либо собственные решения, реализованные на стороне мерчанта.Порядок работы с подписью представлен в статье [Работа с подписью к данным](ru_platform_signature.md). ## Тестирование {#ru_sdk_react_native_testing} При необходимости платёжный интерфейс можно открыть в тестовом режиме, чтобы получить информацию об ошибках, допущенных при указании параметров платежа, а при отсутствии ошибок — протестировать проведение оплат с определённым результатом. Для этого в запросе на открытие платёжного интерфейса в объекте `EcmpPaymentOptions` можно передать следующие значения для параметра `mockModeType`: - `EcmpMockModeType.success`— если необходим результат «платёж проведён»; - `EcmpMockModeType.decline`— если необходим результат «платёж отклонён». Также проведение платежей можно протестировать через тестовую среду платёжной платформы Ecommpay. В этом случае необходимо подключиться к тестовой среде Ecommpay\(для этого можно использовать форму на [заявку](https://ecommpay.com/sign-up/) и полученные после заполнения этой формы идентификатор и ключ тестового проекта\). Чтобы перейти в рабочий режим, необходимо передавать в параметре `mockModeType` значение `EcmpMockModeType.disabled` и использовать идентификатор и ключ рабочего проекта. **Внимание:** Для тестирования проведения платежей с помощью SDK React Native с использованием Apple Pay не следует применять эмуляторы устройств. Для такого тестирования требуется соответствующее физическое устройство — при использовании эмулятора невозможно получить корректный токен от сервиса Apple Pay и, как следствие, провести платёж. Ошибки, полученные при использовании эмулятора, ожидаемы и не отображают фактическую ситуацию при проведении реальных платежей. ## Использование {#ru_sdk_react_native_use} ### Вызов платёжного интерфейса {#ru_sdk_react_native_openingpf} SDK React Native поддерживает выполнение таких целевых действий как проведение одностадийных разовых оплат, блокировка средств пользователей в рамках проведения двухстадийных оплат, регистрация повторяемых оплат и проверка действительности платёжных карт. Для инициирования таких действий требуется определённый набор параметров: обязательный минимум параметров передаётся в объекте `EcmpPaymentInfo`, в то время как остальные параметры могут быть переданы в объекте `EcmpPaymentOptions`. Для вызова платёжного интерфейса необходимо выполнить следующие действия: 1. Создать объект `EcmpPaymentInfo` со следующими обязательными параметрами: - `projectId` \(integer\) — идентификатор проекта, полученный от Ecommpay; - `paymentId` \(string\) — идентификатор платежа, уникальный в рамках проекта; - `paymentCurrency` \(string\) — код валюты платежав формате ISO-4217 alpha-3; - `paymentAmount` \(integer\) — сумма платежав дробных единицах валюты; - `customerId` \(string\) — идентификатор пользователяв рамках проекта; - `signature` \(string\) — подпись запроса, составленная после указания всех целевых параметров. ```language-javascript let paymentInfo: EcmpPaymentInfo = { projectID: 12123123, paymentID: "paymentId11", paymentCurrency: "USD", paymentAmount: 22200, customerId: "customer34" }; ``` Дополнительно могут использоваться и другие параметры, представленные [в отдельной таблице](ru_sdk_react_native.md#section_ssf_vth_sbc). 2. Получить строку для подписывания указанных параметров. ```language-javascript let paramsForSignature = getParamsForSignature(paymentInfo); console.log(paramsForSignature); ``` 3. Передать полученную строку в серверную часть приложения. 4. Сформировать подпись на стороне серверной части приложения и передать её в клиентскую часть. 5. Добавить подпись в объект `EcmpPaymentInfo`. ```language-javascript paymentInfo.signature = "CALCULATED_SIGNATURE_FROM_YOUR_BACKEND"; ``` 6. Создать объект `EcmpPaymentOptions`, который должен содержать обязательный параметр `actionType` \(string\) и, в случае проведения оплат с прямым использованием платёжных карт, список `additionalFields` с по крайней мере одним из полей: `email` или `phone`. В параметре `actionType` необходимо указать целевое действие: тип операции `sale`, `auth` или `verify` или `tokenize`. Если это актуально, указать дополнительные сведения о платеже или перечень полей, которые необходимо отобразить пользователю для сбора таких сведений \(в списке `additionalFields`\), в том числе с предварительно заданными значениями. Например, для аутентификации 3‑D Secure рекомендуется указать сведения о платёжном адресе пользователя \(код страны, индекс, названия города и улицы\). Перечень сведений, которые можно указывать в объекте `EcmpPaymentOptions`, представлен [в отдельной таблице](ru_sdk_react_native.md#section_f3d_yth_sbc). **Прим.:** [По данным платёжной системы Visa](files_for_downloads/cc0a9603-8fcc-4ef3-9738-3ffa823d06bd.pdf) полноценное использование сведений о пользователе, в том числе о его платёжном адресе, может существенно \(вплоть до 6 %\) повышать проходимость платежей и кардинально \(вплоть до 65 %\) снижать число операций, признаваемых мошенническими после их выполнения. Следующий пример помимо обязательного для всех платежей параметра `actionType` содержит поле `email`, обязательное для оплат с прямым использованием платёжных карт, и ряд дополнительных параметров, передаваемых в списке `additionalFields` для сбора дополнительных сведений, в том числе для аутентификации 3‑D Secure. ```language-javascript let paymentOptions: EcmpPaymentOptions = { actionType: EcmpActionType.sale, paymentInfo: paymentInfo, isDarkTheme: true, //для использования рабочего режима необходимо передавать в параметре mockModeType значение disabled mockModeType: EcmpMockModeType.success, //при необходимости задать отображение информации о результате платежа в платёжном интерфейсе screenDisplayModes: [EcmpScreenDisplayMode.hideDeclineFinalPage], //при необходимости задать другие дополнительные параметры additionalFields: [ { type: 'email', value: 'mail@mail.com' }] }; ``` 7. Открыть платёжный интерфейс и получить информацию о результате. ```language-javascript initializePayment(paymentOptions); ``` Итоговый код для вызова платёжного интерфейса может выглядеть следующим образом. ```language-javascript let paymentInfo: EcmpPaymentInfo = { projectID: 12123123, paymentID: "paymentId11", paymentCurrency: "USD", paymentAmount: 22200, customerId: "customer34" }; //получение строки для подписывания указанных параметров let paramsForSignature = getParamsForSignature(paymentInfo); console.log(paramsForSignature); //формирование подписи и её добавление в объект paymentInfo paymentInfo.signature = "signature"; let paymentOptions: EcmpPaymentOptions = { actionType: EcmpActionType.sale, paymentInfo: paymentInfo, isDarkTheme: true, //открытие платёжной формы в тестовом режиме mockModeType: EcmpMockModeType.success, //запрет на отображение информации об отклонении платежа screenDisplayModes: [EcmpScreenDisplayMode.hideDeclineFinalPage], //указание параметра из числа необязательных additionalFields: [ { type: 'email', value: 'mail@mail.com' }] }; initializePayment(paymentOptions); ``` ### Проведение платежей {#ru_sdk_react_native_payments} При работе с SDK React Native можно проводить одностадийные и двухстадийные\(с блокировкой средств через SDK и последующим списанием\) оплаты. Для проведения одностадийной оплаты при вызове платёжного интерфейса следует передавать значение `sale` в параметре `actionType`, а для проведения двухстадийной оплаты: 1. Вызвать платёжный интерфейс, указав значение `auth` параметра `actionType`в объекте `EcmpPaymentOptions`: ```language-javascript actionType: EcmpActionType.auth ``` 2. Когда потребуется, подтвердить списание средств через Dashboard \([подробнее](ru_dbl_payments.md)\) или через Gate\(с помощью запроса к конечной точке [/v2/payment/card/capture](https://api-developers.ecommpay.com/api-specification/card-payments/post-v2-payment-card-capture)\). ### Проверка действительности платёжных карт {#ru_sdk_react_native_verify} Проверка действительности платёжного инструмента может использоваться, когда необходимо проверить действительность карты без списания средств\(например, перед выплатой на эту карту\) или сохранить данные карты для их дальнейшего использования. Для такой проверки при вызове платёжного интерфейса следует передавать значение `verify` параметра `actionType`в объекте `EcmpPaymentOptions`: ```language-javascript actionType: EcmpActionType.verify ``` ### Получение информации о платеже {#ru_sdk_react_native_status} При проведении платежей через платформу Ecommpay к веб-сервису мерчанта отправляются оповещения, например с информацией для перенаправления пользователей или с информацией о результатах выполнения операций. Структура этих оповещений и работа с ними описаны в статье [Работа с оповещениями](ru_platform_callbacks.md). ### Применение дополнительных возможностей {#ru_sdk_react_native_additional_capabilities} #### Дополнение информации о платеже {#section_uvv_srk_rbc .section} В общем случае для проведения платежа в запросе достаточно передавать набор параметров, обязательных для инициирования этого платежа. Но в некоторых случаях со стороны платёжной системы или провайдера могут запрашиваться дополнительные данные, необходимые для проведения конкретного платежа.Это может быть вызвано специфическими региональными требованиями, необходимостью дополнительной проверки на мошенничество или иными факторами. Итоговый набор запрашиваемых данных зависит от требований конкретного провайдера или платёжной системы и может варьироваться. Список данных, актуальных для конкретного платежа, отображается пользователю в платёжном интерфейсе.Пользователь указывает запрашиваемые данные, подтверждает проведение платежа и получает информацию о результате. Более подробная информация об этой возможности представлена [в отдельной статье](ru_pp_clarification.md). #### Сбор данных о пользователях {#section_lnr_5rk_rbc .section} В некоторых случаях вместе с обязательными данными актуально запрашивать у пользователей и дополнительные, например номера их телефонов и адреса электронной почты. Для подключения такой возможности со стороны мерчанта необходимо определить список запрашиваемых данных, а также обязательность их заполнения пользователями и сообщить эту информацию специалистам технической поддержки. Более подробная информация о сборе дополнительных данных представлена [в отдельной статье](ru_PP_Gathering_customer_data.md). #### Управление языком платёжного интерфейса {#section_r5h_vrk_rbc .section} По умолчанию при работе с SDK React Native в платёжном интерфейсе используется язык устройства пользователя, если он поддерживается для используемого проекта, или язык, определённый по умолчанию для остальных случаев\(в общем случае — английский\). Вместе с тем, если это актуально, можно задавать определённые языки для конкретных сеансов. Для этого в каждом таком случае при вызове платёжного интерфейса необходимо передавать соответствующий код языка в параметре `languageCode` объекта `EcmpPaymentInfo`. **Внимание:** При указании языка, не поддерживаемого для используемого проекта, платёжный интерфейс не открывается и пользователю отображается информация об ошибке. К числу поддерживаемых в платформе для интерфейса SDK и доступных для оперативного подключения в проектах относятся следующие языки. |Язык|Код| |----|---| |Английский|`en`| |Испанский|`es`| |Итальянский|`it`| |Латышский|`lv`| |Литовский|`lt`| |Немецкий|`de`| |Португальский|`pt`| |Русский|`ru`| |Украинский|`uk`| |Французский|`fr`| |Эстонский|`et`| #### Сохранение платёжных данных {#section_ytb_wrk_rbc .section} При работе с SDK react Native поддерживается сохранение платёжных данных для последующего проведения платежей без повторного указания пользователями реквизитов. Такая возможность подключается в рамках проекта; при этом со стороны мерчанта необходимо сообщить специалистам технической поддержки подходящий вариант сохранения: *всегда* или *по выбору пользователя*. В результате сохранения платёжных данных для каждого платёжного инструмента формируется идентификатор, ассоциированный с идентификатором конкретного пользователя \(`customerId`\). Для отображения пользователю сохранённых данных его платёжных инструментов в объекте `EcmpPaymentInfo` необходимо передавать параметр `hideSavedWallets` со значением `false`. Более подробная информация об этой возможности представлена [в отдельной статье](ru_PP_saved_data.md). ## Дополнительные параметры вызова {#ru_sdk_react_native_parameters} ### Параметры объекта EcmpPaymentInfo {#section_ssf_vth_sbc .section} Для работы с SDK React Native в объекте `EcmpPaymentInfo` можно использовать следующие дополнительные параметры. |Параметр|Описание| |:-------|:-------| |`paymentDescription` string |Описание платежа. Представляет собой строку длиной не более 255 символов. Пример: `Cosmoshop purchase` | |`receiptData` string |Данные уведомления с информацией о товарных позициях. Представляет собой JSON-объект, закодированный с использованием алгоритма Base 64. Пример: `eyAgCiAgICAgICJwb3NpdGlvbnMiOlsgIAogICAgICAgICB7ICAKICAgICAgI CAgICAgInF1YW50aXR5IjozLAogICAgICAgICAgICAiYW1vdW50IjoxMDAwMC wKICAgICAgICAgICAgInRheCI6MTgsCiAgICAg` | |`token` string |Токен платёжных данных. Представляет собой строку длиной не более 255 символов. Пример: `6bbd9255e484f00cc778246c5b7489aa4c498b8bb5231e85942437c` | |`hideSavedWallets` boolean |Параметр, позволяющий управлять отображением информации о сохранённых ранее платёжных инструментах. Возможные значения: - `true` — не отображать - `false` — отображать | |`languageCode` string |Код языка отображения платёжного интерфейса в формате ISO 639-1 alpha-2.Должен соответствовать одному из языков, поддерживаемых для используемого проекта. Пример: `IT` | |`regionCode` string |Код страны проживания пользователя в формате ISO 3166-1 alpha-2. Пример: `GB` | ### Параметры объекта EcmpPaymentOptions {#section_f3d_yth_sbc .section} В объекте `EcmpPaymentOptions` можно использовать следующие дополнительные параметры. |Параметр|Описание| | |--------|--------|--| |`googleMerchantId` string |Идентификатор мерчанта в сервисе Google Pay|1| |`googleMerchantName` string |Наименование мерчанта в сервисе Google Pay|2| |`googleIsTestEnvironment` boolean |Признак тестового платежа. Передаётся при проведении платежей с использованием метода Google Pay. Возможные значения: - `true` — тестовый платёж - `false` — платёж в рабочем режиме |3| |`applePayMerchantId` string |Идентификатор мерчанта в сервисе Apple Pay|4| |`applePayDescription` string |Сведения о мерчанте в сервисе Apple Pay|5| |`applePayCountryCode` string |Код страны проживания пользователя в формате ISO 3166-1 alpha-2. Передаётся при проведении платежей с использованием метода Apple Pay. Пример: `SE` |6| |`isDarkTheme` boolean |Признак использования тёмной темы платёжного интерфейса. Возможные значения: - `true` — использовать - `false` — не использовать |7| |`brandColor` string |Базовый цвет для основных элементов платёжного интерфейса в шестнадцатеричном формате HEX. Пример: `#800080` |8| |`screenDisplayModes` list |Указание на отсутствие необходимости отображать информацию о результате платежа в платёжном интерфейсе:- `hideSuccessFinalPage` — не отображать информацию о проведении платежа - `hideDeclineFinalPage` — не отображать информацию об отклонении платежа |10| |`additionalFields` list |Дополнительные поля с информацией о пользователе. Содержит список параметров и может включать их значения. Пример: ``` additionalFields: [ EcmpAdditionalField(type: "email", value: "mail@mail.com"), EcmpAdditionalField(type: "first_name", value: "firstName"), ], ``` |11| |`storedCardType` integer |Указатель типа повторяемой оплаты: - `3` — автооплата - `5` — регулярная оплата |12| |`recipientInfo` object |Объект, содержащий сведения о получателе платежа|13| |`pan` string |Номер карты. Пример: `5443011850290191` |13-113| |`cardHolder` string |Имя и фамилия \(в соответствии с указанными на карте\). Пример: `Sonya Kovalevsky` |13-213| |`walletId` string |Номер электронного кошелька. Пример: `WID301185029011891` |13-313| |`walletOwner` string |Имя и фамилия получателя. Пример: `Sonya Kovalevsky` |13-413| |`country` string |Код страны проживания в формате ISO 3166-1 alpha-2. Пример: `SE` |13-513| |`address` string |Адрес проживания. Пример: `Albanovaegen 28` |13-613| |`city` string |Город проживания. Пример: `Stockholm` |13-713| |`stateCode` string |Штат проживания. Пример: `MN` |13-813| |`recurrentData` object |Объект, содержащий сведения о регистрируемой повторяемой оплате|14| |`register` boolean |Указатель необходимости зарегистрировать повторяемую оплату. Возможные значения: - `true` — платёж с регистрацией повторяемой оплаты - `false` — платёж без регистрации повторяемой оплаты |14-114| |`type` string |Категория регистрируемой повторяемой оплаты. Возможные значения: - `C` — экспресс-оплата \(OneClick\) - `U` — автооплата - `R` — регулярная оплата |14-214| |`expiryDay` string |Номер календарного дня, в который должна быть завершена повторяемая оплата\(в виде числа от `1` до `31`, без ведущего нуля, по григорианскому календарю\)|14-314| |`expiryMonth` string |Порядковый номер месяца, в котором должна быть завершена повторяемая оплата\(в виде числа от `1` до `12`, без ведущего нуля, по григорианскому календарю\)|14-414| |`expiryYear` string |Порядковый номер года, в котором должна быть завершена повторяемая оплата\(в четырёхзначном формате `ГГГГ`, по григорианскому календарю\)|14-514| |`period` string |Указатель базового периода списаний \(для регулярной оплаты\). Возможные значения: - `D` — ежедневно - `W` — еженедельно - `M` — ежемесячно \(если установленный день отсутствует в следующем месяце, например 31, — списание происходит в последний день месяца\) - `Q` — ежеквартально - `Y` — ежегодно |14-614| |`interval` integer |Множитель для кратного увеличения периода списаний\(для регулярной оплаты\), актуальный при указании параметра `period` и указываемый в виде числа от `1` до `100`; например чтобы списания выполнялись раз в три недели, в параметре `period` надо задать значение `W`, а в параметре `interval` значение `3`|14-714| |`time` string |Время выполнения последующих списаний\(для регулярной оплаты\), актуальное при указании параметра `period` и указываемое в формате `чч:мм:сс`|14-814| |`startDate` string |Дата первого списания\(для регулярной оплаты\), актуальная при указании параметра `scheduled_payment_id` и указываемая в формате `ДД-ММ-ГГГГ`|14-914| |`scheduledPaymentID` string |Идентификатор, который необходимо присвоить повторяемой оплате \(для автоматического инициирования списаний\). Параметр следует передавать вместе с параметром `startDate` |14-1014| |`amount` integer |Сумма последующих списаний в дробных единицах валюты|14-1114| **Прим.:** Если какой-либо из параметров, определяющих дату завершения повторяемой оплаты, не указывается в запросе, для него по умолчанию применяются следующие значения: - для классической карточной оплаты — значение соответствующего параметра \(дня, месяца, года\) из срока действия указанной платёжной карты; - для других доступных методов — значение соответствующего параметра согласно следующим правилам: - для календарного дня — последний календарный день актуального месяца \(указанного в параметре `expiry_month` или соответствующего дате регистрации повторяемой оплаты\); - для месяца — месяц регистрации повторяемой оплаты; - для года — год, превышающий год регистрации повторяемой оплаты на 10 лет. Так, при указании только года для классической карточной оплаты применяются число и месяц из срока действия используемой карты и указанный год, а для альтернативного метода — последний календарный день того месяца, в который была зарегистрирована повторяемая оплата, и указанный год.