POST /api/v2/server-side-api/purchase/set/transaction/

Définir une transaction

Crée une nouvelle transaction pour un utilisateur final de votre application dans Adapty et fournit un niveau d'accès. La transaction créée par cette méthode apparaîtra dans vos analyses et dans le fil d'événements, et sera envoyée à toutes les intégrations.

Mise à jour d'un abonnement existant : Pour mettre à jour billing_issue_detected_at ou renew_status_changed_at sans générer de nouvel événement subscription_renewed, réutilisez le store_transaction_id existant (sous le même store_original_transaction_id). La soumission d'un nouveau store_transaction_id est traitée comme une nouvelle transaction et déclenche un événement subscription_renewed.

Header parameters

adapty-customer-user-idstring

L'identifiant unique du client dans votre système. adapty-customer-user-id ou adapty-profile-id est requis.

adapty-profile-idstring

L'identifiant unique du profil dans votre système. Meilleure option si vous travaillez avec des profils anonymes. adapty-customer-user-id ou adapty-profile-id est requis.

Request body

Option 1 — object

Données de transaction pour un achat unique

purchase_typestringrequired

Type d'achat

One of: "one_time_purchase"

storestringrequired

Store où l'achat a été effectué. Les valeurs courantes sont app_store, play_store, stripe, paddle, ou tout identifiant de store personnalisé

environmentstring

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

One of: "Production", "Sandbox"

store_product_idstringrequired

Identifiant du produit dans le store

store_transaction_idstringrequired

Identifiant de transaction dans le store. Maximum 50 caractères. Les identifiants de transaction PayPal et de certains stores personnalisés peuvent dépasser cette limite — tronquez ou hachez la valeur avant de la soumettre, sinon la requête échoue.

store_original_transaction_idstringrequired

Identifiant de transaction originale dans le store

is_family_sharedboolean

Si l'achat est partagé en famille

priceobjectrequired
countrystringrequired

Code pays

currencystringrequired

Code devise

valuenumberrequired

Valeur du prix

purchased_atstringrequired

Quand l'achat a été effectué

variation_idstring

Identifiant de variante pour les tests A/B

offerobject
categorystringrequired

Catégorie de l'offre

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

typestringrequired

Type d'offre

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

idstring

Identifiant de l'offre

refunded_atstring

Quand l'achat a été remboursé

cancellation_reasonstring

Raison de l'annulation

One of: "billing_error", "cancelled_by_developer", "new_subscription_replace", "price_increase", "product_was_not_available", "refund", "unknown", "upgraded", "voluntarily_cancelled", "adapty_revoked"

Option 2 — object

Données de transaction pour un achat par abonnement

purchase_typestringrequired

Type d'achat

One of: "subscription"

storestringrequired

Store où l'achat a été effectué. Les valeurs courantes sont app_store, play_store, stripe, paddle, ou tout identifiant de store personnalisé

environmentstring

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

One of: "Production", "Sandbox"

store_product_idstringrequired

Identifiant du produit dans le store

store_transaction_idstringrequired

Identifiant de transaction dans le store. Maximum 50 caractères. Les identifiants de transaction PayPal et de certains stores personnalisés peuvent dépasser cette limite — tronquez ou hachez la valeur avant de la soumettre, sinon la requête échoue.

store_original_transaction_idstringrequired

Identifiant de transaction originale dans le store

is_family_sharedboolean

Si l'achat est partagé en famille

priceobjectrequired
countrystringrequired

Code pays

currencystringrequired

Code devise

valuenumberrequired

Valeur du prix

purchased_atstringrequired

Quand l'achat a été effectué

variation_idstring

Identifiant de variante pour les tests A/B

offerobject
categorystringrequired

Catégorie de l'offre

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

typestringrequired

Type d'offre

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

idstring

Identifiant de l'offre

refunded_atstring

Quand l'achat a été remboursé

cancellation_reasonstring

Raison de l'annulation

One of: "billing_error", "cancelled_by_developer", "new_subscription_replace", "price_increase", "product_was_not_available", "refund", "unknown", "upgraded", "voluntarily_cancelled", "adapty_revoked"

originally_purchased_atstringrequired

Quand l'abonnement a été acheté initialement

expires_atstringrequired

Quand l'abonnement expire

renew_statusbooleanrequired

Si l'abonnement sera renouvelé

renew_status_changed_atstring

Quand le statut de renouvellement a été modifié

billing_issue_detected_atstring

Quand un problème de facturation a été détecté

grace_period_expires_atstring

Quand le délai de grâce expire

Responses

Transaction enregistrée 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

Valeur décimale représentant le chiffre d'affaires total en USD généré par 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

Maximum de 30 attributs personnalisés autorisés pour le profil

keystringrequired

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

valuestring | numberrequired

La valeur de l'attribut doit comporter au plus 50 caractères. Seules les chaînes de caractères et les décimaux sont autorisés comme valeurs

access_levelsarray of objectrequired

Tableau d'objets de 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 transaction dans le store

store_original_transaction_idstring

Identifiant de transaction originale dans le store

offerallOf

Détails de l'offre, si une offre promotionnelle ou 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

Quand le niveau d'accès commence

purchased_atstring

Quand le niveau d'accès a été acheté

originally_purchased_atstring

Quand le niveau d'accès a été acheté initialement

expires_atstring

Quand le niveau d'accès expire

renewal_cancelled_atstring

Quand le renouvellement a été annulé

billing_issue_detected_atstring

Quand un problème de facturation a été détecté

is_in_grace_periodboolean

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 d'abonnement. Tableau vide si le client n'a aucun abonnement

storestring

Store où l'abonnement 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 transaction dans le store

store_original_transaction_idstring

Identifiant de transaction originale dans le store

offerallOf

Détails de l'offre, si une offre promotionnelle ou 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

Quand l'abonnement a été acheté

originally_purchased_atstring

Quand l'abonnement a été acheté initialement

expires_atstring

Quand l'abonnement expire

renewal_cancelled_atstring

Quand le renouvellement a été annulé

billing_issue_detected_atstring

Quand un problème de facturation a été détecté

is_in_grace_periodboolean

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

cancellation_reasonstring

Raison de l'annulation

non_subscriptionsarray of objectrequired

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

purchase_idstring

Identifiant unique de l'achat

storestring

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

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 transaction dans le store

store_original_transaction_idstring

Identifiant de transaction originale dans le store

purchased_atstring

Quand l'achat a été effectué

environmentstring

Environnement (Sandbox, Production)

is_refundboolean

Si cet achat est un remboursement

is_consumableboolean

Si cet achat est un consommable

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

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

Profil introuvable

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

Erreur interne du serveur