Creación y utilización de token (alias)

El pago en un clic también se conoce como pago por token. También se usa el término token de pago.

El pago por token permite que los sitios web comerciales ofrecezcan a sus clientes la posibilidad de asociar un medio de pago a un nombre de usuario para facilitar los pagos posteriores en la web (sin necesidad de volver a ingresar su número de tarjeta).

Pago con token

Los tokens permiten:

  • El pago en 1 clic. El comprador ya no tendrá que ingresar sus datos bancarios en los próximos pagos. En este caso, se presenta una solicitud de confirmación con un resumen de la transacción. En esta etapa, si el medio de pago es una tarjeta bancaria, es posible que se solicite el criptograma visual, si aplica.
  • Pago sin clics. Este modo permite crear una transacción a partir de un token sin interactuar con el usuario. La creación se produce durante una llamada de servidor a servidor.
  • Pago por suscripción. Cada cuenta de cliente está asociada con a recurrencia y a un monto, cuya duración puede o no estar limitada.

Bajo ciertas condiciones (consultar con el interlocutor de la plataforma de pago), es posible compartir los identificadores (tokens) entre varias entidades jurídicas. Las autenticaciones compartidas por varias entidades jurídicas deben ser únicas e generadas obligatoriamente por la plataforma de pago.

Creación de un token durante un pago

El parámetro formAction permite la creación de un token. Utilice uno de los dos valores:

formAction Descripción
ASK_REGISTER_PAY Agrega una casilla en el formulario de pago para registrar la tarjeta
REGISTER_PAY El token se creará automáticamente.

El correo electrónico es obligatorio para cualquier creación de token.

En la llamada al Servicio Web Charge/CreatePayment:

    {
        "amount": 990,
        "currency": "EUR",
        "formAction": "ASK_REGISTER_PAY",
        "orderId": "myOrderId-999999",
        "customer": {
            "email": "sample@example.com"
        }
    }
    /**
 * I initialize the PHP SDK
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/keys.php';
require_once __DIR__ . '/helpers.php';

/** 
 * Initialize the SDK 
 * see keys.php
 */
$client = new Lyra\Client();

/**
 * I create a formToken
 */
$store = array(
  "amount" => 250, 
  "currency" => "EUR", 
  "formAction" => "ASK_REGISTER_PAY",
  "orderId" => uniqid("MyOrderId"),
  "customer" => array(
    "email" => "sample@example.com"
));

$response = $client->post("V4/Charge/CreatePayment", $store);

/* I check if there are some errors */
if ($response['status'] != 'SUCCESS') {
    /* an error occurs, I throw an exception */
    display_error($response);
    $error = $response['answer'];
    throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] );
}

/* everything is fine, I extract the formToken */
$formToken = $response["answer"]["formToken"];

?>

Al final del pago, el objecto PaymentTransaction contendrá el token del medio de pago en la propiedad paymentMethodToken:

{
    "orderCycle": "CLOSED",
    "orderStatus": "PAID",
    "serverDate": "2018-10-02T16:38:13+00:00",
    "orderDetails": (...)
    "customer": (...)
    "transactions": [
    {
        "shopId": "69876357",
        "uuid": "7af034f2883240c2876f6c61c7eab8ea",
        "amount": 990,
        "currency": "EUR",
        "paymentMethodType": "CARD",
        "paymentMethodToken": "b6e51ba31f934ac5b25ccad2a52ccd56",
        (...)
        "_type": "V4/PaymentTransaction"
        }
    ],
    "_type": "V4/Payment"
}

Creación de un token sin pago

En ciertos casos, puede que desee crear un token sin registrar un pago. Para ello, deberá utilizar el Servicio Web Charge/CreateToken:

{
    "currency": "EUR",
    "orderId": "myOrderId-999999",
    "customer": {
        "email": "sample@example.com"
    }  
}
    /**
 * I initialize the PHP SDK
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/keys.php';
require_once __DIR__ . '/helpers.php';

/** 
 * Initialize the SDK 
 * see keys.php
 */
$client = new Lyra\Client();

/**
 * I create a formToken
 */
$store = array(
  "orderId" => uniqid("MyOrderId"),
  "customer" => array(
    "email" => "sample@example.com",
));

$response = $client->post("V4/Charge/CreateToken", $store);

/* I check if there are some errors */
if ($response['status'] != 'SUCCESS') {
    /* an error occurs, I throw an exception */
    display_error($response);
    $error = $response['answer'];
    throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] );
}

/* everything is fine, I extract the formToken */
$formToken = $response["answer"]["formToken"];

?>

El correo electrónico es obligatorio para cualquier creación de token.

La llamada funciona como Charge/CreatePayment. Se creará una transacción de tipo VERIFICATION.

Por lo tanto, kr-answer contendrá un objeto de tipo Payment y el token se devolverá en transactions[0].paymentMethodToken.

Uso de token: pago en un solo clic con visualización del formulario

Si ha registrado previamente un medio de pago (como una tarjeta), puede crear un pago transmitiendo el token al que se cargará en el campo paymentMethodToken durante una llamada al servicio web Charge/CreatePayment. Con este método, el comprador no necesita volver a introducir la información de su tarjeta. Se le presentará un formulario previamente rellenado para su validación.

Si su tienda está configurada para solicitar el CVV, o una autenticación 3D-Secure durante un pago por token, el formulario se ajustará automáticamente.

Para usarlo, simplemente envíe el token creado anteriormente utilizando el Servicio WebCharge/CreatePayment.

Ejemplo:

    {
        "amount": 990,
        "currency": "EUR",
        "paymentMethodToken": "b6e51ba31f934ac5b25ccad2a52ccd56"
    }
    /**
 * I initialize the PHP SDK
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/keys.php';
require_once __DIR__ . '/helpers.php';

/** 
 * Initialize the SDK 
 * see keys.php
 */
$client = new Lyra\Client();

/**
 * create a transaction with a payment method token
 */
$store = array(
  "amount" => 250, 
  "currency" => "EUR",
  "paymentMethodToken" => "b6e51ba31f934ac5b25ccad2a52ccd56"
);

/**
 * do the web-service call
 */
$response = $client->post("V4/Charge/CreatePayment", $store);

/* I check if there are some errors */
if ($response['status'] != 'SUCCESS') {
    /* an error occurs, I throw an exception */
    display_error($response);
    $error = $response['answer'];
    throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] );
}

?>

Charge/CreatePayment devuelve un formToken. A continuación, debe generar su formulario de pago utilizando el cliente JavaScript, de la misma manera que un pago simple.

Para más información, consulte: Formulario incrustado: Probar rápidamente.

Uso de token: pago sin clics sin visualización del formulario

Puede crear una transacción a partir de un token sin la interacción del usuario (sin solicitud del CVV ni autenticación 3D Secure). La llamada se realiza de servidor a servidor y devuelve una transacción (no hay notificación de fin de pago en este caso).

Para ello, realice una llamada al servicio web Charge/CreatePayment transmitiendo el token y estableciendo formAction en SILENT.

Ejemplo:

    {
        "amount": 990,
        "currency": "EUR",
        "paymentMethodToken": "b6e51ba31f934ac5b25ccad2a52ccd56",
        "formAction": "SILENT"
    }

Charge/CreatePayment devuelve directamente una transacción como:

{
    "shopId": "69876357",
    "orderCycle": "CLOSED",
    "orderStatus": "PAID",
    "serverDate": "2018-09-27T14:02:17+00:00",
    "orderDetails": (...)
    "customer": (...)
    },
    "transactions": [{
        "shopId": "69876357",
        "uuid": "5b158f084502428499b2d34ad074df05",
        "amount": 990,
        (...)
        "_type": "V4/PaymentTransaction"
    }],
    "_type": "V4/Payment"
}

Emitir una solicitud de débito SEPA

El servicio web Charge/CreatePayment se puede utilizar para emitir una solicitud de débito, siempre que el deudor haya firmado previamente un mandato de débito recurrente.

Consulte la documentación de integración del miedo de pago de SEPA Direct Debit para obtener más información sobre la firma de mandatos y la implementación de pagos recurrentes SDD.

Para emitir una solicitud de débito, llama al servicio web Charge/CreatePayment en modo SILENT, transmitiendo el RUM a debitar en el atributo paymentMethodToken.

El modo SILENT se asigna asignando al atributo formAction el valor “SILENT”. Cualquier otro valor provocará el rechazo de la solicitud.

En función de las restricciones relacionadas con los distintos plazos, el vendedor sabrá cuándo emitir una solicitud de débito. Por tanto, es él quien controla la fecha de la transferencia de fondos. El monto de los débitos puede variar de una cuota a otra.

Si la operación se realiza correctamente, el servicio web devuelve un objeto Payment. La fecha de la transferencia de fondos se devuelve en el atributo transaction.transactionDetails.cardDetails.expectedCaptureDate.

Ejemplo de solicitud:

{
  "amount": "3990",
  "currency": "EUR",
  "formAction": "SILENT",
  "paymentMethodToken": "0d75bd5f1fef4e779a4154e65abb39ca",
  "orderId": "myOrderId-605811",
  "customer": {
    "email": "sample@example.com",
    "reference": "12345678"
  }
}