# Guardar método de pago

Para guardar un método de pago para uso futuro, debes generar un `paymentToken` al crear o confirmar el pago y, a continuación, almacenarlo en tu servidor. Este proceso se denomina habitualmente **tokenización**.

La tokenización protege los datos sensibles sustituyéndolos por un equivalente no sensible, conocido como token. El token no tiene significado ni valor externo. Es una referencia —o identificador— que, a través de un sistema de tokenización, apunta a los datos sensibles. Este proceso recopila de forma segura la información sensible de la tarjeta y evita el robo de datos.

## 1. Genera el token de pago[​](#1-genera-el-token-de-pago "Enlace directo al 1. Genera el token de pago")

### Al crear un pago `Del lado del servidor`[​](#al-crear-un-pago-del-lado-del-servidor "Enlace directo al al-crear-un-pago-del-lado-del-servidor")

<!-- -->

* cURL
* Node.js
* PHP

POST https\://api.monei.com/v1/payments

```
curl --request POST 'https://api.monei.com/v1/payments' \

--header 'Authorization: pk_test_3c140607778e1217f56ccb8b50540e00' \

--header 'Content-Type: application/json' \

--data-raw '{

    "amount": 110,

    "currency": "EUR",

    "orderId": "14379133960355",

    "generatePaymentToken": true,

    "callbackUrl": "https://example.com/checkout/callback",

    "completeUrl": "https://example.com/checkout/complete"

}'
```

server.js

```
const {Monei} = require('@monei-js/node-sdk');

const monei = new Monei('pk_test_36cf3e8a15eff3f5be983562ea6b13ec');

monei.payments.create({

  amount: 110,

  currency: 'EUR',

  orderId: '14379133960355',

  generatePaymentToken: true,

  callbackUrl: 'https://example.com/checkout/callback',

  completeUrl: 'https://example.com/checkout/complete'

});
```

server.php

```
$monei = new Monei\MoneiClient('pk_test_36cf3e8a15eff3f5be983562ea6b13ec');

$monei->payments->create([

  'amount' => 110,

  'currency' => 'EUR'

  'orderId' => '14379133960355',

  'generatePaymentToken' => true,

  'callbackUrl' => 'https://example.com/checkout/callback',

  'completeUrl' => 'https://example.com/checkout/complete'

]);
```

Consulta todos los [parámetros de solicitud](https://docs.monei.com/es/es/apis/rest/.md) disponibles.

nota

Para obtener el token de pago para uso futuro sin cobrar a tu cliente, crea un pago con los siguientes parámetros:

```
{

  "amount": 0,

  "currency": "EUR",

  "orderId": "14379133960355",

  "transactionType": "VERIF",

  "generatePaymentToken": true,

  "callbackUrl": "https://example.com/checkout/callback",

  "completeUrl": "https://example.com/checkout/complete"

}
```

### Al confirmar un pago `Del lado del servidor`[​](#al-confirmar-un-pago-del-lado-del-servidor "Enlace directo al al-confirmar-un-pago-del-lado-del-servidor")

* cURL
* Node.js
* PHP

POST https\://api.monei.com/v1/payments/:id/confirm

```
curl --request POST 'https://api.monei.com/v1/payments/26d1f09c42bb59a29b06e280f9553cd5/confirm' \

--header 'Authorization: pk_test_3c140607778e1217f56ccb8b50540e00' \

--header 'Content-Type: application/json' \

--data-raw '{

    "paymentToken": "7cc38b08ff471ccd313ad62b23b9f362b107560b",

    "generatePaymentToken": true

}'
```

server.js

```
const {Monei} = require('@monei-js/node-sdk');

const monei = new Monei('pk_test_36cf3e8a15eff3f5be983562ea6b13ec');

monei.payments.confirm({

  paymentToken: '7cc38b08ff471ccd313ad62b23b9f362b107560b',

  generatePaymentToken: true

});
```

server.php

```
$monei = new Monei\MoneiClient('pk_test_36cf3e8a15eff3f5be983562ea6b13ec');

$monei->payments->confirm(

  '832b77d1a4b372349a7ae0bb1b2af059',

  [

    'paymentToken' => '7cc38b08ff471ccd313ad62b23b9f362b107560b',

    'generatePaymentToken' => true

  ]

);
```

Consulta todos los [parámetros de solicitud](https://docs.monei.com/es/es/apis/rest/payments-confirm/.md) disponibles.

### Al enviar un formulario de pago `Del lado del cliente`[​](#al-enviar-un-formulario-de-pago-del-lado-del-cliente "Enlace directo al al-enviar-un-formulario-de-pago-del-lado-del-cliente")

Puedes pasar `generatePaymentToken: true` al enviar un formulario de pago. Esto es útil para permitir que tus clientes elijan si desean guardar el método de pago para uso futuro.

checkout.html

```
<form

  action="https://secure.monei.com/payments/{{payment_id}}/confirm"

  method="post"

  id="payment-form"

>

  <div class="card-field">

    <div id="card-input">

      <!-- A MONEI Card Input Component will be inserted here. -->

    </div>

    <!-- Used to display card errors. -->

    <div id="card-error"></div>

  </div>

  <label>

    <!-- A checkbox to save payment method -->

    <input type="checkbox" name="generatePaymentToken" value="true" />

    save payment method

  </label>

  <button type="submit" id="payment-button">Submit payment</button>

</form>
```

Consulta la integración del [método de pago con tarjeta](https://docs.monei.com/es/es/payment-methods/card/.md) para más detalles.

## 2. Obtén y almacena el token de pago[​](#2-obtén-y-almacena-el-token-de-pago "Enlace directo al 2. Obtén y almacena el token de pago")

Una vez completado el pago, el cliente es redirigido a la `completeUrl` con el parámetro de consulta **payment\_id**. Puedes obtener el `paymentToken` permanente llamando al endpoint [obtener pago](https://docs.monei.com/es/es/apis/rest/payments-get/.md).

Almacena este `paymentToken` en tu base de datos junto con la información del cliente. La próxima vez que el cliente realice una compra, [crea un pago](https://docs.monei.com/es/es/apis/rest/payments-create/.md) con este token para omitir el formulario de pago. Ten en cuenta que el cliente deberá completar igualmente la verificación 3D Secure.

nota

MONEI no devolverá el **paymentToken** en la solicitud HTTP POST a la **callbackUrl** por motivos de seguridad. Debes llamar al endpoint [obtener pago](https://docs.monei.com/es/es/apis/rest/payments-get/.md) para obtener el token. El **paymentToken** generado no caduca y solo debe utilizarse **del lado del servidor**.
