Введение
ZoodPay готов предоставить свое платежное решение любой заинтересованной в этом онлайн-торговой площадке. ZoodPay API v0 - это последняя версия, которая демонстрирует наши новейшие функции.
Пожалуйста, свяжитесь с нашим менеджером по работе с клиентами, который поможет вам создать учетную запись ZoodPay. Соберите ключи Sandbox и Production, чтобы начать процесс интеграции.
Правила для продавцов
Среды API
Проверьте среды API, как указано ниже:
Production
https://api.zoodpay.com
Sandbox
https://sandbox-api.zoodpay.com
Модели обслуживания ZoodPay
ZoodPay предоставляет своим продавцам выбор из двух различных моделей обслуживания.
1. Рассрочка ZoodPay (ZPI)
Эта модель обслуживания предполагает утверждение платежа, запуск плана платежей потребителя (в рассрочку) и зачисление стоимости заказа на назначенный продавцом банковский счет.
2. Оплата после доставки (PAD)
Эта модель обслуживания предполагает утверждение платежа после доставки и запуск плана платежей потребителя. Он зачислит стоимость заказа на назначенный продавцом банковский счет основываясь на количестве доставленных товаров.
Процесс интеграции
Прямой платежный поток

- Продавец вызывает конечную точку получения конфигурации, чтобы получить лимиты заказов Zoodpay, возможно, как часть асинхронного запланированного фонового процесса.
- Продавец хранит эти минимальные и максимальные значения заказа на стороне сервера.
- Отдельно при оформлении заказа Продавец использует сохраненные минимальные и максимальные значения заказа Zoodpay, чтобы определить, должен ли Zoodpay быть представлен в качестве доступного метода оплаты.
- Продавец вызывает конечную точку создания транзакции, чтобы получить URL-адрес платежа ZoodPay и токен сеанса.
- Продавец использует токен в сочетании с URL-адресом платежа, чтобы направить покупателя через процесс оплаты ZoodPay.
-
Потребитель завершает процесс оплаты Zoodpay и возвращается на сайт Продавца.
- Если Потребитель нажимает «Подтвердить», он будет возвращен на веб-сайт Продавца с идентификатором транзакции и статусом «УСПЕШНО».
- Если Потребитель отменяет заказ, он будет возвращен на веб-сайт Продавца с идентификатором транзакции и статусом «ОТМЕНЕН».
- Если возникнет проблема с потребительской картой, он будут возвращен на веб-сайт продавца с идентификатором транзакции и статусом « НЕ УДАЛОСЬ ».
Архитектура API
REST
API ZoodPay организован на основе REST . API пытается использовать предсказуемые, ориентированные на ресурсы URL-адреса и коды состояния HTTP для индикации ошибок.
HTTPS
API ZoodPay требует, чтобы вся коммуникация была защищена с использованием TLS 1.2 или выше.
Заголовки запроса
Клиенты должны отправлять соответствующие заголовки со всеми запросами.
Заголовки HTTP
Имя поля | Требование | Описание |
---|---|---|
Authorization | обязательный | См. Аутентификацию |
Content Type | обязательный | Все запросы POST и PUT должны объявлять тип содержимого как application / json. |
Accept | рекомендуемые. | Все запросы должны принимать application / json или * / * |
Аутентификация
ZoodPay API использует базовую HTTP-аутентификацию, простую схему аутентификации, как описано ниже и определено RFC 7617.
Все конечные точки API требуют эту форму аутентификации, за исключением Healthcheck При неправильной проверке подлинности запрос API выдаст ответ «401 неавторизовано».
Для примера
Торговый ключ | Секретный ключ |
---|---|
merchant | secret |
**Примечание
В традиционных терминах HTTP «ID продавца» - это имя пользователя, а «Секретный ключ» - это пароль.
Как создать базовую аутентификацию?
Обычный текст | Base64 закодированные |
---|---|
merchant:secret | bWVyY2hhbnQ6c2VjcmV0 |
Заголовок авторизации может быть сформирован путем включения слова Basic, за которым следует один пробел, за которым следует пара учетных данных в кодировке base64.
Окончательный заголовок |
---|
Authorization: Basic bWVyY2hhbnQ6c2VjcmV0 |
Healtcheck
Эту конечную точку можно использовать для проверки доступности сервиса ZoodPay.
GET https://{environment}.zoodpay.com/healthcheck
curl --request GET \
--url https://sandbox-api.zoodpay.com/healthcheck \
--header 'content-type: application/json'
Логика генерации подписи / контрольной суммы
Зачем продавцу создавать подпись
Продавец будет использовать sha512 для создания подписи. Поля будут использоваться, как указано:
string = merchant_key|merchant_reference_no|amount|currency|market_code|salt
signature = sha512(string)
Примечание. Каждое поле будет разделено разделителем "|".
Продавец отправит подпись в полезной нагрузке запроса в ZoodPay. Zoodpay проверит подпись и если подпись недействительна, вернёт ошибку «Указанная контрольная сумма недействительна»
Зачем ZoodPay создавать подпись
ZoodPay будет использовать sha512 для создания подписи. Поля будут использоваться в обратном порядке, как указано:
string = market_code|currency|amount|merchant_reference_no|merchant_key|transaction_id|salt
signature = sha512(string)
Он отправит в ответ полезную нагрузку Продавцу. Продавец проверит подпись и соответственно обновит статус транзакции, если подпись недействительна. Также они могут использовать наш Get Transaction Status API для проверки статуса транзакции.
Примечание: Salt будет предоставлена во время создания учетной записи.
Zoodpay Logic для создания подписи для обратного вызова возврата
ZoodPay будет использовать sha512 для создания подписи. Поля будут использоваться, как указано:
string = merchant_refund_reference|refund_amount|status|merchant_key|refund_id|salt
signature = sha512(string)
Примечание: Каждое поле будет разделено разделителем «|».
Zoodpay отправит подпись в полезных данных запроса обратного вызова на возврат средств Продавцу. Продавец проверит подпись и соответствующим образом обновит статус возврата, если подпись недействительна.
Описание моделей данных
1. Метод Get Configuration
а. Запросить модель данных полезной нагрузки
Имя поля | Тип поля | Описание |
---|---|---|
market_code | строка требуется | Код страны ISO 3166-1. Длина должна составлять 2 или 3 символа. Возможные значения: «KZ», «UZ», «IQ», «JO», «KSA», «KW», «LB». |
б. Модель данных полезной нагрузки ответа
Имя поля | Тип поля | Описание |
---|---|---|
configuration | Configuration[] | Множество конфигураций сервисов ZoodPay |
c. Модель данных конфигурации
Имя поля | Тип поля | Описание |
---|---|---|
min_limit | десятичный | Минимальный лимит обслуживания для продавца. |
max_limit | десятичный | Максимальный лимит обслуживания для продавца. |
service_name | строка | Наименование услуги. |
description | строка | Описание услуги на предпочитаемом продавцом языке |
service_code | строка | Код услуги ZoodPay. Краткая форма метода оплаты «ZPI» и «PAD» |
instalments | целое число | Всего количество Рассрочки |
2. Создать метод транзакции
а. Запросить модель данных полезной нагрузки
Имя поля | Тип поля | Описание |
---|---|---|
customer | Customer требуется | Сведения о клиенте, разместившем заказ в магазине Продавца. |
order | Order требуется | Заказ Продавца. |
items | Items[] обязательно | Перечень предметов в заказе. |
billing | Contact | Платежный адрес покупателя. |
shipping | Contact требуется | Адрес доставки потребителя. |
shipping_service | ShippingService | Обслуживание клиента по доставке. |
б. Модель данных полезной нагрузки ответа
Имя поля | Тип поля | Описание |
---|---|---|
transaction_id | строка | Идентификатор транзакции ZoodPay, который будет использоваться в последующих вызовах API, связанных с транзакцией и возвратом средств. |
session_token | строка | Токен сеанса, который будет использоваться для завершения платежа. Обратите внимание, что это поле не используется и зарезервировано для использования в будущем. |
expiry_time | целое число | Метка времени UTC токена сеанса в формате ISO 8601. Он дает информацию, когда срок действия токена истекает. |
payment_url | строка | URL-адрес, который можно использовать для перенаправления клиента на экран ZoodPay прямо из серверной части продавца. |
signature | строка | Продавец должен проверить значения параметров, убедившись, что подпись / контрольная сумма поступает в ответ, до подтверждения транзакции в их конце. Это гарантирует, что значения параметров не изменятся. Строку подписи можно проверить с помощью алгоритма контрольной суммы ZoodPay . |
c. Модель данных клиента
Имя поля | Тип поля | Описание |
---|---|---|
first_name | строка требуется | Имя покупателя. Длина должна быть от 3 до 50 символов. |
last_name | строка | Фамилия покупателя. Длина не должна превышать 50 символов. |
customer_email | строка | Электронный адрес покупателя. Длина не должна превышать 128 символов. |
customer_phone | строка требуется | Телефон клиента. Длина не должна превышать 32 символа (международный формат). |
customer_pid | строка | Персональный идентификационный номер клиента. Длина должна составлять 12 знаков и 9 знаков для рынка KZ и UZ соответственно. |
d. Модель данных заказа
Имя поля | Тип поля | Описание |
---|---|---|
service_code | строка требуется | Код услуги ZoodPay. Краткая форма метода оплаты ZoodPay. Поддерживаемые значения «ZPI» и «PAD», полученные от API конфигурации. |
amount | десятичный требуется | Сумма заказа - это окончательная сумма в виде десятичного числа, округленного до 2 знаков после запятой. |
currency | строка требуется | Валюта в формате ISO-4217 . Поддерживаемые значения включают «KZT», «UZS», «IQD», «JOD», «SAR», «KWD» для кода рынков «KZ», «UZ», «IQ», «JO», «KSA», «KW» соответственно. Указанное значение должно соответствовать местной валюте кода рынка. |
market_code | строка требуется | Код страны ISO 3166-1 . Длина должна составлять 2 или 3 символа. Возможные значения: «KZ», «UZ», «IQ», «JO», «KSA», «KW». |
merchant_reference_no | строка требуется | Уникальный идентификатор / ссылка на заказ продавца, связанного с этой транзакцией. |
signature | строка требуется | ZoodPay проверяет запрос и гарантирует, что параметры не изменяются путём проверки подписи в запросе. Для создания контрольной суммы (подписи) обратитесь к этапам, приведенным в логике Контрольной суммы . Примечание. Создайте подпись, используя параметр тела запроса вместе с salt ключом. |
lang | строка | Язык клиента в соответствии с кодом рынка. Поддерживаемые значения включают «en», «ru», «uz», «kk», «ar», «ku». По умолчанию значение будет иметь «en». |
discount_amount | десятичный | Сумма скидки при заказе в десятичном формате с округлением до 2 знаков после запятой. |
shipping_amount | десятичный | Сумма доставки заказа в виде десятичного числа с округлением до 2 знаков после запятой. |
tax_amount | десятичный | Сумма налога на заказ, если таковая имеется, выражается десятичным числом, округленным до 2 знаков после запятой. |
е. Модель данных элемента
Имя поля | Тип поля | Описание |
---|---|---|
name | строка требуется | Название предмета. Длина не должна превышать 255 символов. |
sku | строка | Артикул товара. Длина не должна превышать 64 символа. |
quantity | целое число требуется | Количество товара, хранящееся как целое число. Должно быть больше , чем 0. |
price | десятичный требуется | Цена товара в десятичном формате с округлением до двух знаков после запятой. |
discount_amount | десятичный | Сумма скидки на товар в десятичном формате с округлением до двух знаков после запятой. |
tax_amount | десятичный | Сумма налога на заказ, если таковая имеется, в десятичном формате с округлением до двух знаков после запятой. |
currency_code | десятичный | Валюта в формате ISO-4217 . Поддерживаемые значения включают «KZT», «UZS», «IQD», «JOD», «SAR», «KWD» для рыночного кода «KZ», «UZ», «IQ», «JO», «KSA», « КВт »соответственно. Указанное значение должно соответствовать местной валюте рыночного кода. |
categories | [] [] строка требуется | Перечень перечней для размещения нескольких категорий, применимых к элементу. Каждый перечень представляет собой иерархический путь к категории (названия категории), при этом самая левая категория является родительской категорией верхнего уровня. |
f. Модель контактных данных
Имя поля | Тип поля | Описание |
---|---|---|
name | строка требуется | Полное имя. Длина не должна превышать 255 символов. |
address_line1 | строка требуется | Первая строка адреса. Длина не должна превышать 128 символов. |
address_line2 | строка | Вторая строка адреса. Длина не должна превышать 128 символов. |
city | строка | Город адресата. Длина не должна превышать 100 символов. |
state | строка | Область адресата. Длина не должна превышать 100 символов. |
zipcode | строка требуется | ZIP или Почтовый индекс. Длина не должна превышать 64 символа. |
country_code | строка требуется | Код страны ISO 3166-1 . Длина должна составлять 2 или 3 символа. |
phone_number | строка | Телефонный номер в формате E.123 . Длина до 32 символов. |
г. Модель данных службы доставки
Имя поля | Тип поля | Описание |
---|---|---|
name | строка | Название службы доставки / поставщика. Длина не должна превышать 128 символов. |
shipped_at | строка | Дата и время отправки заказа в формате ISO 8601 . Обратите внимание, что это поле не является обязательным при создании транзакции. |
tracking | строка | Номер отслеживания, предоставленный курьером. Длина не должна превышать 128 символов. Обратите внимание, что это поле не является обязательным при создании транзакции. |
priority | строка | Приоритет доставки. При наличии, должно быть либо «STANDARD», либо «EXPRESS». |
3. Создание метода возврата.
а. Запрос модели данных полезной нагрузки
Имя поля | Тип поля | Описание |
---|---|---|
transaction_id | строка требуется | Уникальный идентификатор транзакции ZoodPay для создания возврата. |
refund_amount | десятичный требуется | Сумма возврата не должна превышать сумму транзакции или сумма нескольких сумм возврата не должна превышать сумму транзакции. |
reason | строка требуется | Причина возврата средств продавцом. |
request_id | строка | Уникальный идентификатор запроса, необходимый для безопасных повторных попыток. Рекомендуется, чтобы продавец генерировал UUID для каждого уникального возврата средств. |
merchant_refund_reference | строка | Соответствующий идентификатор возврата или ссылка продавца, необходимые для безопасных повторных попыток. |
б. Модель данных полезной нагрузки ответа
Имя поля | Тип поля | Описание |
---|---|---|
refund_id | строка | Уникальный идентификатор возврата ZoodPay. |
refund | Refund | Объект возврата ZoodPay . |
c. Модель данных возврата
Имя поля | Тип поля | Описание |
---|---|---|
refund_id | строка | Уникальный идентификатор возврата ZoodPay. |
refund_amount | десятичный | Сумма возврата не должна превышать сумму транзакции или сумма нескольких сумм возврата не должна превышать сумму транзакции. |
currency | строка | Валюта суммы возврата. |
transaction_id | строка | Уникальный идентификатор транзакции ZoodPay. |
status | строка | Статус возврата. Возможные значения: "Инициировано", "Утверждено", "Отклонено". |
declined_reason | строка | Если возврат был отклонен, необходимо указать причину отказа в возврате, в противном случае поле остается пустым. |
request_id | строка | Уникальный идентификатор запроса, необходимый для безопасных повторных попыток. Рекомендуется, чтобы продавец генерировал UUID для каждого уникального возврата. |
merchant_refund_reference | строка | Соответствующий идентификатор возврата или ссылка продавца, необходимая для безопасных повторных попыток. Это должно быть включено вместе с Идентификатором запроса, чтобы использовать идемпотентность. |
created_at | строка | Метка времени создания возврата в формате UTC в формате ISO 8601. |
refunded_at | строка | Отметка времени возврата в формате UTC в формате ISO 8601. |
4. Установление даты доставки транзакции.
а. Запрос модели данных полезной нагрузки
Имя поля | Тип поля | Описание |
---|---|---|
delivered_at | строка требуется | Дата и время доставки заказа в формате ISO 8601. |
final_capture_amount | десятичный | Это поле предназначено для будущих целей и является окончательной суммой, которая должна быть списана с клиента. Если в полезной нагрузке нет поля или нуля, то необходимо списать первоначальную сумму транзакций. |
б. Модель данных ответа полезной нагрузки
Имя поля | Тип поля | Описание |
---|---|---|
transaction_id | строка | Идентификатор транзакции ZoodPay, который будет использоваться в последующих вызовах API, связанных с транзакцией и возвратом средств. |
status | строка | Статус транзакции. Возможные значения: Неактивно, оплачено, В ожидании, неудачно и отменено. |
original_amount | десятичный | Исходная сумма, зафиксированная на момент создания транзакции. |
final_capture_amount | десятичный | Окончательная сумма, которую необходимо списать с клиента. |
delivered_at | строка | Дата и время доставки заказа в формате ISO 8601. |
sms_link | строка | Ссылка доставки ZoodPay для проверки одноразового пароля, который был отправлен на мобильный номер клиента через SMS. Этот ключ существует только для среды песочницы. |
sms_otp | строка | OTP, который был отправлен клиенту для подтверждения доставки. Этот ключ существует только для среды песочницы. |
5. Данные ответа будут отправлены ZoodPay при успехе / ошибке страницы продавца
Заголовки HTTP
Имя поля | Описание |
---|---|
Content Type | application/x-www-form-urlencoded |
Method | POST |
а. Модель данных запроса полезной нагрузки
Имя поля | Тип поля | Описание |
---|---|---|
amount | десятичный | Закажите окончательную сумму в виде десятичного числа, округленного до двух знаков после запятой. |
created_at | строка | Метка времени создания транзакции в формате UTC в ISO 8601 формат. |
status | строка | Статус транзакции. Возможные значения: Неактивно, оплачено, В ожидании, неудачно и отменено. |
transaction_id | строка | Идентификатор транзакции ZoodPay, который будет использоваться в последующих вызовах API, связанных с транзакцией и возвратом средств. |
merchant_order_reference | строка | Уникальный идентификатор заказа / ссылка продавца, связанный с этой транзакцией. |
signature | строка | Проверьте алгоритм создания контрольной суммы подписи с помощью ZoodPay, , который будет отправлен продавцу. |
API обратного вызова / Webhooks
1. Мгновенное уведомление об оплате (IPN) Запрос полезной нагрузки от ZoodPay на URL обратного вызова продавца
Заголовки HTTP
Имя поля | Описание |
---|---|
Content Type | application/json |
Method | POST |
Пример
{
"amount": "200.00",
"created_at": "2020-09-22T11:23:55.432Z",
"status": "Paid",
"transaction_id": "5fd751239103c"
”merchant_order_reference”: 12345
”signature”: “98f6edca713f25495da17a806636101eca46501b080dc6f47fab85d1223a1”
}
а. Модель данных запроса полезной нагрузки
Имя поля | Тип поля | Описание |
---|---|---|
amount | десятичный | Закажите окончательную сумму в виде десятичного числа, округленного до двух знаков после запятой. |
created_at | строка | Метка времени создания транзакции в формате UTC в ISO 8601 формат. |
status | строка | Статус транзакции. Возможные значения: Неактивно, оплачено, В ожидании, неудачно и отменено. |
transaction_id | строка | Идентификатор транзакции ZoodPay, который будет использоваться в последующих вызовах API, связанных с транзакцией и возвратом средств. |
merchant_order_reference | строка | Уникальный идентификатор заказа / ссылка продавца, связанный с этой транзакцией. |
signature | строка | Проверьте алгоритм создания контрольной суммы подписи с помощью ZoodPay, , который будет отправлен продавцу. |
2. Refund Url Payload от ZoodPay на URL обратного вызова продавца
Заголовки HTTP
Имя поля | Описание |
---|---|
Content Type | application/json |
Method | POST |
Пример
{
"refund": {
"created_at": "2020-12-10T10:48:44+00:00",
"currency": "KZT",
"declined_reason": "",
"merchant_refund_reference": "merch123",
"refund_amount": 10.00,
"refund_id": "5fd1fdc3f77d",
"refunded_at": "2021-01-10T23:00:00+00:00",
"request_id": "100",
"status": "Done",
"transaction_id": "5fd1eab5b1d71",
},
"signature": "b5b8a7a4b25e622ea7ab56e62ac8bb069f708"
"refund_id": "5fd1fd0c3f77d"
}
а. Модель данных запроса полезной нагрузки
Имя поля | Тип поля | Описание |
---|---|---|
refund_id | строка | Уникальный идентификатор возврата ZoodPay. |
signature | строка | Продавец должен проверить значения параметров, убедившись, что в запросе есть подпись / контрольная сумма. Строку подписи можно проверить с помощью логики Zoodpay Refund Checksum . |
refund | Refund | Объект возврата ZoodPay . |
Симулятор API
Пожалуйста, нажмите здесь, он откроется на новой странице
Ошибки
ZoodPay API указывает на успех или неудачу запроса через коды состояния HTTP.
Код состояния / ошибки HTTP | Описание ошибки | Сообщение об ошибке |
---|---|---|
200-201 | The request was processed successfully. | NA |
400 | Bad Request. | Relevant error message will be displayed |
401 | Unauthorised. | You are not authenticated to perform the requested action. |
404 | Not Found | Resource not found. |
500 | Internal Server Error | Please try again. |
503 | Service Unavailable | Service Unavailable |
504 | Gateway Timeout | Gateway Timeout |