/api/v2/server-side-api/vc/transactions/ Créer une transaction de monnaie virtuelle
Crédite ou débite une ou plusieurs monnaies virtuelles pour un profil en une seule transaction atomique. Utilisez un amount positif pour créditer (accorder) et un amount négatif pour débiter (dépenser). Tous les éléments sont appliqués ensemble — si l'un échoue, aucun n'est appliqué.
Chaque code de monnaie ne peut apparaître qu'une seule fois par requête. Un crédit via ce point de terminaison crée toujours un solde sans expiration.
Header parameters
L'identifiant unique du client dans votre système. adapty-customer-user-id ou adapty-profile-id est requis.
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.
Un UUID v4 qui rend la requête idempotente. Si vous relancez une requête avec la même clé, Adapty renvoie le résultat de la transaction originale sans modifier à nouveau les soldes. Doit être un UUID v4 valide.
Request body
Corps de la requête pour créer une transaction de monnaie virtuelle.
Ajustements de solde à appliquer de manière atomique. Chaque code de monnaie ne peut apparaître qu'une seule fois.
Le code de la monnaie virtuelle à ajuster.
Le montant à appliquer. Une valeur positive crédite (accorde) la monnaie ; une valeur négative la débite (dépense). Ne peut pas être nul.
Paires clé-valeur optionnelles stockées avec la transaction. Maximum 5 clés. Chaque clé correspond à ^[a-z0-9_]{1,30}$, et chaque valeur comporte au plus 200 caractères.
Responses
Transaction appliquée avec succès
Schema
Résultat d'une transaction de monnaie virtuelle.
Identifiant unique de la transaction créée.
Solde après transaction pour chaque monnaie affectée par cette requête (une entrée par élément dans items). Pour consulter la liste complète des soldes du profil, utilisez GET /api/v2/server-side-api/vc/balances/.
Code de la monnaie virtuelle.
Nom d'affichage de la monnaie virtuelle.
Solde total, y compris les montants actuellement retenus.
Somme de toutes les retenues actives (montants réservés). Actuellement toujours 0.
Solde disponible à dépenser, calculé comme balance - held.
Example
{
"transaction_id": "0190e8a4-1c2b-7def-8abc-2c1a4b6d8e90",
"balances": [
{
"code": "COINS",
"name": "Gold Coins",
"balance": 12950,
"held": 0,
"available": 12950
}
]
} Requête incorrecte. Le champ error_code identifie la cause : insufficient_balance, unknown_currency, duplicate_currency, amount_zero, balance_overflow, empty_items, ou idempotency_key_invalid.
Schema
Source de l'erreur
Tableau de messages d'erreur
Nom court de l'erreur
Code de statut HTTP
Example
{
"errors": [
{
"source": "currency_code",
"errors": [
"Insufficient balance for currency COINS"
]
}
],
"error_code": "insufficient_balance",
"status_code": 400
} Non autorisé. La clé API est manquante ou invalide.
Schema
Source de l'erreur
Tableau de messages d'erreur
Nom court de l'erreur
Code de statut HTTP
Interdit. L'API serveur pour les monnaies virtuelles n'est pas activée pour cette application. Contactez le support Adapty pour en demander l'accès.
Schema
Source de l'erreur
Tableau de messages d'erreur
Nom court de l'erreur
Code de statut HTTP
Example
{
"errors": [
{
"source": null,
"errors": [
"Server API for virtual currencies is not enabled for this app. Contact Adapty support to request access."
]
}
],
"error_code": "feature_not_enabled",
"status_code": 403
} Profil introuvable.
Schema
Source de l'erreur
Tableau de messages d'erreur
Nom court de l'erreur
Code de statut HTTP
Conflit. Le champ error_code identifie la cause :
idempotency_in_flight— une requête avec la mêmeIdempotency-Keyest toujours en cours de traitement. Réessayez après l'intervalle indiqué dans l'en-tête de réponseRetry-After.duplicate_source_transaction— la transaction du store sous-jacente a déjà été créditée, elle n'est donc pas appliquée à nouveau.
Schema
Source de l'erreur
Tableau de messages d'erreur
Nom court de l'erreur
Code de statut HTTP
Example
{
"errors": [
{
"source": null,
"errors": [
"A similar request is being processed."
]
}
],
"error_code": "idempotency_in_flight",
"status_code": 409
} Entité non traitable. Le corps de la requête n'a pas passé la validation du schéma — par exemple, items contient plus de 20 entrées, ou une clé ou valeur de metadata ne respecte pas ses contraintes.
Schema
Source de l'erreur
Tableau de messages d'erreur
Nom court de l'erreur
Code de statut HTTP
Trop de requêtes. La limite de débit par application ou globale a été dépassée (error_code est rate_limited). Les limites par défaut sont 600 requêtes par minute par application et 6 000 requêtes par minute globalement.
Schema
Source de l'erreur
Tableau de messages d'erreur
Nom court de l'erreur
Code de statut HTTP
Erreur interne du serveur