China UnionPay

Обзор

China UnionPay — метод интернет-банкинга для проведения оплат и возвратов с помощью банковских карт в Китае. Для работы с этим методом доступно проведение оплат через Payment Page и Gate, возвратов — через Gate.

Характеристика

Тип платёжного метода банковские платежи
Платёжные инструменты платёжные карты
Регионы использования AE, AG, AT, AU, AZ, BD, BE, BN, BY, CA, CN, DE, ES, FI, FR, GB, GE, HK, HU, ID, IE, IT, JP, KE, KG, KH, KR, KZ, LB, LI, LK, LT, LU, MG, MN, MO, MT, MU, MX, MY, NL, NP, NZ, PA, PF, PH, PT, RU, SC, SG, SI, SK, SR, TH, TJ, TZ, US, VN *
Валюты платежей AUD, CAD, CHF, CNY, EUR, GBP, HKD, JPY, NZD, SGD, USD, THB *
Конвертация валют
Оплаты +
Выплаты
Оплаты по сохранённым данным
Полные возвраты +
Частичные возвраты +
Опротестования
Особенности
Организация и стоимость подключения По согласованию с курирующим менеджером ecommpay
Прим.: * Подробную информацию необходимо уточнять у курирующего менеджера ecommpay.

Схема работы

В проведении отдельного платежа с использованием метода China UnionPay задействуются веб-сервис мерчанта, один из интерфейсов и платёжная платформа ecommpay, а также сервис China UnionPay, обеспечивающий работу с банками.



Основные операции

Интерфейсы Суммы
Payment Page CMS Plug-ins Gate Dashboard Минимум Максимум
Оплаты + +
Полные возвраты +
Частичные возвраты +

Сценарии использования

Проведение оплат с использованием метода China UnionPay выполняется с перенаправлением пользователей на сайты банков, поддерживающих работу с этим методом, проведение возвратов — с уведомлением пользователей средствами веб-сервиса.

Рис.: Схема проведения оплаты через Payment Page



Рис.: Схема проведения оплаты через Gate



Рис.: Схема проведения возврата через Gate



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

Оплаты через Payment Page

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

Для оплаты через Payment Page с использованием метода China UnionPay со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате оплаты. При этом метод China UnionPay можно сделать предварительно выбранным (подробнее — в разделе Предварительный выбор платёжных методов). Полная схема проведения оплаты представлена далее.



Рис.: Проведение оплаты через Payment Page

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

Информация о формате запросов и параметрах вызова Payment Page при работе с методом China UnionPay, а также о формате оповещений о результатах оплат приведена далее; общая информация о работе с API — в разделе Описание Payment Page API.

Формат запросов

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

  1. Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
    • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • payment_amount — сумма платежа в дробных единицах валюты;
    • payment_currency — валюта платежа в формате ISO-4217 alpha-3,
    • customer_id — идентификатор пользователя в рамках проекта.
  2. В зависимости от провайдера, обрабатывающего платёж, может потребоваться использовать параметр customer_last_name — фамилия пользователя в рамках проекта (для предотвращения ошибок при проведении платежей рекомендуется указывать не менее 3 и не более 100 символов). Если параметр отсутствует в запросе, на Payment Page пользователю отображается поле для ввода недостающих значений. Подробнее об уточнении параметров — в разделе Дополнение информации о платежах.
  3. Валютой платежа может быть одна из следующих валют AUD, CAD, CHF, CNY, EUR, GBP, HKD, JPY, NZD, SGD, USD, THB. Информацию о доступных валютах следует уточнять у курирующего менеджера ecommpay.
  4. Payment Page можно открывать на китайском языке. Для этого необходимо передавать код языка zh в параметре language_code (подробнее — в разделе Управление языком платёжной формы).
  5. Для предварительного выбора метода China UnionPay необходимо указывать в параметре force_payment_method код платёжного метода — cup-union.
  6. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page. Детальная информация обо всех параметрах приведена в разделе Параметры вызова платёжной формы.
  7. После определения всех параметров необходимо составить подпись. Подробнее — в разделе Работа с подписью к данным.

Таким образом, корректный запрос на открытие платёжной формы с применением метода China UnionPay должен содержать идентификатор, сумму и валюту платежа, идентификатор проекта и фамилию пользователя, а также подпись:

    { payment_id: 'X03936', 
      payment_amount: 1000, 
      payment_currency: 'USD', 
      project_id: 198,
      customer_last_name: 'Johnson',
      project_id: 198,  
      customer_id: 'customer121',
      signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y1Y4HASCQqtVUkDJrO...=="
    }

Формат оповещений

Для оповещений о результатах оплат с применением метода China UnionPay используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 198 от пользователя была успешно проведена оплата в размере 10,00 USD.

Рис.: Пример оповещения о проведенной оплате

"callbackBody": {
        "project_id": 198,
        "payment": {
            "id": "TEST_154402240162030",
            "type": "purchase",
            "status": "success",
            "date": "2018-12-06T13:33:33+0000",
            "method": "unionpay",
            "sum": {
                "amount": 100,
                "currency": "USD"
            },
            "description": "TEST_154402240162930"
        },
        "operation": {
            "id": 7458000002161,
            "type": "sale",
            "status": "success",
            "date": "2018-12-06T13:33:33+0000",
            "created_date": "2018-12-06T13:31:41+0000",
            "request_id": "986be38f02e8fe3fb8-c1990f3e7af3",
            "sum_initial": {
                "amount": 100,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 100,
                "currency": "USD"
            },
            "provider": {
                "id": 410,
                "payment_id": "74580000021610207055371314024366",
                "date": "2018-12-06T13:31:42+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "lci0uOA7aWgJ5nwyImqQjXAfdP+nEzyXwb/t9G1E1U8+5vDkdb...=="
    }

В следующем примере оплата была отклонена.

Рис.: Пример оповещения об отказе в проведении оплаты

"callbackBody": {
        "project_id": 198,
        "payment": {
            "id": "TEST_1548340290097231",
            "type": "purchase",
            "status": "decline",
            "date": "2019-01-26T14:36:35+0000",
            "method": "unionpay",
            "sum": {
                "amount": 2000000,
                "currency": "CNY"
            },
            "description": "TEST_1548340290097"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 4723000002794,
            "type": "sale",
            "status": "decline",
            "date": "2019-01-26T14:36:35+0000",
            "created_date": "2019-01-24T14:36:33+0000",
            "request_id": "72b28ec3f95271699dcade",
            "sum_initial": {
                "amount": 2000000,
                "currency": "CNY"
            },
            "sum_converted": {
                "amount": 294684,
                "currency": "USD"
            },
            "provider": {
                "id": 410,
                "payment_id": "47230000027940105280386327826886",
                "date": "2019-01-24T14:36:35+0000",
                "auth_code": ""
            },
            "code": "20000",
            "message": "General decline"
        },
        "signature": "vOpSHO5fMolQhUGItTilgFKcVkbdmBMaf2cD7FsIB...=="
    }

Дополнительные материалы

Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:

Оплаты через Gate

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

Для оплаты через Gate с использованием метода China UnionPay со стороны веб-сервиса необходимо:

  1. Отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay.
  2. Осуществить перенаправление пользователя в сервис China UnionPay.
  3. Принять оповещение о результате оплаты.

Полная схема проведения оплаты представлена далее.



Рис.: Проведение оплаты через Gate

  1. Пользователь на стороне веб-сервиса инициирует оплату методом China UnionPay.
  2. От веб-сервиса на заданный URL ecommpay передаётся запрос на проведение оплаты через Gate.
  3. Запрос на проведение оплаты поступает в платёжную платформу.
  4. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  5. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Формат ответа.
  6. В платёжной платформе выполняются дальнейшая обработка запроса и его отправка в сервис China UnionPay.
  7. На стороне China UnionPay выполняется обработка запроса на оплату.
  8. От сервиса China UnionPay к платёжной платформе передаются данные для перенаправления пользователя на сайт банка.
  9. От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя на сайт China UnionPay в объекте redirect_data.
  10. Пользователь перенаправляется на сайт China UnionPay.
  11. Пользователь выполняет необходимые действия для оплаты на сайте China UnionPay.
  12. На стороне сервиса China UnionPay выполняется обработка платежа.
  13. Пользователю отображается результат оплаты на сайте China UnionPay.
  14. Пользователь перенаправляется к веб-сервису.
  15. От сервиса China UnionPay к платёжной платформе направляется уведомление о результате оплаты.
  16. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
  17. От веб-сервиса пользователю направляется результат оплаты.

Информация о формате запросов и параметрах инициирования оплат через Gate при работе с методом China UnionPay, а также о форматах данных для перенаправления пользователей и о формате оповещений о результатах оплат приведена далее; общая информация о работе с API — в разделе Работа с API.

Формат запросов

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

  1. Должен использоваться запрос /v2/payment/cup/union/sale, отправляемый методом POST.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор, уникальный в рамках проекта,
      • ip_address — используемый IP-адрес,
      • last_name* — фамилия (для предотвращения ошибок при проведении платежей рекомендуется указывать не менее 3 и не более 100 символов). Если параметр не указан в запросе, то он дополнительно запрашивается в оповещении о необходимости дополнить данные (подробнее — в разделе Дополнение информации о платеже);
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • return_url* — объект, содержащий URL для перенаправления пользователя в веб-сервис:
      • success* — URL-ссылки для перенаправления пользователя после проведенной оплаты,
      • return* — URL для перенаправления пользователя любом шаге оплаты.
    Прим.: *Информацию обязательности этих параметров необходимо уточнять у курирующего менеджера ecommpay.
  3. Валютой платежа может быть одна из следующих валют AUD, CAD, CHF, CNY, EUR, GBP, HKD, JPY, NZD, SGD, USD, THB. Информацию о доступных валютах следует уточнять у курирующего менеджера ecommpay.
  4. Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

Таким образом, корректный запрос на оплату с применением метода China UnionPay должен содержать идентификаторы проекта и платежа, подпись, сумму и валюту платежа, IP-адрес, фамилию пользователя и URL для перенаправления:

Рис.: Пример запроса на оплату

{
  "general": {
    "project_id": 198,
    "payment_id": "TEST_15532590003171111",
    "signature": "dMNfpKk0MnZhXWKjAKWTckxgEoNbjNhOYQMh6lB4C9J7gksH...=="
  },
  "customer": {
    "ip_address": "112.65.92.27",
    "last_name": "Johnson"
    "id": "123"
  },
  "payment": {
    "amount": 1000,
    "currency": "USD"
  },
  "return_url": {
    "success": "https://example.com/success",
    "return": "https://example.com/return"
  }
}

Форматы данных для перенаправления пользователей

Для перенаправления пользователя от веб-сервиса на сайт сервиса China UnionPay необходимо принять оповещение от платёжной платформы, содержащее ссылку для перенаправления в параметре redirect_data.url и данные для отправки в теле запроса redirect_data.body, и использовать эти параметры при открытии HTML-страницы сайта методом, указанным в redirect_data.method.

Далее приведён фрагмент оповещения, содержащего данные для перенаправления.

redirect_data": {
                    "body": [],
                    "method": "GET",
                    "url": "https://secure.com/service/payment/000c33951a400c665596bc2b39"
                }

Формат оповещений

Для оповещений о результатах оплат с применением метода China UnionPay используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 198 от пользователя была успешно проведена оплата в размере 10,00 USD.

Рис.: Пример оповещения о проведенной оплате

"callbackBody": {
        "project_id": 198,
        "payment": {
            "id": "TEST_154402240162030",
            "type": "purchase",
            "status": "success",
            "date": "2018-12-06T13:33:33+0000",
            "method": "unionpay",
            "sum": {
                "amount": 100,
                "currency": "USD"
            },
            "description": "TEST_154402240162930"
        },
        "operation": {
            "id": 7458000002161,
            "type": "sale",
            "status": "success",
            "date": "2018-12-06T13:33:33+0000",
            "created_date": "2018-12-06T13:31:41+0000",
            "request_id": "986be38f02e8fe3fb8-c1990f3e7af3",
            "sum_initial": {
                "amount": 100,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 100,
                "currency": "USD"
            },
            "provider": {
                "id": 410,
                "payment_id": "74580000021610207055371314024366",
                "date": "2018-12-06T13:31:42+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "lci0uOA7aWgJ5nwyImqQjXAfdP+nEzyXwb/t9G1E1U8+5vDkdb...=="
    }

В следующем примере оплата была отклонена.

Рис.: Пример оповещения об отказе в проведении оплаты

"callbackBody": {
        "project_id": 198,
        "payment": {
            "id": "TEST_1548340290097231",
            "type": "purchase",
            "status": "decline",
            "date": "2019-01-26T14:36:35+0000",
            "method": "unionpay",
            "sum": {
                "amount": 2000000,
                "currency": "CNY"
            },
            "description": "TEST_1548340290097"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 4723000002794,
            "type": "sale",
            "status": "decline",
            "date": "2019-01-26T14:36:35+0000",
            "created_date": "2019-01-24T14:36:33+0000",
            "request_id": "72b28ec3f95271699dcade",
            "sum_initial": {
                "amount": 2000000,
                "currency": "CNY"
            },
            "sum_converted": {
                "amount": 294684,
                "currency": "USD"
            },
            "provider": {
                "id": 410,
                "payment_id": "47230000027940105280386327826886",
                "date": "2019-01-24T14:36:35+0000",
                "auth_code": ""
            },
            "code": "20000",
            "message": "General decline"
        },
        "signature": "vOpSHO5fMolQhUGItTilgFKcVkbdmBMaf2cD7FsIB...=="
    }

Дополнительные материалы

Для организации работы с оплатами через Gate также могут быть полезны следующие материалы:

Возвраты через Gate

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

China UnionPay поддерживает проведение полных и частичных возвратов. В некоторых случаях, по одному платежу вы можете выполнить только один частичный возврат, далее для совершения дополнительных возвратов по этому платежу вам необходимо обратиться в службу технической поддержки платежной системы.

Для проведения возврата через Gate с использованием метода China UnionPay со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате. Полная схема проведения возврата представлена далее.



Рис.: Проведение возврата через Gate

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

Информация о формате запросов и параметрах инициации возвратов методом China UnionPay через Gate, а также о формате оповещений о результатах возврата приведена далее, общая информация о работе с API см. в разделе Работа с API.

Формат запросов

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

  1. Должен использоваться запрос /v2/payment/unionpay/refund, отправляемый методом POST.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — основные сведения:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — сведения о пользователе:
      • ip_address — используемый IP-адрес;
    • payment — объект, содержащий сведения о возврате :
      • description — комментарий или описание возврата,
      • amount — сумма возврата в дробных единицах валюты (обязательный при частичном возврате),
      • currency — валюта возврата в формате ISO-4217 alpha-3 (обязательный при частичном возврате).
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на возврат с применением метода China UnionPay должен содержать идентификаторы проекта и платежа, подпись, описание возврата и IP-адрес пользователя:

Рис.: Пример запроса на возврат

{
"general": {
  "project_id": 198,
  "payment_id": "TEST_111"
 },
"payment": {
  "amount": 500,
  "currency": "USD",
  "description": "test"
 }
}

Формат оповещений

Для оповещений о результатах возврата с применением метода China UnionPay используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 198 для пользователя был успешно проведён возврат в размере 10,00 USD.

Рис.: Пример оповещения о проведенном возврате

"callbackBody": {
        "project_id": 198,
        "payment": {
            "id": "TEST_154402240162030",
            "type": "purchase",
            "status": "refunded",
            "date": "2018-12-06T14:24:08+0000",
            "method": "unionpay",
            "sum": {
                "amount": 1000,
                "currency": "USD"
            },
            "description": "TEST_154402240162930"
        },
        "operation": {
            "id": 7458000002162,
            "type": "refund",
            "status": "success",
            "date": "2018-12-06T14:24:08+0000",
            "created_date": "2018-12-06T14:23:58+0000",
            "request_id": "758cf8a4a495acf7f27eb0c1b",
            "sum_initial": {
                "amount": 1000,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 1000,
                "currency": "USD"
            },
            "provider": {
                "id": 410,
                "payment_id": "",
                "date": "2018-12-06T22:24:04+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "pHyB8h89qctuJ3ksW9xsERYpVSi3SDWAAWnknJw4o9f...=="
    }

В следующем примере возврат был отклонён по бизнес-правилам.

Рис.: Пример оповещения об отказе в проведении возврата

  "callbackBody": {
        "project_id": 198,
        "payment": {
            "id": "TEST_1542789072282111",
            "type": "purchase",
            "status": "partially refunded",
            "date": "2018-11-21T12:33:38+0000",
            "method": "unionpay",
            "sum": {
                "amount": 50,
                "currency": "USD"
            },
            "description": "TEST_1542789072282"
        },
        "customer": {
            "id": "1"
        },
        "errors": [
            {
                "code": "2701",
                "message": "Rules Failed Code",
                "description": "fatal: RULES_FAILED_CODE"
            }
        ],
        "operation": {
            "id": 16115000001979,
            "type": "refund",
            "status": "decline",
            "date": "2018-11-21T12:49:38+0000",
            "created_date": "2018-11-21T12:49:38+0000",
            "request_id": "3abc68c33b2298127",
            "sum_initial": {
                "amount": 50,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 50,
                "currency": "USD"
            },
            "provider": {
                "id": 410,
                "payment_id": ""
            },
            "code": "2701",
            "message": "Rules Failed Code"
        },
        "signature": "hAS3NXs1LmLl0xYtaHqLrRCAANBq1Z+/g26NVka...=="
    }

Дополнительные материалы

Для организации работы с возвратами через Gate также могут быть полезны следующие материалы:

Анализ результатов проведения платежей

Как и при работе с другими платёжными методами, которые предоставляет ecommpay, при использовании метода China UnionPay доступны разные способы анализа информации о платежах и операциях с применением этого метода — как в отдельности, так и в совокупности с другими методами.

Всю необходимую информацию можно получать и анализировать средствами Dashboard, в том числе с помощью аналитических панелей на вкладке Analytics.

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

  • Dashboard позволяет выгружать данные в форматах CSV и XLS с помощью инструментов на вкладке Платежи. При этом можно выполнять разовые выгрузки информации на локальный компьютер и задействовать периодическую выгрузку и отправку информации на заданные адреса электронной почты.
  • Data API позволяет получать информацию в формате JSON и отправлять ее на заданный URL — для этого применяются запросы /operations/get.

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