# Validar compra de Stripe

> Valida una compra utilizando el token de Stripe proporcionado, usando las credenciales de Stripe en la configuración de tu app dentro del Adapty Dashboard.
> Si la compra es válida, el historial de transacciones se importa desde Stripe al perfil en Adapty con el customer_user_id especificado.
> Si no existía ningún perfil con ese customer_user_id, se creará uno nuevo.
>
> Los eventos del perfil se generan durante el proceso y las transacciones importadas se contabilizan en el MTR.

## OpenAPI

```yaml
/api-specs/adapty-api.yaml post /api/v1/sdk/purchase/stripe/token/validate/
openapi: 3.1.0
info:
  title: API de servidor de Adapty
  version: 1.0.0
servers:
  - url: https://api.adapty.io
    description: Servidor de producción
paths:
  /api/v1/sdk/purchase/stripe/token/validate/:
    post:
      summary: Validar compra de Stripe
      description: |
        Valida una compra utilizando el token de Stripe proporcionado, usando las credenciales de Stripe en la configuración de tu app dentro del Adapty Dashboard.
        Si la compra es válida, el historial de transacciones se importa desde Stripe al perfil en Adapty con el customer_user_id especificado.
        Si no existía ningún perfil con ese customer_user_id, se creará uno nuevo.

        Los eventos del perfil se generan durante el proceso y las transacciones importadas se contabilizan en el 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: Compra validada correctamente
          content:
            application/vnd.api+json:
              schema:
                $ref: "#/components/schemas/StripeValidationResponse"
              example:
                data: null
        "400":
          description: Solicitud incorrecta
          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: No autorizado
          content:
            application/vnd.api+json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "500":
          description: Error interno del servidor
          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: El tipo del recurso
            attributes:
              type: object
              properties:
                customer_user_id:
                  type: string
                  description: El ID de tu usuario en tu sistema
                stripe_token:
                  type: string
                  description: |
                    Token de un objeto de Stripe que representa una compra única.
                    Puede ser un token de una Suscripción de Stripe (sub_XXX) o de un Payment Intent (pi_XXX)
              required:
                - customer_user_id
                - stripe_token
          required:
            - type
            - attributes
      required:
        - data
    StripeValidationResponse:
      type: object
      properties:
        data:
          type: object
          nullable: true
          description: Datos de la respuesta (null en caso de validación correcta)
      required:
        - data
    StripeErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              detail:
                type: string
                description: Información descriptiva sobre el error
              source:
                type: object
                properties:
                  pointer:
                    type: string
                    description: Hace referencia a la ubicación exacta en el documento de la solicitud que causó el problema
                required:
                  - pointer
              status:
                type: string
                description: Código de estado HTTP
            required:
              - detail
              - source
              - status
      required:
        - errors
    ErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              source:
                type: string
                nullable: true
                description: Origen del error
              errors:
                type: array
                items:
                  type: string
                description: Array de mensajes de error
        error_code:
          type: string
          description: Nombre corto del error
        status_code:
          type: integer
          description: Código de estado HTTP
      required:
        - errors
        - error_code
        - status_code
  securitySchemes:
    apikeyAuth:
      type: apiKey
      name: Authorization
      in: header
      default: Api-Key {Your secret API key}
      description: |
        Las solicitudes a la API deben autenticarse con tu clave API secreta en la cabecera **Authorization**
        con el valor `Api-Key {your_secret_api_key}`, por ejemplo,
        `Api-Key secret_live_...`. Puedes encontrar esta clave en el Adapty Dashboard ->
        **App Settings** -> pestaña **General** -> sección **API keys**.
```
