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. L'un ou l'autre des paramètres 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. L'un ou l'autre des paramètres 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 incluent app_store, play_store, stripe, paddle, ou tout identifiant de store personnalisé

environmentstring

Environnement dans lequel l'achat a été effectué

One of: "Production", "Sandbox"

store_product_idstringrequired

ID du produit dans le store

store_transaction_idstringrequired

ID de transaction dans le store. 50 caractères maximum. Les ID 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 échouera.

store_original_transaction_idstringrequired

ID de transaction d'origine dans le store

is_family_sharedboolean

Indique si l'achat est partagé en famille

priceobjectrequired
countrystringrequired

Code pays au format ISO 3166-1 alpha-2, par exemple US

currencystringrequired

Code devise au format ISO 4217, par exemple USD

valuenumberrequired

Valeur du prix

purchased_atstringrequired

Date et heure de l'achat

variation_idstring

ID 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

Date et heure du remboursement

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 incluent app_store, play_store, stripe, paddle, ou tout identifiant de store personnalisé

environmentstring

Environnement dans lequel l'achat a été effectué

One of: "Production", "Sandbox"

store_product_idstringrequired

ID du produit dans le store

store_transaction_idstringrequired

ID de transaction dans le store. Maximum 50 caractères. Les ID 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

ID de transaction original dans le store

is_family_sharedboolean

Indique si l'achat est partagé en famille

priceobjectrequired
countrystringrequired

Code pays au format ISO 3166-1 alpha-2, par exemple US

currencystringrequired

Code devise au format ISO 4217, par exemple USD

valuenumberrequired

Valeur du prix

purchased_atstringrequired

Date et heure de l'achat

variation_idstring

ID 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

Date et heure du remboursement

cancellation_reasonstring

Motif d'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

Date et heure de l'achat initial de l'abonnement

expires_atstringrequired

Date et heure d'expiration de l'abonnement

renew_statusbooleanrequired

Indique si l'abonnement sera renouvelé

renew_status_changed_atstring

Date et heure du changement du statut de renouvellement

billing_issue_detected_atstring

Date et heure de détection du problème de facturation

grace_period_expires_atstring

Date et heure d'expiration du délai de grâce

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

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

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