Consideraciones
Para utilizar el formulario de tokenización de tarjetas se debe considerar los siguiente:
- El formulario está disponible en:
- Sandbox: http://sandbox-tokenizeform.greenpay.me/
- Producción: https://tokenizeform.greenpay.me/
- Tener una session y token de una orden de tokenización que no haya excedido los 30 minutos establecidos de vencimiento. Además, la orden debió ser creada con el parámetro callback, para mas información visite este enlace.
- El formulario de tokenización de Greenpay solo esta disponible para aplicaciones web.
Pasos para actualizar el token
Una vez obtenida la respuesta (session, token) de la orden de tokenización, se debe redireccionar desde el sitio del comercio hacia el formulario de Greenpay, de la siguiente manera:
- Generar la orden de tokenización (session y token) en sandbox o producción, según el ambiente.
- Tener el token de tarjeta que quiere actualizar.
- Construir la URL:
- Sandbox: http://sandbox-tokenizeform.greenpay.me/{{session}}?{{token_tarjeta}}
- Producción: https://tokenizeform.greenpay.me/{{session}}?{{token_tarjeta}}
A continuación, se muestra un ejemplo en Javascript de cómo hacer el redireccionamiento.
const express = require("express");
const app = express();
const tokenToUpdate = "5eb37ba3-f439-4401-8d5e-4d9302c2ccc9"
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.get("/order", async function (req, res)
{
try {
const security = await postOrder(order);
} catch (err) {
res.send(err);
}
})
Al hacer el redireccionamiento, se les presentará el siguiente formulario con los datos de la tarjeta actual asociados al token.
Cuando se obtiene la respuesta, el formulario la envía al URL callback de la orden de tokenización. La respuesta es un JSON codificado en BASE64, como se muestra en la siguiente imagen:
Se requiere que exista una función en el destino (callback) que capture la respuesta en BASE 64 y lo de-codifique. A continuación, se muestra un ejemplo de cómo obtener la respuesta.
app.get("/callback/:data", async function (req, res) {
try {
//get the response in base64
const data = req.params.data;
//decode the response in base64
var responsejson = Buffer.from(data, 'base64').toString();
console.log(responsejson);
res.send(JSON.parse(responsejson));
} catch (err) {
res.send(err);
}
});
A continuación, se muestra un ejemplo de la respuesta JSON
{
"status": 201,
"requestId": 1,
"result": {
"token": "fb3d1a7b-9cb1-45b7-b49d-b2a3efd98371",
"last_digits": "7777",
"bin": "477777"
},
"expiration_date": "2109",
"brand": "Visa",
"nickname": "Visa",
"errors": [],
"_signature": "5005b0d596e6078.....c35bbbd9dcd44431100"
}
3. Hacer cobro sobre un token