POST /api/v2/server-side-api/purchase/paddle/token/validate/

Валидировать покупку в Paddle

Валидирует покупку по предоставленному токену Paddle, используя учётные данные Paddle из настроек приложения в дашборде Adapty. Если покупка действительна, история транзакций импортируется из Paddle в профиль Adapty с указанным customer_user_id. Если профиля с таким customer_user_id ранее не существовало — он будет создан.

Request body

customer_user_idstringrequired

ID вашего пользователя в вашей системе

paddle_tokenstringrequired

Токен объекта Paddle, представляющего уникальную покупку. Может быть идентификатором транзакции (txn_...) или идентификатором подписки (sub_...)

Responses

Покупка успешно валидирована

Schema
dataobjectrequired
app_idstringrequired

Внутренний ID вашего приложения

profile_idstringrequired

ID профиля в Adapty

customer_user_idstringrequired

ID вашего пользователя в вашей системе

total_revenue_usdnumberrequired

Число с плавающей точкой, представляющее суммарный доход в USD, полученный в рамках профиля

segment_hashstringrequired

Внутренний параметр

timestampintegerrequired

Время ответа в миллисекундах, используется для разрешения гонки состояний

custom_attributesarray of objectrequired

Для профиля допускается задать не более 30 пользовательских атрибутов

keystringrequired

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

valuestring | numberrequired

Значение атрибута должно содержать не более 50 символов. В качестве значений допускаются только строки и числа с плавающей точкой

access_levelsarray of objectrequired

Массив объектов уровней доступа. Пустой массив, если у клиента нет уровней доступа

access_level_idstring

Идентификатор уровня доступа

storestring

Стор, в котором был приобретён уровень доступа

store_product_idstring

ID продукта в сторе

store_base_plan_idstring

ID базового плана в сторе

store_transaction_idstring

ID транзакции в сторе

store_original_transaction_idstring

ID исходной транзакции в сторе

offerallOf

Данные офера, если был применён promotional offer или introductory offer

categorystring

Категория офера

One of: "introductory", "promotional", "offer_code", "win_back"

typestring

Тип офера

One of: "free_trial", "pay_as_you_go", "pay_up_front"

idstring

ID офера

starts_atstring

Когда начинается уровень доступа

purchased_atstring

Когда был приобретён уровень доступа

originally_purchased_atstring

Когда уровень доступа был приобретён впервые

expires_atstring

Когда истекает уровень доступа

renewal_cancelled_atstring

Когда было отменено продление

billing_issue_detected_atstring

Когда была обнаружена проблема с оплатой

is_in_grace_periodboolean

Находится ли уровень доступа в льготном периоде

cancellation_reasonstring

Причина отмены

subscriptionsarray of objectrequired

Массив объектов подписок. Пустой массив, если у клиента нет подписок

storestring

Стор, в котором была приобретена подписка

store_product_idstring

ID продукта в сторе

store_base_plan_idstring

ID базового плана в сторе

store_transaction_idstring

ID транзакции в сторе

store_original_transaction_idstring

ID исходной транзакции в сторе

offerallOf

Данные офера, если был применён promotional offer или introductory offer

categorystring

Категория офера

One of: "introductory", "promotional", "offer_code", "win_back"

typestring

Тип офера

One of: "free_trial", "pay_as_you_go", "pay_up_front"

idstring

ID офера

environmentstring

Среда (Sandbox, Production)

purchased_atstring

Когда была приобретена подписка

originally_purchased_atstring

Когда подписка была приобретена впервые

expires_atstring

Когда истекает подписка

renewal_cancelled_atstring

Когда было отменено продление

billing_issue_detected_atstring

Когда была обнаружена проблема с оплатой

is_in_grace_periodboolean

Находится ли подписка в льготном периоде

cancellation_reasonstring

Причина отмены

non_subscriptionsarray of objectrequired

Массив объектов разовых покупок. Пустой массив, если у клиента нет покупок

purchase_idstring

Уникальный идентификатор покупки

storestring

Стор, в котором была совершена покупка

store_product_idstring

ID продукта в сторе

store_base_plan_idstring

ID базового плана в сторе

store_transaction_idstring

ID транзакции в сторе

store_original_transaction_idstring

ID исходной транзакции в сторе

purchased_atstring

Когда была совершена покупка

environmentstring

Среда (Sandbox, Production)

is_refundboolean

Является ли это возвратом средств

is_consumableboolean

Является ли это расходуемой покупкой

Example
{
  "data": {
    "app_id": "14c3d623-2f3a-455a-aa86-ef83dff6913b",
    "profile_id": "3286abd3-48b0-4e9c-a5f6-ac0a006804a6",
    "customer_user_id": "[email protected]",
    "total_revenue_usd": 0,
    "segment_hash": "8f45947bad31ab0c",
    "timestamp": 1736436751469,
    "custom_attributes": [
      {
        "key": "favourite_sport",
        "value": "yoga"
      }
    ],
    "access_levels": [],
    "subscriptions": [
      {
        "purchase_id": "5a7ab471-2299-45f7-ad69-1d395c1256e3",
        "store": "app_store",
        "store_product_id": "1year.premium",
        "store_base_plan_id": null,
        "store_transaction_id": "30002109551456",
        "store_original_transaction_id": "30002109551456",
        "purchased_at": "2022-10-12T09:42:50+00:00",
        "environment": "Production",
        "is_refund": false,
        "is_consumable": false
      }
    ],
    "non_subscriptions": []
  }
}

Некорректный запрос

Schema
errorsarray of objectrequired
sourcestring

Источник ошибки

errorsarray of string

Массив сообщений об ошибках

error_codestringrequired

Краткое название ошибки

status_codeintegerrequired

HTTP-код статуса

Example
{
  "errors": [
    "No products found"
  ],
  "error_code": "no_products_found",
  "status_code": 400
}

Не авторизован

Schema
errorsarray of objectrequired
sourcestring

Источник ошибки

errorsarray of string

Массив сообщений об ошибках

error_codestringrequired

Краткое название ошибки

status_codeintegerrequired

HTTP-код статуса

Example
{
  "errors": [
    "Invalid API key"
  ],
  "error_code": "unauthorized",
  "status_code": 401
}

Внутренняя ошибка сервера

Schema
errorsarray of objectrequired
sourcestring

Источник ошибки

errorsarray of string

Массив сообщений об ошибках

error_codestringrequired

Краткое название ошибки

status_codeintegerrequired

HTTP-код статуса