> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pay-me.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Funcionalidad Débito Automática

> Inicializa y muestra el formulario de débito automático de Pay-me Flex

<Warning>
  Esta funcionalidad se encuentra en desarrollo. La documentación, parámetros y flujos pueden cambiar antes de su disponibilidad final.
</Warning>

## Inicializar componente Débito Automático

Cuando se crea una nueva instancia del componente es necesario un objeto de configuración con las propiedades **nonce**, **payload** y **settings**.

### Parámetros

<AccordionGroup>
  <Accordion title="Datos de la afiliación">
    | Campo | Tipo | Obligatorio | Descripción |
    | - | - | - | - |
    | `action` | String | SI | Acción a ejecutar. Valores: `subscribe` / `update_subscription` |
    | `merchant_affiliation_code` | String | SI | Código de afiliación generado por el comercio. |
    | `merchant_code` | String | SI | Código del comercio que inicia la afiliación. |
    | `type` | String | SI | Tipo de afiliación. Solo se permite `MANUAL`. |
    | `frequency` | String | NO | Frecuencia de los cobros de la afiliación. |
    | `amount` | String | NO | Monto de los cobros en centavos. |
    | `maxAmount` | String | NO | Monto máximo para los pagos recurrentes en centavos. |
    | `currency` | String (ISO 4217) | SI | Moneda de los cobros. Ej.: `604` = PEN. |
  </Accordion>

  <Accordion title="Datos del beneficiario">
    | Campo | Tipo | Obligatorio | Descripción |
    | - | - | - | - |
    | `beneficiary.first_name` | String | SI | Nombres del beneficiario. |
    | `beneficiary.last_name` | String | SI | Apellidos del beneficiario. |
    | `beneficiary.email` | String | SI | Correo electrónico del beneficiario. |
    | `beneficiary.phone.country_code` | String | SI | Código de país del teléfono. Ej.: `51`. |
    | `beneficiary.phone.subscriber` | String | SI | Número de teléfono del beneficiario. |
    | `beneficiary.identity_document.type` | String | NO | Tipo de documento de identidad. Ej.: `DNI`. |
    | `beneficiary.identity_document.identifier` | String | NO | Número del documento de identidad. |
    | `beneficiary.identity_document.country` | String (ISO-3166) | NO | País de emisión del documento. Ej.: `PE`. |
    | `beneficiary.location.line_1` | String | SI | Dirección principal. |
    | `beneficiary.location.line_2` | String | NO | Dirección complementaria. |
    | `beneficiary.location.city` | String | SI | Ciudad de residencia. |
    | `beneficiary.location.state` | String | SI | Departamento o región. |
    | `beneficiary.location.country` | String (ISO-3166) | SI | Código ISO del país. Ej.: `PE`. |
  </Accordion>

  <Accordion title="Campos adicionales">
    | Campo | Tipo | Obligatorio | Descripción |
    | - | - | - | - |
    | `additional_fields.FACTURACION_ID` | String | NO | ID del cliente o contrato para facturación. |
    | `additional_fields.PLAN` | String | NO | Nombre o código del plan al que se afilia el beneficiario. |
    | `wallet.user_id` | String | NO | ID del usuario en el wallet para asociar una tarjeta a la afiliación. |
  </Accordion>
</AccordionGroup>

### Flujos disponibles

<CardGroup cols={3}>
  <Card title="authorize" icon="credit-card">
    Muestra un formulario de pago con los diferentes métodos habilitados para el comercio.
  </Card>

  <Card title="subscribe" icon="user-plus">
    Muestra el formulario de afiliación para registrar un nuevo débito automático.
  </Card>

  <Card title="update_subscription" icon="pen-to-square">
    Muestra un formulario para actualizar una afiliación existente.
  </Card>
</CardGroup>

***

## Mostrar Pay-me Flex Débito Automático

Este es el paso final. Se indica dentro de qué **elemento del DOM** se debe mostrar el formulario y las funciones **callback** para ejecutarse durante el proceso.

### Callbacks

<CardGroup cols={3}>
  <Card title="responseCallback" icon="circle-check">
    Se ejecuta cuando el componente entrega una respuesta del proceso.
  </Card>

  <Card title="trackingCallback" icon="chart-line">
    Se ejecuta por cada evento disparado durante el proceso.
  </Card>

  <Card title="onErrorCallback" icon="circle-xmark">
    Se ejecuta cuando hay un error durante el proceso.
  </Card>
</CardGroup>

<Warning>
  No uses `meta.status.code` como validador de pago autorizado o denegado. Este código solo indica el resultado del procesamiento del servicio. Para una autorización, valida el estado de la transacción y confirma el resultado desde backend antes de cerrar la orden.
</Warning>

### Casos de uso

<Tabs>
  <Tab title="Autorización con Wallet">
    ```json theme={"system"}
        {
            "action": "authorize",
            "channel": "ecommerce",
            "merchant_code": "your_merchant_code",
            "merchant_operation_number": "976867",
            "payment_details": {
                "amount": "387000",
                "currency": "604",
                "billing": {
                    "first_name": "Mateo",
                    "last_name": "Zayas Meza",
                    "email": "Mateo_ZayasMeza85@yahoo.com",
                    "phone": { "country_code": "51", "subscriber": "945831902" },
                    "location": {
                        "line_1": "Poblado Concepción 7",
                        "line_2": "Puerta 249",
                        "city": "LIMA",
                        "state": "LIMA",
                        "country": "PE"
                    }
                },
                "wallet": { "user_id": "72661927" }
            }
        }
    ```
  </Tab>

  <Tab title="Formulario de afiliación">
    ```json theme={"system"}
        {
            "action": "subscribe",
            "merchant_affiliation_code": "122947_RPS_USER",
            "merchant_code": "your_merchant_code",
            "type": "MANUAL",
            "currency": "604",
            "beneficiary": {
                "first_name": "Pilar",
                "last_name": "Ordóñez Tirado",
                "email": "Pilar.OrdonezTirado61@gmail.com",
                "phone": { "country_code": "51", "subscriber": "965097539" },
                "identity_document": {
                    "type": "DNI",
                    "identifier": "38216803",
                    "country": "PE"
                },
                "location": {
                    "line_1": "Colonia Victor Manuel 2498",
                    "city": "LIMA",
                    "state": "LIMA",
                    "country": "PE"
                }
            },
            "additional_fields": {
                "FACTURACION_ID": "133445",
                "PLAN": "POST PAGO 250"
            }
        }
    ```
  </Tab>

  <Tab title="Afiliación con Wallet">
    ```json theme={"system"}
        {
            "action": "subscribe",
            "merchant_affiliation_code": "023007_RPS_USER",
            "merchant_code": "your_merchant_code",
            "type": "MANUAL",
            "currency": "604",
            "beneficiary": {
                "first_name": "Mónica",
                "last_name": "Duarte Deleón",
                "email": "Monica.DuarteDeleon89@nearbpo.com",
                "phone": { "country_code": "51", "subscriber": "944169494" },
                "identity_document": {
                    "type": "DNI",
                    "identifier": "41134394",
                    "country": "PE"
                },
                "location": {
                    "line_1": "Ferrocarril Pilar Quintairos 45",
                    "city": "LIMA",
                    "state": "LIMA",
                    "country": "PE"
                }
            },
            "additional_fields": {
                "FACTURACION_ID": "133445",
                "PLAN": "POST PAGO 250"
            },
            "wallet": { "user_id": "72661927" }
        }
    ```
  </Tab>

  <Tab title="Actualizar afiliación">
    ```json theme={"system"}
        {
            "action": "update_subscription",
            "merchant_affiliation_code": "10011_LEVIS",
            "merchant_code": "your_merchant_code"
        }
    ```
  </Tab>

  <Tab title="Actualizar afiliación con Wallet">
    ```json theme={"system"}
        {
            "action": "update_subscription",
            "merchant_affiliation_code": "10011_LEVIS",
            "merchant_code": "your_merchant_code",
            "wallet": { "user_id": "72661927" }
        }
    ```
  </Tab>
</Tabs>

### Response de afiliación

<AccordionGroup>
  <Accordion title="Datos de la afiliación">
    | Campo | Tipo | Obligatorio | Descripción |
    | - | - | - | - |
    | `success` | Boolean | SI | Indica si el proceso se realizó correctamente. |
    | `affiliation.affiliation_id` | String (UUID) | SI | ID de la afiliación generado por el sistema. |
    | `affiliation.merchant_affiliation_code` | String | SI | Código de afiliación generado por el comercio. |
    | `affiliation.merchant_code` | String (UUID) | SI | Código del comercio. |
    | `affiliation.state` | String | SI | Estado de la afiliación. Ej.: `ACTIVE`. |
    | `affiliation.type` | String | SI | Tipo de afiliación. Ej.: `MANUAL`. |
    | `affiliation.frequency` | String | NO | Frecuencia de los cobros. |
    | `affiliation.amount` | String | NO | Monto de la afiliación en centavos. |
    | `affiliation.max_amount` | String | NO | Monto máximo permitido. |
    | `affiliation.currency` | String (ISO 4217) | SI | Moneda de los cobros. |
  </Accordion>

  <Accordion title="Datos del beneficiario">
    | Campo | Tipo | Obligatorio | Descripción |
    | - | - | - | - |
    | `affiliation.beneficiary.first_name` | String | SI | Nombres del beneficiario. |
    | `affiliation.beneficiary.last_name` | String | SI | Apellidos del beneficiario. |
    | `affiliation.beneficiary.email` | String | SI | Correo electrónico. |
    | `affiliation.beneficiary.phone.country_code` | String | SI | Código del país del teléfono. |
    | `affiliation.beneficiary.phone.subscriber` | String | SI | Número de teléfono. |
    | `affiliation.beneficiary.identity_document.type` | String | NO | Tipo de documento. |
    | `affiliation.beneficiary.identity_document.identifier` | String | NO | Número de documento. |
    | `affiliation.beneficiary.identity_document.country` | String | NO | País del documento. |
    | `affiliation.beneficiary.location.line_1` | String | SI | Dirección principal. |
    | `affiliation.beneficiary.location.city` | String | SI | Ciudad. |
    | `affiliation.beneficiary.location.state` | String | SI | Departamento o región. |
    | `affiliation.beneficiary.location.country` | String | SI | País. |
  </Accordion>

  <Accordion title="Datos de la tarjeta">
    | Campo | Tipo | Obligatorio | Descripción |
    | - | - | - | - |
    | `affiliation.card.token` | String | SI | Token de la tarjeta afiliada. |
    | `affiliation.card.brand` | String | SI | Marca de la tarjeta. Ej.: VISA, MSCD. |
    | `affiliation.card.bin` | String | SI | BIN de la tarjeta. |
    | `affiliation.card.last_pan` | String | SI | Últimos 4 dígitos de la tarjeta. |
    | `affiliation.card.issuer_name` | String | NO | Nombre del emisor de la tarjeta. |
    | `affiliation.card.card_holder_name` | String | SI | Nombre del titular de la tarjeta. |
    | `meta.status.code` | String | SI | Código de resultado técnico del procesamiento. No valida si un pago fue autorizado o denegado. |
    | `meta.status.message_ilgn[].locale` | String | SI | Idioma del mensaje de respuesta. |
    | `meta.status.message_ilgn[].value` | String | SI | Descripción del resultado. |
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.