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

Valider un achat Paddle

Valide un achat à l'aide du jeton Paddle fourni en utilisant les identifiants Paddle configurés dans les paramètres de votre application dans l'Adapty Dashboard. Si l'achat est valide, l'historique des transactions est importé depuis Paddle vers le profil Adapty associé au customer_user_id spécifié. Si aucun profil avec ce customer_user_id n'existait auparavant, il sera créé.

Request body

customer_user_idstringrequired

L'identifiant de votre utilisateur dans votre système

paddle_tokenstringrequired

Token d'un objet Paddle représentant un achat unique. Peut être soit un identifiant de transaction (txn_...) soit un identifiant d'abonnement (sub_...)

Responses

Achat validé avec succès

Schema
dataobjectrequired
app_idstringrequired

L'identifiant interne de votre application

profile_idstringrequired

Identifiant de profil Adapty

customer_user_idstringrequired

L'identifiant de votre utilisateur dans votre système

total_revenue_usdnumberrequired

Une valeur flottante représentant le chiffre d'affaires total en USD généré sur le profil

segment_hashstringrequired

Paramètre interne

timestampintegerrequired

Temps de réponse en millisecondes, nécessaire pour résoudre une condition de concurrence

custom_attributesarray of objectrequired

Un maximum de 30 attributs personnalisés peuvent être définis sur le profil

keystringrequired

La clé doit être une chaîne de caractères ne dépassant pas 30 caractères. Seuls les lettres, chiffres, tirets, points et underscores sont autorisés

valuestring | numberrequired

La valeur de l'attribut ne doit pas dépasser 50 caractères. Seules les chaînes de caractères et les nombres flottants sont autorisés comme valeurs

access_levelsarray of objectrequired

Tableau d'objets niveau d'accès. Tableau vide si le client n'a aucun niveau d'accès

access_level_idstring

Identifiant du niveau d'accès

storestring

Store où le niveau d'accès a été acheté

store_product_idstring

Identifiant du produit dans le store

store_base_plan_idstring

Identifiant du plan de base dans le store

store_transaction_idstring

Identifiant de la transaction dans le store

store_original_transaction_idstring

Identifiant de la transaction d'origine dans le store

offerallOf

Détails de l'offre, si une offre promotionnelle ou une offre de lancement a été appliquée

categorystring

Catégorie de l'offre

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

typestring

Type d'offre

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

idstring

Identifiant de l'offre

starts_atstring

Date de début du niveau d'accès

purchased_atstring

Date d'achat du niveau d'accès

originally_purchased_atstring

Date d'achat initiale du niveau d'accès

expires_atstring

Date d'expiration du niveau d'accès

renewal_cancelled_atstring

Date d'annulation du renouvellement

billing_issue_detected_atstring

Date de détection du problème de facturation

is_in_grace_periodboolean

Indique si le niveau d'accès est en délai de grâce

cancellation_reasonstring

Raison de l'annulation

subscriptionsarray of objectrequired

Tableau d'objets abonnement. Tableau vide si le client n'a aucun abonnement

storestring

Store où l'abonnement a été acheté

store_product_idstring

ID du produit dans le store

store_base_plan_idstring

ID du plan de base dans le store

store_transaction_idstring

ID de transaction dans le store

store_original_transaction_idstring

ID de transaction d'origine dans le store

offerallOf

Détails de l'offre, si une offre promotionnelle ou une offre de lancement a été appliquée

categorystring

Catégorie de l'offre

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

typestring

Type d'offre

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

idstring

Identifiant de l'offre

environmentstring

Environnement (Sandbox, Production)

purchased_atstring

Date d'achat de l'abonnement

originally_purchased_atstring

Date d'achat initial de l'abonnement

expires_atstring

Date d'expiration de l'abonnement

renewal_cancelled_atstring

Date d'annulation du renouvellement

billing_issue_detected_atstring

Date de détection du problème de facturation

is_in_grace_periodboolean

Indique si l'abonnement est en délai de grâce

cancellation_reasonstring

Raison de l'annulation

non_subscriptionsarray of objectrequired

Tableau d'objets achat unique. Tableau vide si le client n'a effectué aucun achat

purchase_idstring

Identifiant unique de l'achat

storestring

Store où l'achat a été effectué

store_product_idstring

ID du produit dans le store

store_base_plan_idstring

ID du plan de base dans le store

store_transaction_idstring

ID de la transaction dans le store

store_original_transaction_idstring

ID de la transaction d'origine dans le store

purchased_atstring

Date et heure de l'achat

environmentstring

Environnement (Sandbox, Production)

is_refundboolean

Indique s'il s'agit d'un remboursement

is_consumableboolean

Indique s'il s'agit d'un achat consommable

Example
{
  "data": {
    "app_id": "14c3d623-2f3a-455a-aa86-ef83dff6913b",
    "profile_id": "3286abd3-48b0-4e9c-a5f6-ac0a006804a6",
    "customer_user_id": "Jane.doe@example.com",
    "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": []
  }
}

Requête incorrecte

Schema
errorsarray of objectrequired
sourcestring

Source de l'erreur

errorsarray of string

Tableau de messages d'erreur

error_codestringrequired

Nom court de l'erreur

status_codeintegerrequired

Code de statut HTTP

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

Non autorisé

Schema
errorsarray of objectrequired
sourcestring

Source de l'erreur

errorsarray of string

Tableau de messages d'erreur

error_codestringrequired

Nom court de l'erreur

status_codeintegerrequired

Code de statut HTTP

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

Erreur interne du serveur

Schema
errorsarray of objectrequired
sourcestring

Source de l'erreur

errorsarray of string

Tableau de messages d'erreur

error_codestringrequired

Nom court de l'erreur

status_codeintegerrequired

Code de statut HTTP