Встраивание кнопок для платежей с использованием методов Apple Pay и Google Pay

Общая информация

В некоторых случаях может быть актуальным использовать непосредственно в веб-сервисе брендированные кнопки, позволяющие оплачивать заказы широко известными платёжными методами, такими как Apple Pay и Google Pay. При работе с платёжной платформой ecommpay для этого можно применять специализированную редакцию платёжной формы Payment Page, встраиваемую в веб-сервис в виде соответствующих кнопок и позволяющую проводить „быстрые“ платежи — со сбором всех необходимых сведений, в том числе о доставке, на стороне сервисов платёжных методов.

При использовании этой редакции платёжной формы в интерфейсе веб-сервиса пользователю отображаются кнопки заданных методов, а при переходе по любой из этих кнопок выполняется перенаправление к соответствующему платёжному сервису, без использования интерфейса Payment Page. Вместе с тем, если для проведения платежа необходимо предоставить дополнительные сведения, пользователю может отображаться модальное окно с соответствующими страницами Payment Page. Чтобы избегать таких ситуаций, рекомендуется обеспечивать передачу необходимых сведений в запросах на открытие Payment Page, а также сбор таких сведений на стороне сервисов Apple Pay или Google Pay.

Эта редакция платёжной формы позволяет работать с методами Apple Pay и Google Pay и может сочетаться с основной редакцией Payment Page, в том числе для поддержки платежей с использованием токенов платёжных карт (подробнее), для перехода к другим методам через их предварительный выбор в веб-сервисе (подробнее) и для вызова платёжной формы с полным набором доступных методов. При этом размеры кнопок можно настраивать с помощью параметров вызова платёжной формы (подробнее далеe). Использование встроенного в интерфейс Dashboard конструктора оформления для этих кнопок не поддерживается, но может быть полезным для настройки оформления тех страниц платёжной формы, которые могут отображаться пользователям в случае необходимости предоставить дополнительные сведения.

Пользовательский сценарий

Со стороны пользователя проведение оплаты в этом случае может выглядеть следующим образом.

  1. Пользователь переходит в интерфейсе веб-сервиса на страницу, где ему отображаются кнопки заданных методов, и инициирует оплату с помощью одного из них.
  2. Пользователь перенаправляется к сервису выбранного метода.
  3. В сервисе выбранного метода пользователь выбирает адрес и способ доставки, если это актуально, и выполняет другие необходимые действия.
  4. Пользователю отображается информация о результате оплаты (с учётом того, как это настроено на стороне веб-сервиса).

Схема работы

При проведении оплаты с использованием встроенных кнопок взаимодействие между веб-сервисом и платёжной формой строится с применением специализированных библиотек ecommpay и осуществляется следующим образом.

Рис. 5. Проведение типовой оплаты с использованием встроенных кнопок. Описание шагов
  1. От веб-сервиса на заданный URL ecommpay передаётся запрос на проведение оплаты через Payment Page.
  2. Запрос на проведение оплаты поступает в платёжную платформу.
  3. В платёжной платформе выполняется приём запроса, с проверкой наличия обязательных параметров и корректной подписи.
  4. Осуществляется подготовка к открытию платёжной формы согласно параметрам проекта и вызова.
  5. Пользователю отображаются кнопки заданных методов.
  6. Пользователь щёлкает кнопку одного из доступных платёжных методов.
  7. На стороне Payment Page выполняется обработка запроса.
  8. От Payment Page к веб-сервису направляется сообщение о необходимости подтвердить оплату.
  9. От веб-сервиса к Payment Page направляется сообщение с подтверждением оплаты, после чего выполняются действия, актуальные для этого метода.
  10. От Payment Page к веб-сервису направляется сообщение с информацией о результате оплаты и адресом страницы для перенаправления пользователя.

Взаимодействие при указании сведений о доставке на стороне сервиса выбранного метода (Apple Pay или Google Pay) может осуществляться следующим образом.

Рис. 6. Указание сведений о доставке на стороне сервиса Google Pay. Описание шагов
  1. От веб-сервиса к Payment Page направляется сообщение с подтверждением оплаты.
  2. В платёжную платформу передаётся запрос на открытие интерфейса и формы оплаты Google Pay.
  3. Запрос на открытие интерфейса и формы оплаты Google Pay и получение информации о картах, доступных пользователю, передаётся в сервис Google Pay.
  4. В сервисе Google Pay выполняется обработка запроса и формируется платёжная форма со списком карт, доступных пользователю.
  5. Пользователю отображается интерфейс сервиса Google Pay со списком карт в маскированном виде и полями для указания сведений о доставке.
  6. Пользователь указывает адрес доставки.
  7. В сервисе Google Pay выполняется обработка запроса.
  8. От сервиса Google Pay к Payment Page направляется сообщение со сведениями об адресе доставки.
  9. От Payment Page к веб-сервису направляется сообщение со сведениями об адресе доставки.
  10. От веб-сервиса к Payment Page направляется сообщение с подтверждением доступности доставки по этому адресу.
  11. От Payment Page к сервису Google Pay направляется сообщение с подтверждением доступности доставки.
  12. В сервисе Google Pay выполняется обработка запроса.
  13. Пользователю отображается информация о доступных способах доставки.
  14. Пользователь выбирает способ доставки.
  15. В сервисе Google Pay выполняется обработка запроса.
  16. От сервиса Google Pay к Payment Page направляется сообщение со сведениями о выбранном пользователем способе доставки.
  17. От Payment Page к веб-сервису направляется сообщение со сведениями о выбранном пользователем способе доставки.
  18. От веб-сервиса к Payment Page направляется сообщение с подтверждением доступности доставки выбранным способом.
  19. От Payment Page к сервису Google Pay направляется сообщение с подтверждением доступности доставки.
  20. В сервисе Google Pay выполняется обработка запроса.
  21. Пользователю отображается информация об оплате с учётом выбранных им параметров доставки (адреса и способа).
  22. Пользователь выполняет другие необходимые действия, если требуется, и подтверждает оплату.
  23. В сервисе Google Pay выполняется обработка запроса.
  24. От сервиса Google Pay к Payment Page направляется сообщение со сведениями об оплате с учётом выбранных пользователем параметров доставки.
  25. От Payment Page к веб-сервису направляется сообщение со сведениями об оплате с учётом выбранных пользователем параметров доставки.
  26. От веб-сервиса к Payment Page направляется сообщение с подтверждением оплаты, после чего выполняются действия, актуальные для этого метода.
  27. От Payment Page к веб-сервису направляется сообщение с информацией о результате оплаты и адресом страницы для перенаправления пользователя.

Подключение и настройка

Чтобы начать работу со встроенными кнопками, следует:

  1. Подключить в клиентской части CSS- и JavaScript-библиотеки от ecommpay, расположенные по адресам https://paymentpage.ecommpay.com/shared/merchant.css и https://paymentpage.ecommpay.com/shared/merchant.js соответственно.
    <link rel="stylesheet" href="https://paymentpage.ecommpay.com/shared/merchant.css" />
    <script type="text/javascript" src="https://paymentpage.ecommpay.com/shared/merchant.js"></script>
  2. Добавить в клиентской части элемент, предназначенный для отображения в нём кнопок заданных методов.
    // Отображение двух кнопок в разных элементах iframe
    <div class = "container-one" >
        <div id= "widget-container-google-pay" ></div>
        <div id= "widget-container-apple-pay" ></div>
    </div>
    
    // Отображение двух кнопок в одном элементе iframe
    </div>
        <div class = "container-two" >
        <div id= "widget-container-one-click-buttons" ></div>
    </div>
  3. Обеспечить в серверной части сбор и подписывание параметров запросов на открытие Payment Page (в том числе с применением SDK для работы с подписью, если это актуально), а также отправку подписанных данных в клиентскую часть веб-сервиса.
  4. Обеспечить в клиентской части вызов платёжной формы с использованием JavaScript-библиотеки от ecommpay и метода EPayWidget.runEmbedded.
  5. Реализовать в клиентской части функции для обработки интерфейсных событий. Вместе с функциями, информация о которых представлена в этой статье, могут использоваться и другие (подробнее).
  6. Для работы с платёжным методом Apple Pay — предварительно зарегистрировать рабочие домены веб-сервиса в сервисе Apple Pay.

Использование

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

  1. На стороне веб-сервиса необходимо сформировать запрос на открытие платёжной формы. В запросе должен указываться JavaScript-объект configObj с параметрами вызова платёжной формы и с подписью к ним.

    При формировании таких запросов необходимо учитывать следующее:

    • К базовому минимуму параметров, обязательному для проведения платежа, в этом случае относятся:
      • target_element — идентификатор того элемента iframe, в котором необходимо открыть платёжную форму;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • payment_amount — сумма платежа в дробных единицах валюты;
      • payment_currency — буквенный код валюты платежа в формате ISO-4217 alpha-3;
      • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
      • merchant_domain — доменное имя веб-сервиса, в котором необходимо открыть платёжную форму;
      • force_payment_group для отображения кнопок обоих методов (со значением one_click_buttons) или force_payment_method для отображения кнопки только одного из методов (со значением apple_pay_core для метода Apple Pay или google_pay_host для метода Google Pay);
      • mode — указатель режима работы Payment Page со значением purchase;
      • signature — подпись запроса, составленная после указания всех целевых параметров.
    • Для инициирования дополнительных действий на стороне сервисов Apple Pay и Google Pay дополнительно можно указывать параметр payment_methods_options и включать в него следующее:

      • перечень запрашиваемых сведений о пользователе в виде массива billing_contact_fields для сбора определённых сведений о пользователе, если сбор этих сведений не настроен для всех платежей в рамках используемого проекта (подробнее);
      • сведения о доставке товара или услуги пользователю в составе объекта shipping для выбора пользователем способа доставки.

      Подробная информация о сведениях, которые можно указывать в параметре payment_methods_options, представлена далее.

    • Для отображения кнопок в разных элементах iframe для каждого из них необходимо сформировать отдельный запрос.
    Рис. 7. Пример данных из запроса на открытие платёжной формы
    {
      "target_element":"widget-container-one-click-buttons",
      "payment_id":"X03936",
      "payment_amount":131960,
      "payment_currency":"USD",
      "project_id":22,
      "merchant_domain":"cosmoshop.jupiter.example",
      "force_payment_group":"one_click_buttons",
      "mode":"purchase",
      "signature":"YWb6Z20ByxpQ30hfTIjaCCsVIwVynXV"
    }
    Рис. 8. Пример данных из параметра payment_methods_options
    {
      "google_pay_host":{
        "billing_contact_fields":[
          "email",
          "name",
          "phone",
          "billing_address",
          "postal_code"
        ],
        "shipping":{
          "shipping_fields":[
            "shipping_address",
            "name",
            "phone"
          ],
          "allowed_country_codes":[
            "GB",
            "IE"
          ],
          "shipping_methods":[
            {
              "label":"Speed of sound shipping",
              "detail":"Express shipping (1 hour)",
              "amount":199,
              "identifier":"cosmo-shipping-009"
            },
            {
              "label":"Warp drive shipping",
              "detail":"Instant shipping",
              "amount":2999,
              "identifier":"cosmo-shipping-012"
            }
          ]
        }
      },
      "apple_pay_core":{
        "billing_contact_fields":[
          "email",
          "name",
          "phone",
          "billing_address",
          "postal_code"
        ],
        "shipping":{
          "shipping_fields":[
            "shipping_address",
            "name",
            "phone"
          ],
          "shipping_methods":[
            {
              "label":"Speed of sound shipping",
              "detail":"Express shipping (1 hour)",
              "amount":199,
              "identifier":"cosmo-shipping-009"
            },
            {
              "label":"Warp drive shipping",
              "detail":"Instant shipping",
              "amount":2999,
              "identifier":"cosmo-shipping-012"
            }
          ]
        }
      }
    }
  2. Со стороны веб-сервиса необходимо вызвать платёжную форму с помощью метода EPayWidget.runEmbedded, с указанием JavaScript-объекта configObj и функции-обработчика onCheckSubmit, после чего пользователю отображается кнопка.

    Функция onCheckSubmit предназначена для регистрации и обработки информации о щёлчке кнопки.

    Рис. 9. Пример обращения с использованием метода runEmbedded
    const checkoutButtonsWidget = EPayWidget.runEmbedded({
        ...configObj,
        onCheckSubmit: async function (data, resolve, reject) {
            if (!await merchantPage.validateCheckoutPage()) {
                return reject() // Отклонение оплаты
            }
            if (!await merchantAPI.validateCartAmount(checkoutButtonsWidget.configObj.payment_amount, checkoutButtonsWidget.configObj.payment_currency)) {
                return reject() // Отклонение оплаты
            };
            return resolve(); // Подтверждение оплаты, с возможностью указать объект additional_parameters в качестве аргумента
        },
    }, 'POST');
  3. На стороне Payment Page регистрируется щелчок кнопки, после чего на стороне веб-сервиса следует проверить сведения об оплате (такие как сумма и валюта платежа, а также другие обязательные сведения) и вызвать одну из функций, resolve для подтверждения оплаты или reject для её отклонения. В случае отклонения проведения оплаты пользователю следует предоставлять информацию об ошибке со стороны веб-сервиса.

    Вместе с подтверждением платежа на этом этапе можно передать сведения о пользователе, если они не были переданы при вызове платёжной формы или их необходимо изменить, а также указать адреса для автоматического перенаправления пользователя после проведения оплаты. Для этого следует использовать объект additional_parameters.

    Рис. 10. Пример данных из объекта additional_parameters
    {
    // Общие сведения о пользователе
        customer_id:"customer_112",
        customer_first_name:"Arthur",
        customer_last_name:"McDonald",
        customer_phone:"447700900123",
        customer_email:"mcdonald@space.com"
     
    // Сведения об адресе проживания пользователя
        customer_country:"GB",
        customer_city:"Belfast",
        customer_address:"14A Cosmos Crescent, Flat 25",
        customer_zip:"BT99 0ZZ",
     
    // Сведения о расчётном адресе пользователя
        billing_country:"GB",
        billing_city:"Belfast",
        billing_address:"14A Cosmos Crescent, Flat 25",
        billing_postal:"BT99 0ZZ",
     
    // Сведения об адресе пользователя, используемом для проверки Address Verification Service
        avs_street_address:"14A Cosmos Crescent, Flat 25",
        avs_post_code:"BT99 0ZZ",
     
    // Сведения для возвращения пользователя к веб-сервису
        redirect_success_url:"https://cosmoshop.jupiter.example/pages/success",
        redirect_success_mode:"parent_page",
        redirect_fail_url:"https://cosmoshop.jupiter.example/pages/failed",
        redirect_fail_mode:"parent_page",
    };
  4. Если в запросе на открытие платёжной формы были указаны сведения о доставке товара или услуги пользователю (в составе объекта shipping), дополнительно необходимо следующее:
    1. После указания пользователем адреса доставки, регистрируемого с помощью функции onCheckShippingAddress библиотеки merchant.js, на стороне веб-сервиса следует проверить возможность доставки на указанный адрес.
      Рис. 11. Пример сведений об указанном пользователем адресе доставки
      {
        "region":"Belfast City",
        "city":"Belfast",
        "country_code":"GB",
        "postal_code":"BT99 0ZZ"
      }

      Далее в зависимости от результата проверки следует вызвать одну из функций:

      • onCheckShippingAddress.resolve для подтверждения возможности доставки, с обязательным указанием суммы платежа с учётом этой доставки и необязательным указанием обновлённых сведений о параметрах доставки (в массиве shipping_methods);
      • onCheckShippingAddress.reject для её отклонения, с необязательным указанием текстов сообщений, которые необходимо отобразить пользователю — как общего сообщения об ошибке, так и отдельных пояснений для любых указанных параметров доставки (рекомендуется указывать подробные сведения об ошибках для повышения удобства пользователей).
        Рис. 12. Пример сведений об ошибке
        errors = {
            "fields": {
                "country_code": "Supported shipping countries: GB, DE, IT",
                "region": "This region is not supported",
                "city": "Only Dublin is available",
                "postal_code": "The range of postal address 10060 - 100150",
            },
            "message": "Cannot ship to the provided address"
        }

      Этот шаг может выполняться несколько раз, а также может выполняться до или после следующего шага, в зависимости от порядка действий пользователя и особенностей используемого сервиса.

    2. После выбора пользователем способа доставки, регистрируемого с помощью функции onCheckShippingMethod библиотеки merchant.js, на стороне веб-сервиса следует проверить доступность этого способа.
      Рис. 13. Пример сведений о выбранном пользователем способе доставке
      {
        "identifier":"cosmo-shipping-012"
      }

      Далее в зависимости от результата проверки следует вызвать одну из функций:

      • onCheckShippingMethod.resolve для подтверждения возможности доставки, с обязательным указанием суммы платежа с учётом этой доставки;
      • onCheckShippingMethod.reject для её отклонения, с обязательным указанием суммы платежа без учёта доставки и необязательным указанием текста сообщения об ошибке, которое необходимо отобразить пользователю (рекомендуется указывать подробные сведения об ошибках для повышения удобства пользователей).
        Рис. 14. Пример сведений об ошибке
        errors = {
            "message": "This shipping option cannot be selected for this address",
        }

      Этот шаг может выполняться несколько раз, а также может выполняться до или после предыдущего шага, в зависимости от порядка действий пользователя и особенностей используемого сервиса.

    3. После подтверждения пользователем оплаты, регистрируемого с помощью функции onConfirmation библиотеки merchant.js, на стороне веб-сервиса следует проверить сведения об оплате с учётом указанных пользователем способа и адреса доставки, в том числе актуальную сумму платежа.
      Рис. 15. Пример сведений об оплате для проверки на стороне веб-сервиса
      {
        "customer":{
            "email":"mcdonald@space.com",
            "first_name":"Arthur",
            "last_name":"McDonald",
            "phone":"447700900123"
         },
        "billing_address":{
            "address":"14A Cosmos Crescent, Flat 25",
            "city":"Belfast",
            "region":"Belfast City",
            "country_code":"GB",
            "postal_code":"BT99 0ZZ"
        },
        "shipping_address":{
          "address":"Dock 7, Innovation Hangar",
          "city":"Belfast",
          "region":"Belfast City",
          "country_code":"GB",
          "postal_code":"BT99 1XY",
          "first_name":"Arthur",
          "last_name":"McDonald",
          "phone":"447700900321"
        }
      }

      Далее в зависимости от результата проверки следует вызвать одну из функций:

      • onConfirmation.resolve для подтверждения оплаты, с основными сведениями об оплате — идентификаторами проекта и платежа, а также суммой и валютой платежа — и с подписью к ним (в объекте payment_update).
        Рис. 16. Пример сведений для подтверждения оплаты
        {
          "payment_id":"X03936",
          "project_id":22,
          "payment_amount":134959,
          "payment_currency":"USD",
          "signature":"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u"
        }

        Вместе с подтверждением платежа на этом этапе можно передать сведения о пользователе, если они не были переданы при вызове платёжной формы или их необходимо изменить, в объекте additional_parameters.

        Рис. 17. Пример данных из объекта additional_parameters
        {"billing_country": "GB", "customer_email": "mcdonald@space.com", "avs_post_code": "BR1 1AA", "redirect_success_url":"https://cosmoshop.jupiter.example/order?id=123"}
        
      • onConfirmation.reject для её отклонения, с указанием суммы платежа и того текста сообщения об ошибке, который необходимо отобразить пользователю.
        Рис. 18. Пример сведений об ошибке
        errors = {
            "fields": {
                "country_code": "Supported shipping countries: GB, DE, IT",
                "region": "This region is not supported",
                "city": "Only Dublin is available",
                "postal_code": "The range of postal address 10060 - 100150",
            },
            "message": "Cannot ship to the provided address"
        }

      Информацию об итоговой сумме платежа с учётом выбранными пользователем параметрами доставки можно отслеживать через серверные оповещения.

Дополнительно на стороне веб-сервиса мерчанта можно управлять отображением страницы ожидания, а также получать информацию об ошибках и о результатах проведения платежей с помощью функций для обработки интерфейсных событий:
  • onShowLoader — для отображения страницы ожидания веб-сервиса;
  • onHideLoader — для скрытия страницы ожидания веб-сервиса (в случае необходимости отображать пользователю страницы платёжной формы Payment Page);
  • onPaymentSubmitResult — для получения информации об идентификаторе запроса на проведения платежа (в случае необходимости отслеживать статус платежа);
  • onError — для получения информации об ошибках на стороне платежной формы.

В целом, HTML-страница клиентской части веб-сервиса с возможностью проведения платежей с использованием кнопок может выглядеть следующим образом.

Рис. 19. Пример кода для клиентской части веб-сервиса с функциями для обработки различных событий
const expressButtons = EPayWidget.runEmbedded({
    payment_amount: 131960,
    payment_currency: "USD",
    project_id: "22",
    payment_id: "X03936",
    force_payment_group: "one_click_buttons",
    payment_methods_options: {"google_pay_host": {"billing_contact_fields": ["name", "email", "phone", "billing_address"]}},
    target_element: "widget-container-one-click-buttons",
    merchant_domain: cosmoshop.jupiter.example,
    signature: "abcYWb6Z30hfTIjaCCsVIDEF123",
 
    onShowLoader: merchantPage.showMerchantLoader,
    onHideLoader: merchantPage.hideMerchantLoader,
    onCheckSubmit: async function (data, resolve, reject) {
        if (await merchantAPI.canStartPayment(merchantPage.cart)) {
            return resolve();
        }
        return reject();
    },
    onCheckShippingAddress: async function (data, resolve, reject) {
        const {addressIsAvailable, newPaymentAmount, newShippingMethods, errors} = await merchantAPI.validateShippingAddress(data);
        if (addressIsAvailable) {
            return resolve({payment_amount: newPaymentAmount, shipping_methods: newShippingMethods});
        } else {
            return reject({payment_amount: newPaymentAmount, errors});
        }
    },
    onCheckShippingMethod: async function (data, resolve, reject) {
        const {addressIsAvailable, newPaymentAmount} = await merchantAPI.saveShippingMethod(orderId, data.identifier);
        if (addressIsAvailable) {
            return resolve({payment_amount: newPaymentAmount});
        } else {
            return reject({payment_amount: newPaymentAmount});
        }
    },
    onConfirmation: async function (data, resolve, reject) {
        const { orderId, paymentUpdate, additionalParameters, errors } = await merchantAPI.placeOrder(merchantPage.cart, merchantPage.customerInfo);
         
        if (orderId) {
            return resolve({payment_update: paymentUpdate, additional_parameters: additionalParameters});
        } else {
            return reject({errors})
        }
    },
    onPaymentSubmitResult: async function (data) {
        await merchantAPI.saveTransactionId(data.request_id)
    },
    onError: async function ({ messages }) {
        await merchantAPI.log("Payment error occurred " + messages)
        if (messages.includes("invalid payment_id")) {
            merchantPage.redirectToContactSupportPage();
        }
    },
});

Используемые параметры

Общие параметры

Для открытия платёжной формы в виде кнопок может использоваться набор параметров, представленных в следующей таблице.

Параметр Описание

avs_post_code
string, optional

Почтовый индекс пользователя, используемый для проверки Address Verification ServiceAVS.

Пример: BT99 0ZZ

avs_street_address
string, optional

Адрес пользователя, используемый для проверки Address Verification ServiceAVS.

Включает в себя номер дома и название улицы.

Пример: 14A Cosmos Crescent, Flat 25

billing_address
string, optional

Номер дома (с обозначением корпуса или строения, где это актуально) и название улицы в расчётном адресе пользователя.

Для сбора сведений о расчётном адресе пользователя на стороне сервисов Apple Pay и Google Pay следует использовать параметр payment_methods_options.

Пример: 14A Cosmos Crescent, Flat 25

billing_city
string, optional

Название города в расчётном адресе пользователя.

Для сбора сведений о расчётном адресе пользователя на стороне сервисов Apple Pay и Google Pay следует использовать параметр payment_methods_options.

Пример: Belfast

billing_country
string, optional

Код страны в расчётном адресе пользователя (в формате ISO 3166-1 alpha-2).

Для сбора сведений о расчётном адресе пользователя на стороне сервисов Apple Pay и Google Pay следует использовать параметр payment_methods_options.

Пример: GB

billing_postal
string, optional

Почтовый индекс в расчётном адресе пользователя.

Для сбора сведений о расчётном адресе пользователя на стороне сервисов Apple Pay и Google Pay следует использовать параметр payment_methods_options.

Пример: BT99 0ZZ

billing_region
string, optional

Название региона (штата, провинции или иной территориальной области) в расчётном адресе пользователя.

Для сбора сведений о расчётном адресе пользователя на стороне сервисов Apple Pay и Google Pay следует использовать параметр payment_methods_options.

Пример: Belfast City

billing_region_code
string, optional

Внутренний код региона (штата, провинции или иной территориальной области) в расчётном адресе пользователя.

Представляет собой вторую часть международного кода территории (в формате ISO 3166-2), без двухбуквенного кода страны и разделительного дефиса, и является применимым в тех случаях, когда передаётся в одном запросе с кодом страны в значении параметравместе с параметром billing_country.

Для сбора сведений о расчётном адресе пользователя на стороне сервисов Apple Pay и Google Pay следует использовать параметр payment_methods_options.

Пример: BFS

customer_address
string, optional

Название улицы и номер дома (с обозначением корпуса или строения, где это актуально) в адресе проживания пользователя, с использованием разделительной запятой.

Представляет собой строку длиной не более 255 символов.

Пример: 14A Cosmos Crescent, Flat 25

customer_birthplace
string, optional

Название места рождения пользователя (города или иного населённого пункта).

Представляет собой строку длиной не более 255 символов.

Пример: York

customer_city
string, optional

Название города (или иного населённого пункта) в адресе проживания пользователя.

Представляет собой строку длиной не более 255 символов.

Пример: Belfast

customer_country
string, optional

Код страны в адресе проживания пользователя (в формате ISO 3166-1 alpha-2).

Указывается в формате ISO 3166-1 alpha-2.

Пример: GB

customer_day_of_birth
string, optional

Дата рождения пользователя в формате ДД-ММ-ГГГГ.

Представляет собой строку в формате ДД-ММ-ГГГГ.

Пример: 12-03-1986

customer_email
string, optional

Адрес электронной почты пользователя.

Представляет собой строку длиной не более 255 символов, состоящую из локального адреса и доменного имени, разделённых символом «@».

Для сбора сведений об электронной почте пользователя на стороне сервисов Apple Pay и Google Pay следует использовать параметр payment_methods_options.

Пример: mcdonald@space.com

customer_first_name
string, optional

Имя пользователя.

Представляет собой строку длиной не более 255 символов.

Для сбора сведений об имени пользователя на стороне сервисов Apple Pay и Google Pay следует использовать параметр payment_methods_options.

Пример: Arthur

customer_id
string, optional

Идентификатор пользователя в рамках проекта (указанного в значении параметра project_id).

Должен быть однозначно сопоставим с учётной записью пользователя в веб-сервисе, в том числе для корректной работы с рисками и борьбы с мошенническими операциями.

Пример: customer_112

customer_last_name
string, optional

Фамилия пользователя.

Представляет собой строку длиной не более 255 символов.

Для сбора сведений о фамилии пользователя на стороне сервисов Apple Pay и Google Pay следует использовать параметр payment_methods_options.

Пример: McDonald

customer_middle_name
string, optional

Отчество (или второе или среднее имя) пользователя.

Представляет собой строку длиной не более 255 символов.

Пример: Rhys

customer_phone
string, optional

Номер телефона пользователя.

В общем случае должен быть полным, с кодом страны, хотя в отдельных случаях допустимо указание и без кода страны. Должен содержать не менее 4 и не более 24 цифр.

В общем случае должен включать код страны и содержать не менее 4 и не более 24 цифр.

Для сбора сведений о телефоне пользователя на стороне сервисов Apple Pay и Google Pay следует использовать параметр payment_methods_options.

Пример: 447700900123

customer_state
string, optional

Название региона (штата, провинции или иной территориальной области) в адресе проживания пользователя.

Представляет собой строку длиной не более 255 символов.

Пример: Belfast City

customer_street
string, optional

Название улицы в адресе проживания пользователя.

Представляет собой строку длиной не более 255 символов.

Пример: Cosmos Crescent

customer_zip
string, optional

Почтовый индекс в адресе проживания пользователя.

Представляет собой строку длиной не более 10 символов.

Пример: BT99 0ZZ

force_payment_method
string, required*

В рамках проведения платежей с использованием встроенных кнопок может принимать одно из следующих значений:

  • apple_pay_core — для отображения кнопки метода Apple Pay,
  • google_pay_host — для отображения кнопки метода Google Pay.

При каждом вызове платёжной формы должен указываться один из параметров, force_payment_method или force_payment_group, но не оба этих параметра.

Пример: google_pay_host

force_payment_group
string, required*

В рамках проведения платежей с использованием кнопок может принимать значение one_click_buttons. В этом случае отображаются кнопки обоих методов, Apple Pay и Google Pay.

При каждом вызове платёжной формы должен указываться один из параметров, force_payment_method или force_payment_group, но не оба этих параметра.

Пример: one_click_buttons

merchant_domain
string, required

Доменное имя веб-сервиса, в котором необходимо открыть платёжную форму.

Пример: cosmoshop.jupiter.example

mode
string, required

Указатель режима работы Payment Page.

В рамках проведения платежей с использованием кнопок должен принимать значение purchase.

Пример: purchase

payment_amount
integer, required

Сумма платежа в дробных единицах валюты.

Приводится в дробных единицах валюты без десятичного разделителя.

Пример: 131960 (для суммы 1319,60 при использовании валюты с двумя дробными разрядами)

payment_currency
string, required

Трёхбуквенный код валюты платежа.

Указывается в формате ISO-4217 alpha-3, согласно справочнику.

Код валюты платежа (в формате ISO-4217 alpha-3, согласно справочнику).

Пример: USD

payment_id
string, required

Идентификатор платежа в рамках проекта, длиной не более 255 символов с обеспечением регистронезависимости.

Должен задаваться на стороне веб-сервиса и представлять собой строку длиной не более 255 символов с обеспечением регистронезависимости и уникальности в рамках используемого проекта.

Пример: X03936

payment_methods_options
string, optional

Дополнительные сведения, актуальные при работе с отдельными платёжными методами и сторонними сервисами. Могут содержать параметры, описанные далее

project_id
integer, required

Идентификатор проекта взаимодействия веб-сервиса с платёжной платформой, полученный от ecommpay при интеграции (подробнее).

Пример: 22

redirect_fail_url
string, optional

Адрес для автоматического итогового возвращения пользователя к веб-сервису при отклонении оплаты.

Пример: https://cosmoshop.jupiter.example/pages/failed

redirect_success_url
string, optional

Адрес для автоматического итогового возвращения пользователя к веб-сервису при проведении оплаты.

Пример: https://cosmoshop.jupiter.example/pages/success

signature
string, required

Цифровая подпись к параметрам запроса.

Должна составляться после указания всех целевых параметров в соответствии с заданным алгоритмом (подробнее).

Подпись к параметрам запроса (подробнее).

target_element
string, required

Идентификатор элемента iframe (в рамках HTML-страницы веб-сервиса), в котором необходимо открыть платёжную форму.

Идентификатор элемента iframe для открытия платёжной формы.

Пример: widget-container-one-click-buttons

Специальные параметры для работы с методами Apple Pay и Google Pay

При работе со встроенными кнопками в параметре payment_methods_options допустимо указывать дополнительные сведения, актуальные для работы с тем или иным методом, представленные в следующей таблице.

Параметр Описание

google_pay_host
object, optional

Дополнительные сведения, актуальные при работе с платёжным методом Google Pay 29-2

shipping
object, optional

Сведения о доставке товара или услуги пользователю 29-2-129-2

shipping_fields
array, optional

Сведения об адресе доставки, которые необходимо собрать на стороне сервиса Google Pay.

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

  • phone — номер телефона получателя доставки,
  • name — имя и фамилия получателя доставки,
  • shipping_address — адрес доставки.

Пример: "shipping_fields":["shipping_address"]

29-2-1-129-2-1

allowed_country_codes
array, optional

Сведения о странах, для которых доступна доставка. Если эти сведения не указаны, доступными считаются все страны.

Представляют собой массив с перечнем кодов стран в формате ISO 3166-1 alpha-2.

Пример: "allowed_country_codes":["GB","IE"]

29-2-1-229-2-1

shipping_methods
array, optional

Сведения о доступных способах доставки. Способ доставки, указанный первым, отображается в сервисе Google Pay выбранным по умолчанию 29-2-1-329-2-1

label
string, required*

Название способа доставки, которое следует отображать пользователю.

Должно указываться при передаче массива shipping_methods.

Пример: Warp drive shipping

29-2-1-3-129-2-1-3

detail
string, required*

Описание способа доставки, которое следует отображать пользователю.

Должно указываться при передаче массива shipping_methods.

Пример: Instant shipping

29-2-1-3-229-2-1-3

amount
integer, required*

Стоимость доставки в дробных единицах валюты платежа.

Приводится в дробных единицах валюты платежа, указанной в параметре payment_currency, без десятичного разделителя.

Должна указываться при передаче массива shipping_methods.

Пример: 2999 (для суммы 29,99 при использовании валюты с двумя дробными разрядами)

29-2-1-3-329-2-1-3

identifier
string, required*

Служебный идентификатор способа доставки, заданный на стороне веб-сервиса.

Должен указываться при передаче массива shipping_methods.

Пример: cosmo-shipping-012

29-2-1-3-429-2-1-3

billing_contact_fields
array, optional

Сведения о расчётном адресе пользователя, которые необходимо собрать на стороне сервиса Google Pay.

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

  • email — адрес электронной почты пользователя,
  • name — имя и фамилия пользователя,
  • phone — номер телефона пользователя,
  • postal_code — почтовый индекс в адресе пользователя,
  • billing_address — расчётный адрес пользователя.

Пример: "billing_contact_fields":["email","phone"]

29-2-229-2

button_height
integer, optional

Высота кнопки в пикселях.

Пример: 40

29-2-329-2

apple_pay_core
object, optional

Дополнительные сведения, актуальные при работе с платёжным методом Apple Pay 29-1

shipping
object, optional

Сведения о доставке товара или услуги пользователю 29-1-129-1

shipping_fields
array, optional

Сведения об адресе доставки, которые необходимо собрать на стороне сервиса Apple Pay.

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

  • phone — номер телефона получателя доставки,
  • name — имя и фамилия получателя доставки,
  • shipping_address — адрес доставки.

Пример: "shipping_fields":["shipping_address"]

29-1-1-129-1-1

shipping_methods
array, optional

Сведения о доступных способах доставки. Способ доставки, указанный первым, отображается в сервисе Apple Pay выбранным по умолчанию 29-1-1-329-1-1

label
string, required*

Название способа доставки, которое следует отображать пользователю.

Должно указываться при передаче массива shipping_methods.

Пример: Warp drive shipping

29-1-1-3-129-1-1-3

detail
string, required*

Описание способа доставки, которое следует отображать пользователю.

Должно указываться при передаче массива shipping_methods.

Пример: Instant shipping

29-1-1-3-229-1-1-3

amount
integer, required*

Стоимость доставки в дробных единицах валюты платежа.

Приводится в дробных единицах валюты платежа, указанной в параметре payment_currency, без десятичного разделителя.

Должна указываться при передаче массива shipping_methods.

Пример: 2999 (для суммы 29,99 при использовании валюты с двумя дробными разрядами)

29-1-1-3-329-1-1-3

identifier
string, required*

Служебный идентификатор способа доставки, заданный на стороне веб-сервиса.

Должен указываться при передаче массива shipping_methods.

Пример: cosmo-shipping-012

29-1-1-3-429-1-1-3

billing_contact_fields
array, optional

Сведения о расчётном адресе пользователя, которые необходимо собрать на стороне сервиса Apple Pay.

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

  • email — адрес электронной почты пользователя,
  • name — имя и фамилия пользователя,
  • phone — номер телефона пользователя,
  • postal_code — почтовый индекс в адресе пользователя,
  • billing_address — расчётный адрес пользователя.

Пример: "billing_contact_fields":["email","phone"]

29-1-229-1

button_height
integer, optional

Высота кнопки в пикселях.

Пример: 40

29-1-329-1