Autenticación y firma
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());