La API de VirtualPOS opera a través de una API KEY y SECRET KEY, este conjunto de llaves son únicas para cada cuenta y ambiente (sandbox o producción), y se debe recuperar desde el el portal opción Perfil > Configuración de cuenta> Integración.
La API KEY debe ser enviada en cada requerimiento en el encabezado Authorization.
Cada requerimiento debe ser firmado, y la firma debe ser incluida también en el encabezado Signature
La firma se genera utilizando la SECRET KEY y JSON Web Token (JWT). JWT es un estándar abierto (RFC 7519) que define una forma compacta y autónoma de transmitir información de forma segura entre las partes como un objeto JSON. Esta información se puede verificar y confiar porque está firmada digitalmente. Más información de este estándar lo puedes encontrar en https://jwt.io/
Para todas las peticiones se debe firmar utilizando la API KEY como parámetro del payload, junto con los atributos requeridos.
A continuación se muestra un ejemplo de firma con JWT en PHP utilizando método POST:
$payload = array();
$payload['api_key'] = <MY_API_KEY>;
$payload['uuid'] = $uuid;
$jwt_signature = JWT::encode($payload, <MY_SECRET_KEY>);
$client = new Client([
'headers' => [
'Content-Type' => 'application/json' ,
'Authorization'=> <MY_API_KEY>,
'Signature' => $jwt_signature
]
]);
$response = $client->post( $endpoint , [
'json' => [
'uuid' => $uuid
]
]);
$response_decode = json_decode($response->getBody()->getContents());
A continuación se muestra un ejemplo de firma con JWT en PHP utilizando método GET:
$payload = array();
$payload['api_key'] = <MY_API_KEY>;
$jwt_signature = JWT::encode($payload, <MY_SECRET_KEY>);
$client = new Client([
'headers' => [
'Content-Type' => 'application/json' ,
'Authorization'=> <MY_API_KEY>,
'Signature' => $jwt_signature
]
]);
$response = $client->GET( $endpoint);
$response_decode = json_decode($response->getBody()->getContents());