CUP QR

Обзор

Введение

CUP QR — метод, позволяющий проводить платежи в китайских юанях с использованием банковских счетов в Китае. Для этого метода в платёжной платформе ecommpay поддерживаются оплаты.

В этой статье представлена информация о работе с методом CUP QR: обзорный раздел с общими сведениями и последующие разделы с информацией о действиях, необходимых со стороны мерчанта для решения разных задач.

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

Тип платёжного метода платежи с помощью QR-кодов
Платёжные инструменты банковские счета
Регионы использования CN
Валюты платежей CNY
Конвертация валют
Разовые оплаты +
Повторяемые оплаты
Полные возвраты
Частичные возвраты
Выплаты
Опротестования
Особенности
Организация и стоимость подключения по согласованию с курирующим менеджером ecommpay

Схема работы

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



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

Для проведения платежей и выполнения операций с использованием метода CUP QR могут применяться различные интерфейсы платёжной платформы. Так, оплаты могут проводиться через Payment Page, Gate и Dashboard (с применением платёжных ссылок).

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

Проведение оплат с использованием метода CUP QR осуществляется с отображением QR-кода пользователю.

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

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

Для проведения оплаты через Payment Page с использованием метода CUP QR со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате. Полная схема проведения оплаты выглядит следующим образом.



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

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

Информация о форматах запросов и оповещений, используемых для проведения оплат методом CUP QR через Payment Page, приведена далее в этом разделе; общая информация о работе с Payment Page API — в отдельной статье Организация взаимодействия.

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

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

  1. Должен использоваться базовый минимум параметров, обязательный для любого платежа:
    • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • payment_currency — код валюты платежа в формате ISO-4217 alpha-3;
    • payment_amount — сумма платежа в дробных единицах валюты;
    • customer_id — идентификатор пользователя в рамках проекта.
  2. Должен использоваться базовый минимум параметров: project_id, payment_id, payment_currency, payment_amount, customer_id.
  3. Дополнительно рекомендуется указывать следующие параметры:
    • customer_first_name — имя пользователя на китайском языке;
    • customer_last_name — фамилия пользователя на китайском языке;
    • customer_email — адрес электронной почты пользователя;
    • customer_phone — номер телефона пользователя;
    • customer_country — код страны пользователя в формате ISO 3166-1 alpha-2;
    • customer_city — город проживания пользователя;
    • customer_street — адрес проживания пользователя;
    • customer_zip — почтовый индекс пользователя;
    • payment_description — описание платежа.

    Если какие-либо из этих параметров отсутствуют в запросе, в платёжной форме могут отображаться поля для ввода пользователем недостающих значений (подробнее — в разделе Дополнение информации о платежах).

  4. Валютой платежа может быть только CNY.
  5. Для предварительного выбора метода CUP QR необходимо указывать код платёжного метода cup-qr в параметре force_payment_method.
  6. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page (подробнее).
  7. После указания всех целевых параметров необходимо составлять подпись (подробнее).

Таким образом, корректный запрос на открытие платёжной формы с применением метода CUP QR должен содержать идентификатор проекта, базовые сведения о платеже (идентификатор, сумму и код валюты), информацию о пользователе, описание платежа и подпись.

{
   "project_id": 120,
   "payment_id": "580",
   "payment_amount": 100000,
   "payment_currency": "CNY",
   "customer_id": "customer1",   
   "customer_id": "customer121",
   "customer_first_name": "伍",
   "customer_last_name": "伍",
   "customer_email": "paul@example.com",
   "customer_country": "CH,
   "customer_city": "倩",
   "customer_street": "倩",
   "customer_phone": "13632264147",
   "customer_zip": "123456",
   "payment_description: "payment_876543",
   "signature": "kUi2x9dKHAVNU0FYldOcZzUCwX6R\/ekpZhkIQg=="
}

Рис.: Пример достаточного набора данных для запроса на оплату

{
   "project_id": 120,
   "payment_id": "580",
   "payment_amount": 100000,
   "payment_currency": "CNY",
   "customer_id": "customer1",   
   "customer_id": "customer121",
   "customer_first_name": "伍",
   "customer_last_name": "伍",
   "customer_email": "paul@example.com",
   "customer_country": "CH,
   "customer_city": "倩",
   "customer_street": "倩",
   "customer_phone": "13632264147",
   "customer_zip": "123456",
   "payment_description: "payment_876543",
   "signature": "kUi2x9dKHAVNU0FYldOcZzUCwX6R\/ekpZhkIQg=="
}

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

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 843 была проведена оплата в размере 300,00 CNY.

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

"project_id": 843,
        "payment": {
            "id": "EP761d-6f6d",
            "type": "purchase",
            "status": "success",
            "date": "2019-12-11T12:20:17+0000",
            "method": "cup-qr",
            "sum": {
                "amount": 30000,
                "currency": "CNY"
            },
            "description": "123"
        },
        "account": {
            "number": "qwerty@qwe.fff"
        },
        "customer": {
            "phone": "2233"
        },
        "operation": {
            "id": 2000000029,
            "type": "sale",
            "status": "success",
            "date": "2019-12-11T12:20:17+0000",
            "created_date": "2019-12-11T12:18:04+0000",
            "request_id": "9a593318e4842a725b60498b-00000003",
            "sum_initial": {
                "amount": 30000,
                "currency": "CNY"
            },
            "sum_converted": {
                "amount": 30000,
                "currency": "CNY"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 1838,
                "payment_id": "1001905226143910",
                "auth_code": "",
                "date": "2019-12-11T12:18:14+0000"
            }
        },
        "signature": "y/DQVScN32bQi2BHO4YU1gfuiki=="
    }

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

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

"project_id": 843,
        "payment": {
            "id": "EP761d-6f6d",
            "type": "purchase",
            "status": "decline",
            "date": "2019-12-11T12:20:17+0000",
            "method": "cup-qr",
            "sum": {
                "amount": 30000,
                "currency": "CNY"
            },
            "description": "123"
        },
        "account": {
            "number": "qwerty@qwe.fff"
        },
        "customer": {
            "phone": "2233"
        },
        "operation": {
            "id": 2000000029,
            "type": "sale",
            "status": "decline",
            "date": "2019-12-11T12:20:17+0000",
            "created_date": "2019-12-11T12:18:04+0000",
            "request_id": "9a593318e4842a725b60498b-00000003",
            "sum_initial": {
                "amount": 30000,
                "currency": "CNY"
            },
            "sum_converted": {
                "amount": 30000,
                "currency": "CNY"
            },
            "code": "20602",
            "message": "Time-out",
            "provider": {
                "id": 1838,
                "payment_id": "1001905226143910",
                "auth_code": "",
                "date": "2019-12-11T12:18:14+0000"
            }
        },
        "signature": "y/DQVScN32bQi2BHO4YU1gfuikig.=="
    }

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

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

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

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

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

  1. Отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay.
  2. Принять промежуточное оповещение от платёжной платформы и отобразить QR-код пользователю.
  3. Принять итоговое оповещение от платёжной платформы.

Полная схема проведения оплаты выглядит следующим образом.



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

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

Информация о форматах запросов и оповещений, используемых для проведения оплат методом CUP QR через Gate, приведена далее в этом разделе; общая информация о работе с Gate API — в отдельной статье Организация взаимодействия.

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

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

  1. Для инициирования каждой оплаты должен использоваться отдельный POST-запрос к конечной точке /v2/payment/cup/qr/sale.
  2. В каждом запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ecommpay при интеграции;,
      • payment_id — идентификатор платежа, уникальный в рамках проекта;,
      • signature — подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью к данным); (подробнее),
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты;,
      • currency — код валюты платежа в формате ISO-4217 alpha-3;,
      • description — описание или комментарий к платежу;,
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор пользователя, уникальный в рамках проекта;,
      • ip_address — IP-адрес пользователя, актуальный для инициируемого платежа;,
      • first_name — имя пользователя, только на китайском языке;,
      • last_name — фамилия пользователя, только на китайском языке;,
      • phone — номер телефона пользователя без знака "+";,
      • email — адрес электронной почты пользователя;,
      • zip — почтовый индекс пользователя;,
      • country — код страны пользователя в формате ISO 3166-1 alpha-2;,
      • city — город пользователя на китайском;,
      • street — адрес пользователя на китайском;,
    • return_url — объект, содержащий URL для возврата пользователя с сайта банка в проект мерчанта после совершения оплаты:
      • success — URL возврата в случае проведённого платежа.
  3. Валютой платежа может быть только CNY.
  4. Дополнительно могут использоваться любые другие параметры из числа указанных в спецификации.

Таким образом, корректный запрос на оплату с применением метода CUP QR должен содержать идентификатор проекта, базовые сведения о платеже (идентификатор, сумму и код валюты), информацию о пользователе, описание платежа или комментарий к нему, а также подпись.

{
  "general": {
    "project_id": 200,
    "payment_id": "ECT_TEST_1559134591371-pz-3",
    "signature": "pK1YN6fd7yajGSWAzsbYeJo5nvotVBtOijOzgFvAU5Cc8PB...=="
  },
  "customer": {
    "ip_address": "192.0.2.0",
    "first_name": "伍",
    "last_name": "倩文",
    "phone": "13632264147",
    "email": "2524243674@email.com",
    "street":"street",
    "city": "city",
    "zip": "123045607",
    "country": "CH",
    "id": "123"
  },
  "payment": {
    "amount": 1000,
    "currency": "CNY",    
    "description": "payment"
  },
  "return_url: {
    "success": "http://example.com"
  }
}

Рис.: Пример достаточного набора данных для запроса на оплату

{
  "general": {
    "project_id": 200,
    "payment_id": "ECT_TEST_1559134591371-pz-3",
    "signature": "pK1YN6fd7yajGSWAzsbYeJo5nvotVBtOijOzgFvAU5Cc8PB...=="
  },
  "customer": {
    "ip_address": "192.0.2.0",
    "first_name": "伍",
    "last_name": "倩文",
    "phone": "13632264147",
    "email": "2524243674@email.com",
    "street":"street",
    "city": "city",
    "zip": "123045607",
    "country": "CH",
    "id": "123"
  },
  "payment": {
    "amount": 1000,
    "currency": "CNY",    
    "description": "payment"
  },
  "return_url: {
    "success": "http://example.com"
  }
}

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

Для завершения оплаты необходимо отобразить пользователю QR-код. Информация для отображения QR-кода содержится в оповещении от платёжной платформы в объекте display_data. Поэтому прежде чем отобразить QR-код, надо принять и обработать такое оповещение.

Данное оповещение отправляется от платёжной платформы ecommpay на URL, указанный в настройках проекта мерчанта. Статус платежа в данном случае будет awaiting customer action до момента завершения оплаты со стороны пользователя.

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

 "display_data": [
            {
                "type": "qr_data",
                "title": "QR Code",
                "data": "https://cashier.xhepay.com/paygate/union/pay/MDAyMDUxNjk0OTMwNjYyMTQzMTgwOHwwNHw0ODgxMDAwMA=="
            },
            {
                "type": "add_info",
                "title": "QR Code Timeout",
                "data": "600"
            }
        ]

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

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 843 была проведена оплата в размере 300,00 CNY.

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

"project_id": 843,
        "payment": {
            "id": "EP761d-6f6d",
            "type": "purchase",
            "status": "success",
            "date": "2019-12-11T12:20:17+0000",
            "method": "cup-qr",
            "sum": {
                "amount": 30000,
                "currency": "CNY"
            },
            "description": "123"
        },
        "account": {
            "number": "qwerty@qwe.fff"
        },
        "customer": {
            "phone": "2233"
        },
        "operation": {
            "id": 2000000029,
            "type": "sale",
            "status": "success",
            "date": "2019-12-11T12:20:17+0000",
            "created_date": "2019-12-11T12:18:04+0000",
            "request_id": "9a593318e4842a725b60498b-00000003",
            "sum_initial": {
                "amount": 30000,
                "currency": "CNY"
            },
            "sum_converted": {
                "amount": 30000,
                "currency": "CNY"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 1838,
                "payment_id": "1001905226143910",
                "auth_code": "",
                "date": "2019-12-11T12:18:14+0000"
            }
        },
        "signature": "y/DQVScN32bQi2BHO4YU1gfuikigFEbA...=="
    }

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

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

"project_id": 843,
        "payment": {
            "id": "EP761d-6f6d",
            "type": "purchase",
            "status": "decline",
            "date": "2019-12-11T12:20:17+0000",
            "method": "cup-qr",
            "sum": {
                "amount": 30000,
                "currency": "CNY"
            },
            "description": "123"
        },
        "account": {
            "number": "qwerty@qwe.fff"
        },
        "customer": {
            "phone": "2233"
        },
        "operation": {
            "id": 2000000029,
            "type": "sale",
            "status": "decline",
            "date": "2019-12-11T12:20:17+0000",
            "created_date": "2019-12-11T12:18:04+0000",
            "request_id": "9a593318e4842a725b60498b-00000003",
            "sum_initial": {
                "amount": 30000,
                "currency": "CNY"
            },
            "sum_converted": {
                "amount": 30000,
                "currency": "CNY"
            },
            "code": "20602",
            "message": "Time-out",
            "provider": {
                "id": 1838,
                "payment_id": "1001905226143910",
                "auth_code": "",
                "date": "2019-12-11T12:18:14+0000"
            }
        },
        "signature": "y/DQVScN32bQi2BHO4YU1gfuikigFEbA...=="
    }

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

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

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

Для анализа информации о платежах и операциях, как в отдельности по методу CUP QR, так и в совокупности с другими методами, можно использовать:

  • инструментарий интерфейса Dashboard, с различными реестрами и аналитическими панелями;,
  • отчёты в формате CSV, выгружаемые (как разово, так и периодически) через раздел Отчёты интерфейса Dashboard;,
  • данные в формате JSON, получаемые по программным запросам через интерфейс Data API.

С вопросами по анализу информации можно обращаться к разделам документации (Dashboard и Использование Data API) и специалистам ecommpay.