Consultar o resultado da sessão de autenticação
Apresentação
Esta seção descreve como usar o serviço da Web PCI/Authentication/GetSession para obter o resultado da autenticação e solicitar autorização.
Caso de uso
O Serviço Web PCI/Authentication/CreateSession é usado para autenticar o titular do cartão de pagamento. O resultado da autenticação contém os dados necessários para a solicitação de autorização, como o CAVV (para mais informações: Guia de Integração (modo simples) ).
O resultado da autenticação é recuperado pelo EC:
- automaticamenteno IAN, informado na solicitação para o Web Service:PCI/Authentication/CreateSession( campo
ianTargetUrl
).
No caso de ausência de resposta no IAN, use o Web Service PCI/Authentication/GetSession, após o vencimento da sessão de autenticação (10 minutos) para recuperar o resultado da autenticação.
Solicitação
- Use o campo
operationSessionId
, presentes no resultado da autenticação. Este campo é encontrado na resposta do Web ServicePCI/Authentication/CreateSession.
Exemplo de resposta
{
"webService":"PCI/Authentication/CreateSession",
"version":"V4",
"applicationVersion":"6.0.0",
"serverDate":"2023-04-16T11:11:21+00:00",
"ticket":"839ecda45f6449a8869747a80c26b2d2",
"applicationProvider":"LYRA",
"metadata":null,
"status":"SUCCESS",
"mode":"TEST",
"serverUrl":"https://api.lyra.com",
"_type":"V4/WebService/Response",
"answer":{
"operationSessionId":"30641640cba14eab8e6766094fd201da",
"operationUrl":"https://api.lyra.com/api-payment/V4/Charge/Public/Authenticate/Session/30641640cba14eab8e6766094fd201da;JSESSIONID=7A4beEA2d5fdbFeA7389F3B91a7bDBaBc8DA9df5.default-hostname",
"_type":"V4/PCI/Authentication/AuthenticationSessionResponse"
}
}
No exemplo:
answer.operationSessionId
: "30641640cba14eab8e6766094fd201da"
- Chamar o WebService
PCI/Authentication/GetSession com o campooperationSessionId
.
PARÂMETRO | REQUISITO | Descrição |
---|---|---|
Sim | Código único da sessão de autenticação. |
Resposta
O objeto AuthenticationResponseData é a resposta do PCI/Authentication/GetSession e contém os seguintes parâmetros:
PARÂMETRO | Descrição |
---|---|
token único de autenticação, no formato UUID. | |
Código único da sessão de autenticação. | |
Tipo de autenticação que ocorreu. | |
Campo é procedente do campo dsTransId do protocolo 3DS V2 | |
Valor do código da transação de autenticação conhecido pela rede bancária. | |
Tipo do valor de autenticação. | |
Valor de autenticação final (em função do DS este valor pode se chamar CAVV, AEVV ou AAV). Uma cadeia de caracteres codificados com base64 de 28 caracteres de comprimento. | |
value.status | O status de autenticação, ou seja o resultado positivo/negativo da autenticação. |
O Commerce Indicator, chamado ECI (Electronic Commerce Indicator) para o protocolo 3DS. Indicador retornado pelo ACS para apresentar os resultados da tentativa de autenticação do portador do cartão. | |
value.reason.code | Código adicional informativo sobre a origem do resultado. Ex: DS_TIMEOUT. |
value.reason.message | Mensagem adicional informativa sobre a origem do resultado. |
protocol.name | Nome do protocolo de autenticação do portador do cartão. |
protocol.version | Versão do protocolo de autenticação do portador do cartão. |
protocol.network | Rede na qual o cartão foi autenticado. |
Indica se o EC solicita um challenge ou não. | |
protocol.simulation | Booleano que indica se a autenticação deve ser realizada em modo simulação. |
Veja todos os campos em nosso playground:
- AuthenticationResponseData do tipo AuthenticationResult
Exemplo de solicitação e resposta
- Chamada ao Web Service PCI/Authentication/CreateSession.
Solicitação
{ "amount": 1230, "currency": "EUR", "transactionCategory": "PAYMENT", "productType": "GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid": "9876357" }, "paymentForm":{ "pan": "4970110000000013", "expiryMonth": "02", "expiryYear": "24", "networkPreference": "VISA" }, "protocolRequest": { "name": "THREEDS", "version": "2", "challengePreference": "NO_PREFERENCE" }, "ianTargetUrl": "https://myiantargeturl.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", "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"]; ?>
Resposta
{
"webService":"PCI/Authentication/CreateSession",
"version":"V4",
"applicationVersion":"6.0.0",
"serverDate":"2023-04-16T11:11:21+00:00",
"ticket":"839ecda45f6449a8869747a80c26b2d2",
"applicationProvider":"LYRA",
"metadata":null,
"status":"SUCCESS",
"mode":"TEST",
"serverUrl":"https://api.lyra.com",
"_type":"V4/WebService/Response",
"answer":{
"operationSessionId":"30641640cba14eab8e6766094fd201da",
"operationUrl":"https://api.lyra.com/api-payment/V4/Charge/Public/Authenticate/Session/30641640cba14eab8e6766094fd201da;JSESSIONID=7A4beEA2d5fdbFeA7389F3B91a7bDBaBc8DA9df5.default-hostname",
"_type":"V4/PCI/Authentication/AuthenticationSessionResponse"
}
}
No exemplo:
answer.operationSessionId
: "30641640cba14eab8e6766094fd201da"
- Chamada ao Web Service PCI/Authentication/GetSession.
Solicitação
{ "operationSessionId": "30641640cba14eab8e6766094fd201da" }
Resposta
{
"webService":"PCI/Authentication/GetSession",
"version":"V4",
"applicationVersion":"6.0.0",
"serverDate":"2023-04-16T11:11:21+00:00",
"ticket":"839ecda45f6449a8869747a80c26b2d2",
"applicationProvider":"LYRA",
"metadata":null,
"status":"SUCCESS",
"mode":"TEST",
"serverUrl":"https://api.lyra.com",
"_type":"V4/WebService/Response",
"answer":{
"id": "e1180f84-ed34-4511-b160-bd2a79c5823a",
"protocol": {
"name": "THREEDS",
"version": "2.2.0",
"network": "VISA",
"challengePreference": "NO_PREFERENCE",
"simulation": true,
"_type": "V4/Charge/Authenticate/Protocol"
},
"value": {
"authenticationType": "CHALLENGE",
"authenticationId": {
"authenticationIdType": "dsTransId",
"value": "64305551-aaf8-4ed8-87f0-93edc79298fc",
"_type": "V4/Charge/Authenticate/AuthenticationId"
},
"authenticationValue": {
"authenticationValueType": "CAVV",
"value": "F2lYFh91NAcDOD+I3OTQSjdMDA4=",
"_type": "V4/Charge/Authenticate/AuthenticationValue"
},
"status": "SUCCESS",
"commerceIndicator": "05",
"extension": {
"authenticationType": "THREEDS_V2",
"threeDSServerTransID": "e1180f84-ed34-4511-b160-bd2a79c5823a",
"dsTransID": "64305551-aaf8-4ed8-87f0-93edc79298fc",
"acsTransID": "06729a8f-083e-4e77-8167-b9781797f778",
"requestorName": "Lyra SMS",
"_type": "V4/Charge/Authenticate/AuthenticationResultExtensionThreedsV2"
},
"reason": {
"_type": "V4/Charge/Authenticate/AuthenticationResultReason"
},
"_type": "V4/Charge/Authenticate/AuthenticationResult"
},
"_type": "V4/AuthenticationResponseData"
}
}
3. Análise do resultado da autenticação
O processo de autenticação está finalizado. A resposta contém os dados necessários para realizar a solicitação de autorização, como o CAVV..