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 .
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
Al crear un pago Del lado del servidor
- cURL
- Node.js
- PHP
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"
}'
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'
});
$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 disponibles.
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
- cURL
- Node.js
- PHP
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
}'
const {Monei} = require('@monei-js/node-sdk');
const monei = new Monei('pk_test_36cf3e8a15eff3f5be983562ea6b13ec');
monei.payments.confirm('26d1f09c42bb59a29b06e280f9553cd5', {
paymentToken: '7cc38b08ff471ccd313ad62b23b9f362b107560b',
generatePaymentToken: true
});
$monei = new Monei\MoneiClient('pk_test_36cf3e8a15eff3f5be983562ea6b13ec');
$monei->payments->confirm(
'832b77d1a4b372349a7ae0bb1b2af059',
[
'paymentToken' => '7cc38b08ff471ccd313ad62b23b9f362b107560b',
'generatePaymentToken' => true
]
);
Consulta todos los parámetros de solicitud disponibles.
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.
<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 para más detalles.
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.
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 con este token para omitir el formulario de pago. Ten en cuenta que el cliente deberá completar igualmente la verificación .
MONEI no devolverá el paymentToken en la solicitud HTTP POST a la callbackUrl por motivos de seguridad. Debes llamar al endpoint obtener pago para obtener el token. El paymentToken generado no caduca y solo debe utilizarse del lado del servidor.
3. Cobra con un método de pago guardado
Cómo cobras con un paymentToken guardado depende de si el cliente está presente:
- (un clic) — el cliente está en tu sitio y elige su tarjeta guardada. Crea un pago con el
paymentTokenpara saltarte el formulario. Es posible que el cliente aún tenga que completar 3D Secure. - Iniciado por el comercio / sin el cliente presente — cobras al cliente cuando no está presente (por ejemplo, plazos o tu propia facturación recurrente). Marca el primer pago de la serie con el parámetro
sequencey, después, cobra los pagos siguientes con elpaymentTokeny elsequenceIdde ese primer pago. Los pagos iniciados por el comercio no piden al cliente completar 3D Secure cada vez. Consulta la referencia de crear pago para ver los campos exactos desequence.
Para la facturación recurrente estándar, usa MONEI Suscripciones — guarda el método de pago, gestiona el ciclo de facturación, los reintentos y la secuencia iniciada por el comercio por ti, así no tienes que gestionar tokens manualmente.
4. Guarda métodos de pago en un cliente
En lugar de guardar los tokens en tu propio servidor, puedes dejar que MONEI los guarde en un cliente. Un cliente es tu registro de un comprador. Créalo con el endpoint crear cliente o con la mutación de GraphQL createCustomer.
- Vincula los pagos. Envía el ID del cliente como
customerIdcuando crees un pago. MONEI guarda el método de pago en ese cliente. Consulta los métodos guardados con el endpoint listar métodos de pago o con la consultacustomerPaymentMethods. - Método de pago predeterminado. El primer método de pago reutilizable que guarda un cliente pasa a ser el predeterminado (
defaultTokenId). Puedes cambiardefaultTokenIda otro método de pago reutilizable del cliente cuando actualizas el cliente. MONEI solo rellena un predeterminado vacío, así que tu valor se mantiene. - Cobra el predeterminado. Envía
customerIdconuseDefaultPaymentMethod: truey sinpaymentTokennipaymentMethod. MONEI cobra el método de pago predeterminado del cliente. El pago se rechaza si el cliente no tiene un predeterminado.
{
"amount": 110,
"currency": "EUR",
"orderId": "14379133960356",
"customerId": "a4e1d1dd-e0c2-4f7a-a2b1-2b0f1f9b6b1e",
"useDefaultPaymentMethod": true
}
Para eliminar un método de pago guardado, usa el endpoint eliminar método de pago. Si era el predeterminado, el predeterminado queda vacío, y el siguiente método de pago reutilizable que guarde el cliente pasa a ser el nuevo predeterminado. Al eliminar un cliente también se eliminan todos sus métodos de pago guardados, que es lo que suele necesitar una solicitud de supresión de datos. Los pagos ya realizados se conservan.
MONEI rechaza ambas eliminaciones con 409 mientras sigan en uso. No puedes eliminar un cliente mientras una suscripción en estado ACTIVE, TRIALING, PAUSED o PAST_DUE lo indique. No puedes eliminar un método de pago mientras una suscripción activa lo cobre. Cancela o cambia esas suscripciones primero.
El customerId de un pago no tiene relación con paymentMethod.trustly.customerId, que es un identificador que Trustly devuelve para su propio titular de cuenta.