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());