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

El pago en un clic también se conoce como pago por alias o pago por nombre de usuario. También se usa el término token de pago para designar un alias.

El pago por alias permite a las webs comerciales ofrecer a sus clientes la posibilidad de asociar un método 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 bancaria).

Referencia del cliente y alias

Hay 2 tipos de nombre de usuario:

  • La referencia cliente (o cuenta del cliente). Es generado por el sitio del comerciante y se refiere a la referencia que identifica al comprador. La forma de administrar estas cuentas es de manera libre (por ejemplo, puede ser una dirección de correo electrónico asociada a una contraseña, lo que permite la identificación del cliente en el sitio). La información de la cuenta del cliente es almacenada por el sitio del comerciante.
  • El alias (o identificador de método de pago). Designa un medio de pago (tarjeta bancaria, cuenta bancaria, etc.) y un conjunto de datos relacionados con su titular. Se asocia con una referencia del cliente (o cuenta del cliente). Los datos bancarios están almacenados y protegidos por la plataforma de pago que cuenta con la aprobación de PCI-DSS necesaria para almacenar los números de tarjetas. Solo el alias pasa durante los intercambios.

Nota: la plataforma de pago no efectúa ninguna verificación sobre la unicidad de la referencia (o Cuenta de cliente). El alias es único y puede ser generado ya sea por la web del comercio o por la plataforma.

Pago con alias

Los alias permiten:

  • El pago en 1 clic, rápido y seguro. El comprador ya no tendrá que ingresar sus datos bancarios durante los siguientes 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 sea requerido visualizar el criptograma si ésta posee uno.
  • Pago por suscripción. Cada cuenta de cliente está asociada con una recurrencia y un monto, con una duración limitada o no en tiempo.

Bajo ciertas condiciones (consultar con el interlocutor de la plataforma de pago), es posible compartir las identificaciones (alias) entre varias entidades jurídicas. Las autenticaciones compartidas por varias entidades jurídicas deben ser únicas e imperativamente creadas por la plataforma de pago.

Creación de un alias durante el cobro

Para crear un Alias, hay que definir el parámetro formAction en REGISTER_PAY en la llamada al servicio web Charge/CreatePayment:

    {
        "amount": 990,
        "currency": "BRL",
        "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 asunto PaymentTransaction tendrá el alias del método 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 alias sin cobro

En ciertos casos, solo querrá crear un alias sin efectuar ningún cobro. Para ello, haga una transacción de 1 euro con validación manual:

    {
        "amount": 100,
        "currency": "BRL",
        "formAction": "REGISTER_PAY",
        "customer": {
            "email": "sample@example.com",
            "orderId": "myOrderId-999999"
        },
        ,
        "transactionOptions": {
            "cardOptions": {
                "manualValidation": "YES"
            }
        }  
    }
    /**
 * 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"];

?>
<!DOCTYPE html>
<html>

Cuando el parámetro manualValidation esté definido como YES, la retención automática se desactiva. Esto significa que la transacción no será validada automáticamente por la noche y, por tanto, será anulada. Para más información, consulte ¿Qué es el modo de validación?

De igual forma, usted mismo puede anular la transacción inmediatamente utilizando el servicio web Transaction/CancelOrRefund

Utilización de un alias en API REST

Si anteriormente registró un método de pago (alias de tarjeta), puede registrar un pago directamente utilizando el pago por alias. Gracias a este método, el comprador no tiene que ingresar de nuevo los datos de la tarjeta.

Un alias de tarjeta es similar a:

Para utilizarlo, solo hay que enviar el alias que ya se ha creado utilizando el servicio web kCharge/CreatePayment .

Ejemplo:

    {
        "amount": 990,
        "currency": "BRL",
        "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 retorna 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"
}