# Valider un achat Stripe

> Valide un achat à l'aide du jeton Stripe fourni en utilisant les identifiants Stripe dans les paramètres de votre application dans l'Adapty Dashboard.
> Si l'achat est valide, l'historique des transactions est importé depuis Stripe vers le profil dans Adapty avec le customer_user_id spécifié.
> Si aucun profil avec ce customer_user_id n'existait auparavant, il sera créé.
>
> Des événements de profil sont générés au cours du processus et les transactions importées sont comptabilisées dans le MTR.

## OpenAPI

```yaml
/api-specs/adapty-api.yaml post /api/v1/sdk/purchase/stripe/token/validate/
openapi: 3.1.0
info:
  title: API côté serveur Adapty
  version: 1.0.0
servers:
  - url: https://api.adapty.io
    description: Serveur de production
paths:
  /api/v1/sdk/purchase/stripe/token/validate/:
    post:
      summary: Valider un achat Stripe
      description: |
        Valide un achat à l'aide du jeton Stripe fourni en utilisant les identifiants Stripe dans les paramètres de votre application dans l'Adapty Dashboard.
        Si l'achat est valide, l'historique des transactions est importé depuis Stripe vers le profil dans Adapty avec le customer_user_id spécifié.
        Si aucun profil avec ce customer_user_id n'existait auparavant, il sera créé.

        Des événements de profil sont générés au cours du processus et les transactions importées sont comptabilisées dans le MTR.
      operationId: validateStripePurchase
      tags:
        - Stripe
      security:
        - apikeyAuth: []
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: "#/components/schemas/StripeValidationRequest"
            example:
              data:
                type: stripe_receipt_validation_result
                attributes:
                  customer_user_id: <YOUR_CUSTOMER_USER_ID>
                  stripe_token: <YOUR_STRIPE_TOKEN>
      responses:
        "200":
          description: Achat validé avec succès
          content:
            application/vnd.api+json:
              schema:
                $ref: "#/components/schemas/StripeValidationResponse"
              example:
                data: null
        "400":
          description: Requête incorrecte
          content:
            application/vnd.api+json:
              schema:
                $ref: "#/components/schemas/StripeErrorResponse"
              example:
                errors:
                  - detail: none is not an allowed value
                    source:
                      pointer: /data/attributes/stripe_token
                    status: "400"
        "401":
          description: Non autorisé
          content:
            application/vnd.api+json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "500":
          description: Erreur interne du serveur
          content:
            application/vnd.api+json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
components:
  schemas:
    StripeValidationRequest:
      type: object
      properties:
        data:
          type: object
          properties:
            type:
              type: string
              enum:
                - stripe_receipt_validation_result
              description: Le type de la ressource
            attributes:
              type: object
              properties:
                customer_user_id:
                  type: string
                  description: L'identifiant de votre utilisateur dans votre système
                stripe_token:
                  type: string
                  description: |
                    Jeton d'un objet Stripe représentant un achat unique.
                    Peut être soit un jeton d'abonnement Stripe (sub_XXX), soit un jeton d'intention de paiement (pi_XXX)
              required:
                - customer_user_id
                - stripe_token
          required:
            - type
            - attributes
      required:
        - data
    StripeValidationResponse:
      type: object
      properties:
        data:
          type: object
          nullable: true
          description: Données de réponse (null en cas de validation réussie)
      required:
        - data
    StripeErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              detail:
                type: string
                description: Informations descriptives sur l'erreur
              source:
                type: object
                properties:
                  pointer:
                    type: string
                    description: Référence l'emplacement exact dans le document de requête à l'origine du problème
                required:
                  - pointer
              status:
                type: string
                description: Code de statut HTTP
            required:
              - detail
              - source
              - status
      required:
        - errors
    ErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              source:
                type: string
                nullable: true
                description: Source de l'erreur
              errors:
                type: array
                items:
                  type: string
                description: Tableau de messages d'erreur
        error_code:
          type: string
          description: Nom court de l'erreur
        status_code:
          type: integer
          description: Code de statut HTTP
      required:
        - errors
        - error_code
        - status_code
  securitySchemes:
    apikeyAuth:
      type: apiKey
      name: Authorization
      in: header
      default: Api-Key {Your secret API key}
      description: |
        Les requêtes API doivent être authentifiées par votre clé API secrète via l'en-tête **Authorization** 
        avec la valeur `Api-Key {your_secret_api_key}`, par exemple, 
        `Api-Key secret_live_...`. Retrouvez cette clé dans l'Adapty Dashboard -> 
        **App Settings** -> onglet **General** -> section **API keys**.
```
