Введение

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)

Эта модель обслуживания предполагает утверждение платежа после доставки и запуск плана платежей потребителя. Он зачислит стоимость заказа на назначенный продавцом банковский счет основываясь на количестве доставленных товаров.


Процесс интеграции

Прямой платежный поток

Direct Payment Flow

  1. Продавец вызывает конечную точку получения конфигурации, чтобы получить лимиты заказов Zoodpay, возможно, как часть асинхронного запланированного фонового процесса.
  2. Продавец хранит эти минимальные и максимальные значения заказа на стороне сервера.
  3. Отдельно при оформлении заказа Продавец использует сохраненные минимальные и максимальные значения заказа Zoodpay, чтобы определить, должен ли Zoodpay быть представлен в качестве доступного метода оплаты.
  4. Продавец вызывает конечную точку создания транзакции, чтобы получить URL-адрес платежа ZoodPay и токен сеанса.
  5. Продавец использует токен в сочетании с URL-адресом платежа, чтобы направить покупателя через процесс оплаты ZoodPay.
  6. Потребитель завершает процесс оплаты Zoodpay и возвращается на сайт Продавца.
    1. Если Потребитель нажимает «Подтвердить», он будет возвращен на веб-сайт Продавца с идентификатором транзакции и статусом «УСПЕШНО».
    2. Если Потребитель отменяет заказ, он будет возвращен на веб-сайт Продавца с идентификатором транзакции и статусом «ОТМЕНЕН».
    3. Если возникнет проблема с потребительской картой, он будут возвращен на веб-сайт продавца с идентификатором транзакции и статусом « НЕ УДАЛОСЬ ».


Архитектура 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