Esta é uma tradução automática

Testando com a API Rapid Lodging e o 3DS 2.0

Teste sua implementação de SCA com cenários específicos suportados pelas APIs.

Para testar a API Rapid Lodging, inclua um cabeçalho HTTP adicional chamado test na solicitação HTTP e use um dos valores suportados para essa API para testar um cenário compatível.

No fluxo de reserva com autenticação forte do cliente (SCA), as respostas de teste de Rapid API também podem ser usadas para testar os métodos da biblioteca de conectores 3D-Secure (3DS).

Registrar pagamento

Os seguintes valores de cabeçalho de teste resultam em diferentes valores de encoded_init_config na resposta da API e diferentes códigos de resposta HTTP. O encoded_init_config pode ser passado para a chamada initSession da biblioteca JavaScript para acionar diferentes casos de teste dentro da biblioteca do conector 3DS.

Valor do cabeçalho de testeCódigo de HTTP e respostaCaso de teste initSession
padrão201 – Resposta padrãoSUCCESS
init_skip201 – Resposta sem encoded_init_configNão compatível
init_fail201 – Resposta padrãoFAILED
init_timeout201 – Resposta padrãoTIMEOUT
internal_server_error500 – Erro interno do servidor—
internal_server_error503 - Servidor indisponível—

Nota: Use init_skip para casos de teste dentro da Biblioteca de Conectores 3DS encoded_init_config que podem ser passados ​​para initSession e forçar um statusCode de IGNORADO.

Criar reserva

Além dos cabeçalhos de teste definidos nas solicitações de teste da API Rapid Lodging para o fluxo de reserva non-SCA, valores de cabeçalho de teste adicionais são suportados para o fluxo de trabalho SCA.

>> Leia mais sobre como solicitar testes de admissão

Os valores do cabeçalho de teste resultam em diferentes valores encodedChallengeConfig que podem ser passados ​​para a chamada de desafio da biblioteca JavaScript para acionar vários casos de teste.

Valor do cabeçalho de testeCódigo de HTTP e respostaCaso de teste initSession
complete_payment_session201 – Response with complete payment session linkSUCCESS sem interação do usuário com iframe
complete_payment_session_show201 – Response with complete payment session linkSUCCESS/FAILED com interação do usuário com iframe
complete_payment_session_fail201 – Response with complete payment session linkFAILED sem interação do usuário com iframe
complete_payment_session_timeout201 – Response with complete payment session linkTIMEOUT
complete_payment_session_error201 – Response with complete payment session linkERROR

Além dos cabeçalhos de teste definidos nas solicitações de teste da API Rapid Lodging para o fluxo de reserva non-SCA, valores de cabeçalho de teste adicionais são suportados para o fluxo de trabalho SCA.

>> Leia mais sobre como solicitar testes de admissão

Os valores do cabeçalho de teste resultam em diferentes valores encodedChallengeConfig que podem ser passados ​​para a chamada de desafio da biblioteca JavaScript para acionar vários casos de teste.

Valor do cabeçalho de testeCódigo de HTTP e respostaCaso de teste initSession
complete_payment_session201 – Response with complete payment session linkSUCCESS sem interação do usuário com iframe
complete_payment_session_show201 – Response with complete payment session linkSUCCESS/FAILED com interação do usuário com iframe
complete_payment_session_fail201 – Response with complete payment session linkFAILED sem interação do usuário com iframe
complete_payment_session_timeout201 – Response with complete payment session linkTIMEOUT
complete_payment_session_error201 – Response with complete payment session linkERROR

Concluir sessão de pagamento

Os valores do cabeçalho de teste resultam em diferentes casos de erro que podem ocorrer ao tentar concluir um pagamento e confirmar uma reserva.

Valor do cabeçalho de testeCódigo de HTTP e resposta
payment_declined400 - Payment declined response
price_mismatch409 - Price mismatch response
rooms_unavailable410 - Rooms unavailable response

Biblioteca de conectores 3DS e iframe 3DS

Para testar o conector 3DS sem dependências externas, valores de parâmetros específicos correspondem às respostas de método com suporte. Esse comportamento só tem suporte quando o iframe é carregado com o teste do URL do sandbox.

Inicializar sessão

Os valores suportados do initSessionResponse statusCode podem ser testados variando o initSessionRequest encoded_init_config.

Valor do statusCodeValor do teste encodeInitConfig
SUCCESSW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJTVUNDRVNTIn1d
FAILEDW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJGQUlMRUQifV0=
TIMEOUTW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJUSU1FT1VUIn1d
SKIPPEDNão compatível no momento.

Observação: os valores encoded_init_config também podem ser gerados com os cabeçalhos de teste compatíveis da API de registro de pagamentos.

Challenge

Os valores suportados do challengeResponse statusCode podem ser testados variando o challengeRequest encoded_challenge_config.

Valor do statusCodeValor do teste encoded_Challenge_configDescrição
SUCCESSW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlNVQ0NFU1MifV0Sem interação do usuário com iframe
SUCCESS / FAILEDW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlNIT1cifV0Sem interação do usuário com iframe
FAILEDW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIkZBSUxFRCJ9XQSem interação do usuário com iframe
TIMEOUTW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlRJTUVPVVQifV0
ERRORW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIkVSUk9SIn1d

Os valores encoded_init_config também podem ser gerados com os cabeçalhos de teste suportados para o fluxo SCA da API de Reservas.

Nota: Ao testar o valor do código de status do desafio SUCESSO ou FALHA com base na entrada do usuário no iframe, a resposta do método de desafio aguardará a conclusão da interface de autenticação simulada no iframe.

Exemplo de UI (interface do usuário) em iframe 3DS:

Exemplo de iframe 3DS

Exemplo de uso

Este exemplo demonstra como usar os valores de parâmetros predefinidos para testar a biblioteca em um desafio 3DS sem que o usuário precise interagir com o iframe.

var c = new PayThreeDSConnector.ThreeDSConnector('threedsiframe', 'https://static.pay.expedia.com'); // change to match the 3DS iframe ID
c.setup({ referenceId: '1000' })
    .then((setupResponse) => {
        console.log('Setup Output: ', setupResponse);
        return c.initSession({
            paymentSessionId: 1,
            encodedInitConfig: 'W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJTVUNDRVNTIn1d',
        }); // SUCCESS
    })
    .then((initResponse) => {
        console.log('InitSession Output: ', initResponse);
        $('#threedsIframeModal').modal(); // replace with code to show the modal containing the 3DS iframe
        return c.challenge({
            paymentSessionId: 1,
            encodedChallengeConfig:
                'W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlNVQ0NFU1MifV0=',
        }); // SUCCESS
    })
    .then((challengeResponse) => {
        console.log('Challenge Output: ', challengeResponse);
    })
    .finally(() => {
        $('#threedsIframeModal').modal('hide'); // replace with code to hide the modal containing the 3DS iframe
    });

Autenticação 3DS e pagamento posterior

Ao reservar com o modelo pay-later, a Expedia não cobra no cartão. Em vez disso, enviamos ao provedor para que ele processe o pedido. O provedor poderá usar essas informações para validar o cartão antes da reserva. O viajante deverá efetuar o pagamento pessoalmente à chegada.

No entanto, às vezes os planos mudam, caso em que o provedor pode cobrar uma taxa no-show. Essas cobranças podem ser afetadas pelas regulamentações da SCA, pois envolvem a cobrança em um cartão quando o viajante não está presente.

Se as transações forem afetadas, os pagamentos podem falhar ou os vendedores podem sofrer penalidades das bandeiras de cartão se a cobrança for non-compliant.

Para proteger nosso relacionamento com nossos fornecedores e continuar atendendo nossos parceiros, a Expedia Group está oferecendo um caminho opcional para a conformidade: a Expedia Group pode fornecer autenticação em nome deles. Isso permite que os fornecedores protejam seus negócios e garante que a Rapid API possa continuar oferecendo a mesma gama diversificada de opções.

Na API Rapid Lodging, isso se apresenta na forma do indicador payment_registration_recommended=true no arquivo de conteúdo propriedade e no conteúdo propriedade, o que pode ajudar a identificar um propriedade quando ele estiver potencialmente envolvido no projeto.

Possíveis impactos em uma integração

Se você deseja oferecer fornecedores que podem exigir autenticação segura, o processo de reserva deve ser compatível com 3DS. Sem suporte para 3DS, a reserva dessas opções pode falhar se o banco card-issuing determinar que a autenticação é necessária para a transação.

Quando uma taxa no-show for cobrada, Rapid API será o Merchant registrado. A descrição da cobrança na nota fiscal do cartão será definida pela sua organização, não pelo propriedade. Para personalizar esse texto, entre em contato com o suporte aos parceiros da Rapid.

Para manter a conformidade com os requisitos das bandeiras de cartão e com o processo de lançamento da campanha Rapid API, utilize a API de Pagamentos Aceitos para exibir oprocessing_country na página check-out em caso de no-show. Isso é necessário para todas as transações em que Rapid API é o Merchant registrado, e pode ocorrer se o 3DS for usado e ocorrer um no-show.

Como mitigar os impactos da integração

Se uma integração Rapid API não suportar autenticação segura no fluxo de reservas, o risco de reservas com falha pode ser reduzido eliminando os fornecedores cujos anúncios não estejam em conformidade. Entre em contato com o Suporte a Parceiros da Rapid para que as taxas afetadas sejam removidas das suas respostas da API de Disponibilidade.

Ao utilizar uma ferramenta de agente, a transação fica isenta de SCA (Autenticação Forte do Cliente) de acordo com os regulamentos. Utilize a API de Disponibilidade.sales_channel campo para indicar isso.

Tratamento de erros

A API de criação de reserva e a API de conclusão de sessão de pagamento podem resultar em reservas confirmadas e transações de pagamento.

A sua integração deve considerar as seguintes instruções para evitar perdas financeiras e casos de operação de cliente:

OrigemFunçãoConfiguração de tempo limite sugeridoProcesso de recuperação de errosAções necessárias
Rapid APIVerificação de preço de pré-reserva para token de registro de pagamento10 segundosTente outra vez ou selecione outra propriedade, quarto ou tarifa-
JavaScriptConfiguração do conector 3DS10 segundosRepita a mesma solicitação-
Rapid APIRegistrar sessão de pagamento10 segundosTente novamente a mesma solicitação sem o processo "Expect: 100-continue".-
JavaScriptIniciar sessão de pagamento10 segundosRepita a mesma solicitação-
Rapid APICriar reserva90 segundosRepita a mesma solicitaçãoPara todos os erros: Recupere a reserva com affiliate_reference_id
JavaScriptExibir desafio de autenticação10 segundosRepita a mesma solicitação-
JavaScriptEsperar por challenge.statusCode180 ~ 1.200 segundosSolicitar conclusão da sessão de pagamento-
Rapid APIConcluir sessão de pagamento90 segundosRepita a mesma solicitaçãoPara todos os erros: Recupere a reserva com affiliate_reference_id
Rapid APIPara todos os erros: Recupere a reserva com affiliate_reference_id30 segundosRepita a mesma solicitaçãoPara todos os erros: aguarde 90 segundos antes de tentar mais uma vez, para confirmar o status final das reservas pelo código de resposta da API 404 ou 200

>> Saiba mais sobre a SCA

>> Saiba mais sobre nossa solução SCA usando o 3DS 2.0

Esta página foi útil?
Como podemos melhorar esse conteúdo?
Agradecemos por nos ajudar a melhorar.