Transcrição
PDF
Manual de integração via Web services V5 PayZen 2.6 Versão do documento 1.7.2 Conteúdo 1. Histórico do documento.................................................................................................................4 2. Entrar em contato com o suporte técnico............................................................................... 6 3. Apresentação dos serviços web...................................................................................................7 3.1. Descrição dos serviços web........................................................................................................................ 7 O cabeçalho SOAP HEADER................................................................................................................8 O corpo (Body).......................................................................................................................................8 3.2. Gerenciar os códigos de erro e as exceções............................................................................................. 10 Gerenciar as exceções...........................................................................................................................10 Tratar os erros aplicativos.................................................................................................................... 11 3.3. Gerenciar os códigos de retorno de uma solicitação de autorização........................................................ 15 3.4. Gerenciar os códigos de retorno retornados pelo analista de risco externo.............................................. 17 3.5. Gerenciar os códigos de erros durante um pagamento recusado.............................................................. 19 3.6. Unir as solicitações Web service (manter uma mesma sessão HTTP)..................................................... 22 3.7. Gerenciar os prazos de espera (Timeout)................................................................................................. 24 3.8. Especificar os tipos de dados....................................................................................................................25 4. Identificar-se durante as trocas................................................................................................26 4.1. Efetuar a autenticação............................................................................................................................... 27 4.2. Construir o cabeçalho SOAP HEADER da solicitação............................................................................ 28 Exemplo de código em PHP para construir o cabeçalho SOAP HEADER......................................... 30 4.3. Verificar o cabeçalho SOAP na resposta..................................................................................................31 Exemplo de código PHP para resgatar os cabeçalhos SOAP na resposta........................................... 31 5. Gerar um uuid - retro compatibilidade................................................................................. 32 5.1. Solicitação para enviar.............................................................................................................................. 32 legacyTransactionKeyRequest.............................................................................................................. 33 5.2. Resposta..................................................................................................................................................... 33 commonResponse..................................................................................................................................33 paymentResponse.................................................................................................................................. 34 6. Realizar operações comuns nas transações......................................................................... 35 6.1. Criar uma transação de pagamento 'createPayment'................................................................................. 35 Compartilhamento de códigos.............................................................................................................. 35 Solicitação para enviar..........................................................................................................................36 Resposta.................................................................................................................................................45 Criar um pagamento sem autenticação 3D Secure.............................................................................. 58 Criar um pagamento com autenticação 3D Secure.............................................................................. 61 6.2. Modificar uma transação de pagamento 'updatePayment'........................................................................ 70 Solicitação para enviar..........................................................................................................................70 Resposta.................................................................................................................................................73 6.3. Modificar os dados (carrinho) de uma transação 'updatePaymentDetails'................................................85 Solicitação para enviar..........................................................................................................................85 Resposta.................................................................................................................................................87 6.4. Cancelar uma transação de pagamento 'cancelPayment'...........................................................................99 Solicitação para enviar..........................................................................................................................99 Resposta...............................................................................................................................................100 6.5. Procurar pagamentos 'findPayments'.......................................................................................................102 Solicitação para enviar........................................................................................................................102 Resposta...............................................................................................................................................103 6.6. Reembolsar um comprador 'refundPayment'...........................................................................................106 Solicitação para enviar........................................................................................................................106 Resposta...............................................................................................................................................108 6.7. Duplicar uma transação de pagamento 'duplicatePayment'.................................................................... 121 Solicitação para enviar........................................................................................................................121 Resposta...............................................................................................................................................124 6.8. Validar uma transação de pagamento 'validatePayment'........................................................................ 137 Solicitação para enviar........................................................................................................................137 Resposta...............................................................................................................................................138 6.9. Capturar uma transação de pagamento 'capturePayment'....................................................................... 140 Solicitação para enviar........................................................................................................................140 Resposta...............................................................................................................................................141 6.10. Obter o detalhes de uma transação de pagamento 'getPaymentDetails'................................................142 Solicitação para enviar........................................................................................................................142 Resposta...............................................................................................................................................143 6.11. Verificar a autenticação 3D Secure. 'verifyThreeDSEnrollment'..........................................................156 Solicitação para enviar........................................................................................................................156 Resposta...............................................................................................................................................159 6.12. Verificar o status da autenticação 3D Secure.'checkThreeDSAuthentication'...................................... 161 Solicitação para enviar........................................................................................................................161 Resposta...............................................................................................................................................162 7. Efetuar operações específicas aos pagamento por código............................................164 7.1. Criar um alias (código) 'createToken'..................................................................................................... 165 Compartilhamento de códigos............................................................................................................ 165 Solicitação para enviar........................................................................................................................165 Resposta...............................................................................................................................................172 7.2. Criar um Token Cartão (código) a partir de uma transação 'createTokenFromTransaction'...................174 Solicitação para enviar........................................................................................................................174 Resposta...............................................................................................................................................175 7.3. Modificar um alias (código) 'updateToken'............................................................................................ 178 Solicitação para enviar........................................................................................................................178 Resposta...............................................................................................................................................184 7.4. Recuperar os detalhes de um alias (código) 'getTokenDetails'...............................................................186 Solicitação para enviar........................................................................................................................186 Resposta...............................................................................................................................................187 7.5. Rescindir um Token Cartão (código) 'cancelToken'...............................................................................192 Solicitação para enviar........................................................................................................................192 Resposta...............................................................................................................................................193 7.6. Reativar um alias (código) 'reactivateToken'.......................................................................................... 194 Solicitação para enviar........................................................................................................................194 Resposta...............................................................................................................................................195 7.7. Realizar pagamentos recorrentes (assinaturas) 'createSubscription'........................................................196 Solicitação para enviar........................................................................................................................196 Resposta...............................................................................................................................................200 7.8. Modificar uma assinatura 'updateSubscription'.......................................................................................202 Solicitação para enviar........................................................................................................................202 Resposta...............................................................................................................................................205 7.9. Recuperar os detalhes de uma assinatura 'getSubscriptionDetails'......................................................... 206 Solicitação para enviar........................................................................................................................206 Resposta...............................................................................................................................................207 7.10. Cancelar uma assinatura 'cancelSubscription'....................................................................................... 210 Solicitação para enviar........................................................................................................................210 Resposta...............................................................................................................................................211 8. Anexo................................................................................................................................................212 8.1. Exemplos em PHP...................................................................................................................................212 createPayment......................................................................................................................................224 findPayments....................................................................................................................................... 229 createToken......................................................................................................................................... 231 createSubscription............................................................................................................................... 233 cancelSubscription...............................................................................................................................236 1. Histórico do documento Versão Autor Data Comentário 1.7.2 Lyra Network 23/06/2016 • Formato fixo operationType 1.7.1 Lyra Network 01/06/2016 • Correção do quadro customerRequest em createToken e em updateToken : somente billingDetails é marcado como requerido Exclusão comentário <!--Optional:--> dos exemplos de códigos • 1.7 Lyra Network 05/2016 • • • • • • • Novo código de erro no capítulo Gerenciar os erros aplicativos (3). Adição dos valores AMEX capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. Adição do atributo transactionId (objeto paymentRequest) para as operações createPayment, refundPayment e duplicatePayment. Correção: operação checkThreeDSAuthentication : o atributo transactionCondition do objeto authenticationResultData não é retornado na resposta. Complementos de informações sobre o atributo rrule. Complemento de informação capítulo Criar um token cartão a partir de uma transação 'createTokenFromTransaction'. Adição do atributo mpiExtension (objeto threeDSRequest) para a operação verifyThreeDSEnrollement. 1.6 Lyra Network 01/02/2016 Novas operações: • updatePaymentDetails • createTokenFromTransaction 1.5 Lyra Network 23/11/2015 • • • • Adição dos valores associados ao objeto eci. Adição do objeto shoppingCart para transmitir o conteúdo do carrinho na solicitação createPayment. Adição do objeto tokenResponse para resgatar na operação getTokenDetails informações sobre a data de criação e/ou de rescisão de um token cartão. Complemento de informação sobre o compartilhamento de códigos entre diversas entidades jurídicas. 1.4 Lyra Network 20/09/2015 Correção de um erro nos capítulos: • Definir a cinemática com autenticação 3D Secure • Exemplos de respostas a um pagamento com autenticação 3D Secure • Manter uma mesma sessão HTTP para um pagamento com autenticação 3D Secure • Redirecionar o navegador do comprador para o ACS dele 1.3 Lyra Network 04/08/2015 • • • • 1.2 Lyra Network 29/06/2015 • • • • Adição da lista dos códigos de erros retornados quando um pagamento for recusado. Adição do atributo paymentError para o objeto paymentResponse. Adição do atributo chargeback para o objeto captureResponse. Adição do atributo riskAssessment para o objeto fraudManagementResponse. Adição do atributo subscriptionId para o objeto subscriptionRequest. Modificação do código de erro 83 (responseCode). Adição dos atributos type et sequenceNumber para o objeto paymentResponse (Gerenciamento do multi-pagamento na resposta). Adição de exemplos em anexo. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 4 / 237 Versão Autor Data Comentário 1.1 Lyra Network 13/04/2015 O atributo transactionIds (do objeto settlementRequest na operação capturePayment) é renomeado em transactionUuids. 1.0 Lyra Network 01/04/2015 Upgrade do wsdl em versão 5.0 Confidencialidade Todas as informações contidas neste documento são consideradas confidenciais. O uso destas fora do quadro da presente consulta ou a divulgação para pessoas alheias esta submetida à aprovação antecipada da Lyra Network. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 5 / 237 2. Entrar em contato com o suporte técnico Em caso de problema de conexão com o Back Office, clique no link "senha esquecida ou senha bloqueada". Para perguntas técnicas ou solicitação de assistência, nossos serviços estão abertos de segunda a sextafeira, de 8h a 17h por telefone no: +55 (11) 3336-9217 ou +55 (11) 3336-9209 desde o Brasil por e-mail: [email protected] Para facilitar o atendimento das suas solicitações, você deverá informar seu código de loja (número com 8 dígitos). Esta informação aparece no e-mail de cadastro da sua loja, ou no Back Office (menu Configuração > Loja > Configurações). Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 6 / 237 3. Apresentação dos serviços web Este documento detalha uma série de operações que podem ser solicitadas remotamente via Internet, sem restrições referentes às linguagens de programação e às plataformas utilizadas. Os serviços web são utilizados para integrar uma ou mais funcionalidades de pagamento em um software pro de gestão integrada. Dois tipos de operações são disponibilizados: Operações comuns sobre as transações • Cria pagamentos (com ou sem autenticação 3D Secure). • Permitir ações automáticas sobre as transações (reembolso, cancelamento...). Para utilizar esta solução, o vendedor deve contratar a opção pagamento por serviço web. Operações específicas aos pagamento por código • Geranciar alias (utilizados para o pagamento em um clic). • Gerenciar assinaturas. Para utilizar esta solução, o vendedor deve contratar a opção pagamento por código.. Entre em contato com o serviço de atendimento ao cliente para maiores informações. 3.1. Descrição dos serviços web Os serviços web são desenvolvidos de acordo com o protocolo SOAP versão 1.2 (Simple Object Access Protocol) e são apresentados no arquivo wsdl seguinte: https://secure.payzen.com.br/vads-ws/v5?wsdl Observação : Se você se conecta a internet via um proxy a partir de um servidor aplicativo, favor entrar em contato com nosso serviço de suporte pra saber se vai ser preciso configurar o acesso a esta URL. Uma mensagem SOAP está contida em uma envelope. A estrutura da envelope SOAP é definida da seguinte forma: • um cabeçalho (Header) Contém informações sobre o tratamento da mensagem. • um corpo (Body) Contém as informações da solicitação ou da resposta • um gerenciamento de erros contido no corpo Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 7 / 237 O cabeçalho SOAP HEADER O HEADER é um cabeçalho que fornece informações que permitem autenticar e proteger os dados trocados entre o site de e-commerce e a plataforma de pagamento. Contém: • shopId Código da loja do vendedor. • requestId UUID (código universal único) O valor dele permite calcular a ficha de autenticação. • timestamp Representação numérica da data e da hora da solicitação no formato ISO 8601 - W3C et UTC. • mode Tipo de transação. Pode ter o valor TEST (para uma transação de teste) ou PRODUCTION (para uma transação real). • authToken Ficha de autenticação. Deve sistematicamente ser transmitido e os valores que ele contém devem ser calculados de novo a cada chamada. Exemplo de HEADER na solicitação e na resposta: <soap:Header xmlns:soapHeader="http://v5.ws.vads.lyra.com/Header"> <soapHeader:shopId>12345678</soapHeader:shopId> <soapHeader:requestId>04967dae-af01-43ff-a7d8-f3f228b9b1c2</soapHeader:requestId> <soapHeader:timestamp>2014-10-31T16:38:19Z</soapHeader:timestamp> <soapHeader:mode>TEST</soapHeader:mode> <soapHeader:authToken>NxoFUSsTqmMjwaDzTXyCN4nNpMOVJKb5UxHdS9TBuTg=</soapHeader:authToken> </soap:Header> O corpo (Body) O corpo da mensagem SOAP é contido em uma baliza <Body> obrigatória. Contém os dados trocados entre o cliente e o serviço sob a forma de uma fragmento de documento XML. Estes dados correspondem à solicitação ou à resposta. As mensagens trocadas entre o vendedor e a plataforma de pagamento seguem uma sintaxe precisa (ver capítulo Especificar os tipos de dados). Exemplo de BODY: Solicitação <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v5="http:// v5.ws.vads.lyra.com/"> <soap:Header xmlns:soapHeader="http://v5.ws.vads.lyra.com/Header"> ... </soap:Header> <soap:Body> <myOperationRequest> ... </myOperationRequest> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 8 / 237 Resposta <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> ... </env:Header> <soap:Body> <myOperationResponse> <return> ... <commonResponse> <responseCode>0</responseCode> <responseCodeDetail>Action successfully completed</responseCodeDetail> ... </commonResponse> ... </return> </myOperationResponse> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 9 / 237 3.2. Gerenciar os códigos de erro e as exceções As operações webservices realizam diversos controles sobre as configurações da solicitação. Elas podem gerar dois tipos de retorno em caso de erro: • as exceções (SOAP Fault exceptions), • os erros aplicativos. Gerenciar as exceções Gerenciar as exceções As exceções levantadas por um método web services estão retornadas para o site de e-commerce sob a forma de um elemento XML Fault. Uma exceção é retornada quando por exemplo os atributos dos objetos necessários à execução das operações no estão devidamente formatados. Exemplo : Um endereço e-mail não devidamente formatado (sem @) durante a criação de um alias. A exceção <soap:Fault> conterá detalhes tais como a cadeia de exceção e a fonte de exceção. <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"/> <soap:Body> <soap:Fault> <soap:Code> <soap:Value xmlns:ns1="http://www.w3.org/2003/05/soap-envelope">ns1:Sender</soap:Value> </soap:Code> <soap:Reason> <soap:Text xml:lang="en">CreateRequest.customerRequest.billingDetails.email: Endereço e-mail não devidamente formada</soap:Text> </soap:Reason> <soap:Detail> <requestId>43a61cf4-e467-490e-871e-d61604577cb0</requestId> </soap:Detail> </soap:Fault> </soap:Body> </soap:Envelope> Este mecanismo de gerenciamento das exceções permite identificar e corrigir dados cujo formato, antes de realizar uma operação, está incorreto. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 10 / 237 Tratar os erros aplicativos Tratar os erros aplicativos Mensagens de erros aplicativos normalizados podem ser enviadas na mensagem SOAP resposta vinculada a uma chamada. Apresentam-se na forma de um código de erro junto com uma descrição do problema encontrado. O quadro abaixo lista os códigos de erros que podem ser retornados no atributo responseCode : Código de erro responseCodeDetail Descrição 0 Action successfully completed Ação efetuada com sucesso. 1 Unauthorized request Ação não autorizada. 2 Bad Parameter Atributo inválido. 3 Bad Request A solicitação não pôde ser tratada. 10 Transaction was not found Transação não encontrada. 11 Bad transaction status Status da transação incorreto. 12 Transaction already exists A transação já existe. 13 Date is too far from current UTC date Data incorreta (o valor do atributo 'submissionDate' está distante demais da data atual). 14 Nothing has changed Nenhuma mudança. 15 Too much results Há resultados demais. 20 Bad amount Valor inválido no atributo 'amount'. 21 Unknown currency Moeda inválida no atributo 'currency'. 22 Unknown card type Tipo de cartão desconhecido. 23 Invalid Expiration Date Data inválida nos atributos 'expiryMonth' e/ou 'expiryYear'. 24 CVV Mandatory O 'cvv' é obrigatório. 25 Contract not found Número de contrato desconhecido. 26 Invalid card number O número de cartão é inválido. 30 Payment token not found O alias não foi encontrado. 31 Invalid payment token O alias é inválido (Rescindido, vazio...). (cancelled, …) 32 SubscriptionID was not found Atributo 'subscriptionId' não encontrado. 33 Invalid Subscription Atributo 'rrule' inválido ou A assinatura já foi rescindida 34 Payment token already exists O alias já existe. 35 Payment token creation declined Criação do alias recusada. 36 Payment token purged Atributo 'paymentToken' tratado. 40 Amount not authorized Atributo 'amount' não autorizado. 41 Card range not found Números do cartão não encontrados 42 Not enough credit O saldo do meio de pagamento não é suficiente. 43 No credit O reembolso não é autorizado para este contrato. 50 Brand not found Nenhuma marca localizada. 51 Merchant not enrolled Vendedor não alistado. 52 Invalid ACS Signature Assinatura do ACS inválida 53 Technical error 3DS Erro técnico 3DS. 54 Wrong Parameter 3DS Parâmetro 3DS incorreto. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 11 / 237 Código de erro responseCodeDetail Descrição 55 3DS Disabled 3DS desativado. 56 PAN not found PAN não encontrado. 97 OneyWsError Erro OneyWs. 98 Bad request Id Atributo RequestId inválido. 99 Undefined Error Erro desconhecido. Precisões sobre os códigos de erros. • 0 - Ação efetuada com sucesso. Indica que a ação solicitada foi efetuada com sucesso, o que significa que o formato da solicitação está correto. • 1 - Ação não autorizada. Indica que você não contratou o serviço que permite utilizar os serviços web. • 2 - Parâmetro inválido Este código é retornado quando um atributo for inválido. A mensagem de informação menciona que um erro de tipo param e fornece um complemento de informações sobre o atributo em questão. Código de erro Descrição Explicação 33 Parâmetro 'paymentSource' inválido no caso de uma assinatura. Origem da transação inválida para uma assinatura. Os valores possíveis são "EC", MOTO", "CC" ou "OTHER". 34 Parâmetro 'scheme' inválido no caso de uma criação de um alias. Tipo de cartão inválido durante a criação de um alias. 35 Parâmetro phoneNumber' inválido Número de telefone do comprador inválido. 36 Parâmetro 'email' inválido E-mail do comprado inválido. 37 Parâmetro 'zipCode' inválido CEP do comprador inválido. 38 Parâmetro 'cellPhoneNumber' inválido Número de telefone celular do comprador inválido. 50 Parâmetro 'shopId' inválido Código loja não foi devidamente informado. 51 Parâmetro 'submissionDate' inválido Data e hora UTC da transação não informadas. 66 Parâmetro 'contractNumber' inválido Número de contrato comerciante inválido. 82 Parâmetro 'initialAmount' inválido Valor inicial da assinatura inválido (inferior a 0). 83 Parâmetro 'initialAmountNumber' inválido Quantidade de parcelas para as quais é preciso aplicar o valor initialAmount. Este atributo é obrigatório se initialAmount é valorizado. 84 Parâmetro effectDate' inválido Data de inicio da assinatura inválida. A data não pode ser vencida. 85 Parâmetro commission' inválido Parâmetro não informado e obrigatório para o Boleto no Brasil. 90 Parâmetro 'enrolled' inválido Status do alistamento do portador é inválido. 92 Parâmetro 'eci' inválido Indicador de Comércio Eletrônico inválido.. 93 Parâmetro 'xid' inválido Número de transação 3DS inválido. 94 Parâmetro 'cavv' inválido Certificado do ACS inválido 95 Parâmetro 'cavvAlgorithm' inválido Algorítmo de verificação da autenticação do portador (cavv) inválido. 96 Parâmetro 'brand' inválido Rede do cartão inválida. 101 Parâmetro 'paymentOptionCode' inválido Código da opção inválido. Exemplo: Endereço e-mail faltando para uma operação onde deve ser informado. <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <shopId xmlns="http://v5.ws.vads.lyra.com/Header/">12345678</shopId> <requestId xmlns="http://v5.ws.vads.lyra.com/Header/">222e970d-9c8b-466f-b672-7d830af18a8c</ requestId> <timestamp xmlns="http://v5.ws.vads.lyra.com/Header/">2015-04-01T09:41:11Z</timestamp> <mode xmlns="http://v5.ws.vads.lyra.com/Header/">TEST</mode> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 12 / 237 <authToken xmlns="http://v5.ws.vads.lyra.com/ Header/">HW4+kJDlErT3g2z5KnUEjFxBPsg9NTjR6QOsXjfsKvk=</authToken> </env:Header> <soap:Body> <ns2:createTokenResponse xmlns:ns2="http://v5.ws.vads.lyra.com/"> <createTokenResult> <requestId>222e970d-9c8b-466f-b672-7d830af18a8c</requestId> <commonResponse> <responseCode>2</responseCode> <responseCodeDetail>Error param 36: email</responseCodeDetail> </commonResponse> <authorizationResponse/> </createTokenResult> </ns2:createTokenResponse> </soap:Body> </soap:Envelope> • 3 - Solicitação não executada Indica que a solicitação não pôde ser executada. Para maiores detalhes, um complemento de informações é retornado na resposta. Exemplo: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"/> <soap:Body> <ns2:updatePaymentDetailsResponse xmlns:ns2="http://v5.ws.vads.lyra.com/"> <updatePaymentDetailsResult> <requestId>024a5593-8537-46cf-afc3-fabb7c76bc97</requestId> <commonResponse> <responseCode>3</responseCode> <responseCodeDetail>Bad Request[Detalhes da não execução da solicitação]</ responseCodeDetail> </commonResponse> <paymentResponse/> <orderResponse/> <cardResponse/> <authorizationResponse/> <captureResponse/> <customerResponse/> <markResponse/> <threeDSResponse/> <extraResponse/> <fraudManagementResponse/> <shoppingCartResponse/> </updatePaymentDetailsResult> </ns2:updatePaymentDetailsResponse> </soap:Body> </soap:Envelope> • 25 - Número de contrato desconhecido. Indica que há um defeito no contrato comerciante. Diferentes casos são possíveis: • O valor transmetido na solicitação não corresponde a nenhum contrato registrado na loja (shopId), • Não há contrato associado na loja, • O contrato mencionado venceu, • Nenhum contrato corresponde ao tipo de contrato necessário para efetuar o pagamento. Este é o caso se você não possuir um contrato que aceita pagamento manual e se paymentSource tiver o valor de MOTO, CC ou OTHER na sua solicitação. • 35 - Alias não criado. Indica que o alias não foi criado. O motivo da recusa é mencionado no atributo result do objeto authorizationResponse. Consultar o capítulo Gerenciar os códigos de retorno de uma solicitação de autorização para maiores detalhes. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 13 / 237 Exemplo : <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <shopId xmlns="http://v5.ws.vads.lyra.com/Header/">12345678</shopId> <requestId xmlns="http://v5.ws.vads.lyra.com/Header/">8fbf0b7a-c5bd-419db14d-23bf557c6139</requestId> <timestamp xmlns="http://v5.ws.vads.lyra.com/Header/">2015-04-01T09:47:58Z</timestamp> <mode xmlns="http://v5.ws.vads.lyra.com/Header/">TEST</mode> <authToken xmlns="http://v5.ws.vads.lyra.com/Header/">DjY7Jr+a +7jzqD4FtYj7MflmVc8o/8QDPZkJdFSNk/k=</authToken> </env:Header> <soap:Body> <ns2:createTokenResponse xmlns:ns2="http://v5.ws.vads.lyra.com/"> <createTokenResult> <requestId>8fbf0b7a-c5bd-419d-b14d-23bf557c6139</requestId> <commonResponse> <responseCode>35</responseCode> <responseCodeDetail>PaymentToken creation declined</responseCodeDetail> </commonResponse> <authorizationResponse> <result>51</result> </authorizationResponse> </createTokenResult> </ns2:createTokenResponse> </soap:Body> </soap:Envelope> • Atributo 'paymentToken' purgado Quando um token cartão não for utilizado durante 15 meses, os dados do titular do meio de pagamento são purgados (referencial de segurança PCI DSS - segurança e proteção dos dados bancários). • 40 - Valor não autorizado. Indica que o valor da solicitação de criação ou de reembolso do pagamento não é conforme aos valores minimum /maximum definidos no contrato comerciante. Você pode entrar em contato com o serviço ao cliente para conhecer os detalhes do seu contrato. • 99 - Erro técnico. Este código de erro é retornado no caso de um erro técnico interno. Para maiores informações, favor entrar em contato com o suporte técnico. Exemplo: Endereço e-mail faltando para uma operação onde deve ser informado. <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <shopId xmlns="http://v5.ws.vads.lyra.com/Header/">12345678</shopId> <requestId xmlns="http://v5.ws.vads.lyra.com/Header/">ca3d38d5-0344-461c-9f52-192482e09bda</ requestId> <timestamp xmlns="http://v5.ws.vads.lyra.com/Header/">2015-04-01T09:47:58Z</timestamp> <mode xmlns="http://v5.ws.vads.lyra.com/Header/">TEST</mode> <authToken xmlns="http://v5.ws.vads.lyra.com/ Header/">d3W/6dtIebGUpReqzrS40KHEImEway6ixrpn05pSGLY=</authToken> </env:Header> <soap:Body> <ns2:createTokenResponse xmlns:ns2="http://v5.ws.vads.lyra.com/"> <createTokenResult> <requestId>ca3d38d5-0344-461c-9f52-192482e09bda</requestId> <commonResponse> <responseCode>99</responseCode> </commonResponse> <authorizationResponse> <result>96</result> </authorizationResponse> </createTokenResult> </ns2:createTokenResponse> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 14 / 237 3.3. Gerenciar os códigos de retorno de uma solicitação de autorização Na resposta de uma operação web service, o objeto authorizationResponse contém um valor que determina o resultado da solicitação de autorização. O quadro abaixo apresenta os diferentes valores: Valor Descrição 0 Motivo frauduloso Motivo frauduloso Valor Descrição Transação aprovada ou realizada com sucesso 38 Data de validade do cartão vencida 2 Contatar o emissor do cartão. 41 Cartão perdido SIM 3 Autorizador inválido SIM 43 Cartão roubado SIM 4 Guardar o cartão SIM 51 Saldo insuficiente ou limite de crédito excedido. 5 Não honrar SIM 54 Data de validade do cartão vencida 7 Guardar o cartão, condições especiais SIM 55 Senha errada 8 Aprovar após identificação 56 Cartão ausente da base SIM 12 Transação inválida SIM 57 Transação interditada para este portador SIM 13 Valor inválido SIM 58 Transação interditada para este portador 14 Número de portador inválido. SIM 59 Suspeita de fraude 15 Emissor de cartão desconhecido SIM 60 O autorizador de cartão deve entrar em contato com o comprador. 17 Cancelamento comprador. 61 Valor de saque fora do permitido. 19 Repetir a transação posteriormente. 63 Regras de segurança não respeitadas. SIM 20 Resposta errada (erro no domínio do servidor). 68 Resposta não entregue ou recebida tarde demais. 24 Atualização do arquivo não foi possível. 75 Quantidade de tentativas senhas excedidas. 25 Não foi possível localizar o registro no arquivo. 76 Portador já interditado, antigo registro salvo. 26 Registro duplicado, antigo registro substituído. 90 Parada temporária do sistema. 27 Erro em "edit" no campo de lista de atualização arquivo. 91 Emissor de cartão não alcançável. 28 Acesso proibido ao arquivo. 94 Transação duplicada. 29 Atualização impossível. 96 Mau funcionamento do sistema. 30 Erro de formato. 97 Prazo de tempo limite de segurança global. 31 Código do organismo comprador inválido. SIM 98 Servidor indisponível encaminhamento rede pedido novamente. 33 Data de validade do cartão vencida SIM 99 Incidente domínio iniciador 34 Suspeita de fraude SIM Códigos retorno específicos ao meio de pagamento Amex: Valor Descrição 000 Aprovada 001 Aprovada com documento de identidade 002 Autorização parcial (Somente cartões pré-pagos) 100 Recusada 101 Cartão vencido / Data de vencimento inválida 106 Número de tentativas autorizadas de digitação do NIP ultrapassado 107 Favor entrar em contato com o emissor Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 15 / 237 SIM SIM SIM Valor Descrição 109 Vendedor inválido 110 Valor inválido 111 Conta inválida / MICR inválido 115 Função solicitada não suportada 117 NIP inválido 119 Titular não inscrito / não autorizado 122 Código de segurança do cartão inválido (token cartão NIC/C4C) 125 Data de entrada em vigor inválida 181 Erro de formato 183 Código da moeda inválido 187 Recusada - Novo cartão emitido 189 Recusada - Conta cancelada 200 Recusada - Retirar Cartão 900 Aceita - Sincronização ATC 909 Desfuncionamento do sistema (erro criptográfico) 912 Emissor não disponível Tabela 1 : Código retorno Cartão Amex Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 16 / 237 3.4. Gerenciar os códigos de retorno retornados pelo analista de risco externo Na resposta de uma operação web service, o objeto fraudManagementResponse contém um valor que determina o resultado do analista de risco externo. Os quadros abaixo apresentam os diferentes valores: Valores comuns a todos os analisadores de riscos INVALID_CREDENCIAL Falha de configuração do contrato de análise de riscos. COMUNICATION_PROBLEM Não foi possível se comunicar com o analisador de riscos. DATA_PROCESSING_PROBLEM Falha durante o tratamento do envio ou da resposta do analisador de riscos. MISSING_MANDATORY_ORDER_INFO Dados relativos ao pedido estão faltando. MISSING_MANDATORY_SHIPPING_INFO Dados relativos à entrega estão faltando. MISSING_MANDATORY_SHIPPING_ADDRESS_INFO Dados relativos ao endereço de entrega estão faltando. MISSING_MANDATORY_BILLING_INFO Dados relativos ao faturamento estão faltando. MISSING_MANDATORY_BILLING_ADDRESS_INFO Dados relativos ao endereço de faturamento estão faltando. MISSING_MANDATORY_CARD_INFO Dados sobre o meio de pagamento estão faltando. MISSING_MANDATORY_CUSTOMER_INFO Dados sobre o comprador estão faltando. Tabela 2 : Valores associados a vads_risk_analyzis_result comuns a todos os tipos de analisadores de riscos ClearSale APA Automatically approved A transação esta automaticamente aprovada conforme as configurações. APM Manually approved - order manually approved by analyst's decision A transação foi manualmente aprovada por um analista. RPM Reproved with no suspect O pedido foi recusado devido a uma falta de informações sobre o comprador conforme à política aplicada. AMA Waiting for manual analysis - order is in a queue waiting for analysis Análise manual em espera. O pedido esta na lista de espera para análise. ERR Error Erro NVO New order - order waiting for score Novo pedido. Tratamento e classificação em andamento. SUS Suspended order - order suspended by fraud suspicion Pedido manualmente suspenso. O pedido esta suspenso por suspeita de fraude. CAN Canceled - order canceled by user Pedido cancelado. O pedido foi cancelado pelo vendedor. FRD Order confirmed as a fraud Fraude confirmada com o operador do cartão de crédito ou do titular do cartão. RPA Automatically reproved based on parameters within risk analyzer Pedido recusado automaticamente. O pedido foi recusado conforme à aplicação das configurações da análise de fraude externa. RPP Automatically reproved based customer or ClearSale policy Pedido recusado automaticamente. O pedido foi recusado conforme à aplicação da política cliente ou ClearSale. Tabela 3 : Valores associados a vads_risk_analyzis_result - ClearSale CyberSource 100 SUCCESS A transação foi efetuada com sucesso. 101 MISSING_FIELDS A transação foi recusada. Um ou mais campos estão faltando. 102 INVALID_FIELDS A transação foi recusada. Um ou mais campos contém dados inválidos. 150 ERROR_GENERAL_SYSTEM_FAILURE Erro. 151 SERVER_TIME_OUT Erro. A solicitação foi recebida mas o prazo foi excedido. Este erro não inclui prazos excedidos entre o cliente e o servidor. 152 SERVICE_TIME_OUT Erro. A solicitação foi recebida mas um serviço não foi concluído no devido tempo. 202 CARD_EXPIRED Recusada. Cartão vencido. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 17 / 237 CyberSource 231 ACCOUNT_NUMBER_INVALID Recusada. Número de conta inválido. 234 ACCOUNT_PROBLEM Recusado. Um problema ocorreu com a configuração CyberSource do vendedor. 400 FRAUD_SCORE_TOO_HIGH Recusada. O valor da fraude excede o limiar de tolerância. 480 SUCCESS_TO_REVIEW O pedido esta marcado para ser examinado pelo Decision Manager. 481 SUCCESS_TO_REJECT O pedido foi recusado pelo Decision Manager. Tabela 4 : Valores associados a vads_risk_analyzis_result - Cybersource Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 18 / 237 3.5. Gerenciar os códigos de erros durante um pagamento recusado Na resposta de uma operação web service, o objeto paymentError contém um valor que determina porque um pagamento foi recusado. O quadro abaixo apresenta os diferentes valores: Código de erro Mensagem de erro Código de Mensagem de erro erro 1 A transação não foi encontrada 72 Autorização recusada pela Cofinoga. 2 A transação não foi encontrada 73 Recusa da autorização a 1 BRL. 3 Esta ação não esta autorizada para uma transação com este status {0}. 74 Configuração de pagamento inválida. 4 Esta transação não esta autorizada neste contexto. 75 A PayPal recusou a operação. 5 A transação já existe. 76 Devido a um problema técnico, não podemos responder a sua solicitação. 6 Valor de transação inválida. 77 Devido a um problema técnico, não podemos responder a sua solicitação. 7 Esta ação não é mais possível para uma transação criada nesta data. 78 Identificador de transação não definido. 8 A data de vencimento do cartão não autoriza esta ação. 79 Identificador de transação não definido. 9 CVV obrigatório para o cartão. 80 Identificador de transação vencido. 10 O valor do reembolso é superior ao valor inicial. 81 Conteúdo do tema config inválido. 11 A soma dos reembolsos efetuados é superior ao valor inicial. 82 O reembolso não é autorizado. 12 A duplicação de um crédito (reembolso) não é autorizado. 83 Valor de transação fora dos valores permitidos. 13 Devido a um problema técnico, não podemos responder a sua solicitação. 84 Devido a um problema técnico, não podemos responder a sua solicitação. 14 Devido a um problema técnico, não podemos responder a sua solicitação. 85 Devido a um problema técnico, não podemos responder a sua solicitação. 15 Devido a um problema técnico, não podemos responder a sua solicitação. 86 Devido a um problema técnico, não podemos responder a sua solicitação. 16 Devido a um problema técnico, não podemos responder a sua solicitação. 87 Devido a um problema técnico, não podemos responder a sua solicitação. 17 A configuração remota do contrato Aurore falhou. 88 Devido a um problema técnico, não podemos responder a sua solicitação. 18 A análise da resposta Cetelem falhou. 89 A modificação não é autorizada. 19 Moeda desconhecida. 90 Um erro foi encontrado durante o reembolso desta transação. 20 Tipo de cartão inválido. 91 Nenhuma opção de pagamento ativada para este contrato. 21 Nenhum contrato encontrado para este pagamento. Favor mudar os dados ou entrar em contato com seu gerente em caso de falhas repetidas. 92 Um erro ocorreu durante o cálculo do canal de pagamento. 22 Loja não encontrada. 93 Um erro ocorreu durante o retorno do comprador para a página de finalização de pagamento. 23 Contrato ambíguo. 94 Um erro técnico ocorreu. 24 Contrato inválido. 95 Devido a um problema técnico, não podemos responder a sua solicitação. 25 Devido a um problema técnico, não podemos responder a sua solicitação. 96 Um erro foi encontrado durante a captura desta transação. 26 Número de cartão inválido. 97 Data de apresentação esta distante demais. 27 Número de cartão inválido. 98 Data de transação inválida. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 19 / 237 Código de erro Mensagem de erro Código de Mensagem de erro erro 28 Número de cartão inválido. 99 Um erro ocorreu durante o cálculo da procedência do pagamento. 29 Número de cartão inválido. 100 Controle cartão comercial falhou. 30 Número de cartão inválido (Luhn) 101 Recusado porque a primeira parcela foi recusada. 31 Número de cartão inválido (comprimento) 102 Buyster recusou a operação. 32 Número de cartão inválido (não encontrado) 103 A sincronização do status da transação com o sistema externo falhou. 33 Número de cartão inválido (não encontrado) 104 Um erro foi encontrado durante a captura desta transação. 34 Controle cartão com autorização sistemática falhou. 105 Um erro de segurança foi encontrado durante o processo 3DS desta transação. 35 Controle e-Carte Bleue falhou. 106 Moeda não adequada para este contrato e/ou esta loja. 36 A transação foi recusada pelo controle dos riscos. 107 O cartão associado ao alias não esta mais válido. 37 Interrupção não gerenciada durante o pagamento. 108 Devido a um problema técnico, não podemos responder a sua solicitação. 38 Devido a um problema técnico, não podemos responder a sua solicitação. 109 Prazo de espera excedido quando o comprador foi redirecionado. 39 A transação foi recusada pelo 3D Secure. 110 Cartão de pagamento não adequado para este contrato. 40 Devido a um problema técnico, não podemos responder a sua solicitação. 111 Transações sem transferência de responsabilidade recusadas. 41 Devido a um problema técnico, não podemos responder a sua solicitação. 112 O cancelamento não é autorizado. 42 Um erro interno ocorreu durante a consulta do número de cartão. 113 A duplicação não é autorizada. 43 Um erro interno ocorreu durante a consulta do número de cartão. 114 Forçar não é autorizado. 44 Não é possível forçar uma autorização a 1 BRL. 115 O reembolso não é autorizado. 45 Moeda inválida para a modificação. 116 Pagamento manual não autorizado para este cartão. 46 O valor é superior ao valor autorizado. 118 Pagamento manual parcelado não autorizado para este cartão. 47 A data de apresentação desejada é posterior à data de validade da autorização. 119 A data submetida é inválida. 48 A modificação requerida é inválida. 120 A opção de pagamento da transação inicial não pode ser aplicada. 49 Definição do pagamento múltiplo inválido. 124 Cartão inativo. 50 Loja desconhecida. 125 Pagamento recusado pelo comprador. 51 Taxa desconhecida. 126 Esta ação é impossível porque a seqüência de pagamento não acabou. 52 O contrato acabou desde o {0}. 127 O campo vads_ship_to_delay não foi preenchido ou seu formato é inválido. 53 A loja {0} fechou desde o {1}. 132 Devido a um problema técnico, não podemos responder a sua solicitação. 54 Parâmetro recusado porque pode conter dados 135 sensíveis {0}. A integração da página de pagamento dentro de uma iframe não é autorizada. 55 Devido a um problema técnico, não podemos responder a sua solicitação. 136 Transações derivadas recusadas, sem transferência de responsabilidade na primeira transação. 57 Erro na recuperação do alias. 137 A transação já existe. 58 O status do alias não é compatível com esta operação. 138 O reembolso parcial não é permitido para esta transação. 59 Erro na recuperação do alias. 139 Reembolso recusado. 60 Alias existente. 141 O analisador de risco recusou esta transação. 61 Alias inválido. 142 O tipo de cartão usado não é válido com o modo de pagamento solicitado. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 20 / 237 Código de erro Mensagem de erro Código de Mensagem de erro erro 62 Criação de alias recusada. 143 Devido a um problema técnico, não podemos responder a sua solicitação. 63 A assinatura já existe. 144 Uma transação em modo produção foi marcada em modo teste pelo adquirente. 64 Esta assinatura já foi cancelada. 145 Uma transação em modo teste foi marcada em modo produção pelo adquirente. 65 Este assinatura não é válida. 146 Código sms inválido. 66 A regra de recorrência não é válida. 147 O módulo de gestão de fraudes solicitou a recusa desta transação. 67 Criação da assinatura recusada. 148 Devido a um problema técnico, não podemos responder a sua solicitação. A transação não foi criada. 69 Devido a um problema técnico, não podemos responder a sua solicitação. 149 O tempo limite da sessão de pagamento acabou (caso do comprador redirecionado para o ACS e que não finaliza a autentificação 3D Secure). 70 Código país inválido. 150 Devido a um problema técnico, não podemos responder a sua solicitação. A transação não foi criada. 71 Configuração do serviço web inválido. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 21 / 237 3.6. Unir as solicitações Web service (manter uma mesma sessão HTTP) A arquitetura da plataforma de pagamento baseia-se em um conjunto de servidores com repartição de carga. Para garantir a continuidade do processo, cada solicitação vinculada a um mesmo pagamento em um lapso de tempo muito curto deve ser realizada com a mesma sessão HTTP. Para isso, para toda solicitação, uma sessão é criada no servidor. A ID da sessão é retornada no cabeçalho HTTP da resposta. Este deverá ser redirecionado às solicitações seguintes para que a solicitação seja tratada pelo mesmo servidor, com os fins de evitar que a sua solicitação seja recusada porque a transação não estaria ainda disponível nos outros servidores. Exemplo de aplicação : Você deseja criar um pagamento que será entregue daqui a 30 dias em modo de validação manual. Uma vez que o pagamento for aceito, você decide mudar a data de captura para o dia seguinte e validar a transação. Para realizar esta operação: • Você deve chamar o web service de criação de pagamento (createPayment). • A plataforma verifica a presença de um ID de sessão no cabeçalho HTTP de sua solicitação. Já que nada foi mencionado, uma nova sessão e um novo ID são criados. A plataforma de pagamento realiza em seguida o tratamento da sua solicitação e envia uma resposta mencionando no cabeçalho HTTP o código de sessão atribuído e o nome do servidor que processou a solicitação: Exemplo de cabeçalho de solicitação : POST /vads-ws/v5 HTTP/1.1 Host: secure.payzen.eu Connection: Keep-Alive User-Agent: PHP-SOAP/5.4.14 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Content-Length: 1922 Exemplo de cabeçalho de resposta : HTTP/1.1 200 OK Date: Tue, 24 Feb 2015 11:37:06 GMT Server: Apache Set-Cookie: JSESSIONID=6qeoRHaVgOGr5avgh6lHnzEm.vadpayment01bdx; Path=/vads-ws; Secure Content-Length: 2711 Vary: Accept-Encoding,User-Agent Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/xml;charset=UTF-8 • Nos cabeçalhos HTTP da resposta, você resgata o cookie JSESSIONID. • Você inicializa o cookie JSESSIONID do seu cabeçalho HTTP. • Você chama o web service de modificação e de validação do pagamento. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 22 / 237 Exemplo de cabeçalho de solicitação para manter a sessão : POST /vads-ws/v5 HTTP/1.1 Host: Connection: Keep-Alive User-Agent: PHP-SOAP/5.4.14 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Content-Length: 5793 Cookie: JSESSIONID=6qeoRHaVgOGr5avgh6lHnzEm.vadpayment01bdx; • A plataforma verifica a presença de um ID de sessão no cabeçalho HTTP de sua solicitação. A solicitação é em seguida enviada para o servidor que gerou a sessão. Se a sessão existir, ela será utilizada de novo,. Se não, uma nova sessão e um código novo serão criados. A plataforma de pagamento realiza o tratamento da solicitação e envia uma resposta. Observação: O ID de sessão será retornado no cabeçalho HTTP da resposta somente se uma nova sessão for criada. Aconselhamos então testar sistematicamente a presença de cookie no cabeçalho HTTP da resposta e utilizar o ID de sessão presente antes de unir uma outra chamada (getPaymentDetails por exemplo). Exemplo de cabeçalho HTTP de resposta utilizando a mesma sessão : HTTP/1.1 200 OK Date: Thu, 26 Feb 2015 10:26:01 GMT Access-Control-Allow-Origin: * Content-Type: text/xml;charset=UTF-8 Content-Length: 2858 Vary: Accept-Encoding Connection: close Observação: não há informação sobre o código de sessão. Exemplo de cabeçalho HTTP de resposta com uma nova sessão : HTTP/1.1 200 OK Date: Thu, 26 Feb 2015 10:31:39 GMT Set-Cookie: JSESSIONID=W10zI16iiiDiZqGV309xDtLV.vadpayment01bdx; Path=/vads-ws; Secure Access-Control-Allow-Origin: * Content-Type: text/xml;charset=UTF-8 Content-Length: 2858 Vary: Accept-Encoding Connection: close Observação: presença do Set-Cookie mencionando o código da nova sessão. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 23 / 237 3.7. Gerenciar os prazos de espera (Timeout) O tratamento de uma solicitação serviço web articula-se em torno de uma serie de eventos assíncronos tal como: • o envio da solicitação via a rede do site do vendedor, • o transporte das informações na rede internet, • o tratamento do pagamento pela plataforma, • a interrogação dos servidores bancários, etc Um incidente pode ocorrer a qualquer etapa e aumentar o tempo de tratamento (e portanto o tempo de espera para o comprador). A resposta a uma solicitação pode atrasar por múltiplas razões: • Um tempo longo de resposta por parte do emissor do cartão do portador (no caso de cartões provenientes de fora do país, no caso de período correspondentes à alta atividade tal como o dia das mães, natal,...). • Um tempo longo de resposta por parte do comprador durante a transmissão e a recepção da solicitação de autorização. • Um tempo longo de resposta na sua aplicação devido a uma carga importante. • Um tempo longo de resposta da plataforma de pagamento • Um problema de peering na Internet podendo ocasionar perdas de mensagens, etc... Em função dos prazos configurados, você não pode receber resposta enquanto o tratamento assíncrono continua em execução na plataforma de pagamento. Um tempo longo de tratamento não deve ser considerado como um pagamento recusado. Portanto, você deve configurar seu código para gerenciar os problemas potenciais que podem resultar da conexão ao API SOAP. Recomendações O tempo médio de tratamento de uma solicitação de pagamento pela plataforma é menor que 5 segundos. Você deve definir um prazo de espera de 20 até 30 segundos para o comprador. Enquanto isso, você pode: • Informar o comprador que o pagamento dele está em processamento. Enquanto isso, você pode consultar o status da transação na plataforma de pagamento e voltar quando o resultado final for exibido. • Informar o comprador que o pagamento dele foi recusado garantindo previamente que você não tem que validar manualmente o pagamento na plataforma de pagamento. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 24 / 237 3.8. Especificar os tipos de dados As mensagens trocadas entre o vendedor e a plataforma de pagamento seguem uma síntaxe precisa. Você encontrará no quadro abaixo a descrição das anotações utilizadas. Anotação Descrição a Símbolos alfabéticos (de A a Z e de a a z) n Símbolos numéricos (de 0 a 9) s Símbolos especiais an Símbolos alfanuméricos ans Símbolos alfanuméricos e especiais 3 Comprimento fixo até 3 símbolos ..12 Comprimento variável até 12 símbolos Tabela 5 : Descrição das anotações utilizadas Os dados mencionados nas mensagens podem ser de diferentes tipos: Tipos de dados Descrição boolean Um booleano pode somente ter duas respostas: true ou false. Uma resposta true pode também ser yes ou 1. Uma resposta false pode também ser no ou 0. dateTime Representa um instante, geralmente expresso sob a forma de uma data ou de uma hora. Contém um ano, um mês, um dia, uma hora, minutos, segundos e milissegundos. O valor é dado em tempo universal coordenado (UTC) e ISO 8601 - W3C. Ao contrário da hora local, uma data e uma hora dada em UTC é a mesma em qualquer lugar num momento dado. Exemplo: 2016-07-16T19:20Z int Representa um número inteiro (integer), ou seja, sem decimal. long Representa um número inteiro (integer) codificado em 64 bits. Este tipo de dado é utilizado quando o tipo de dado int não for grande o suficiente (por exemplo para especificar o valor de uma transação). string Pode conter símbolos, pulos de linhas, Enters e tabs. Tabela 6 : Descrição dos dados mencionados nas mensagens Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 25 / 237 4. Identificar-se durante as trocas A identificação acontece graças ao cabeçalho SOAP HEADER da solicitação. Para identificar o site de e-commerce durante as trocas com a plataforma de pagamento, os elementos seguintes são necessários: • o código da loja (shopId), • o certificado, Para resgatar estes dois valores: 1. Conecte-se ao seu Back Office: https://secure.payzen.com.br/vads-merchant/ 2. Clique sobre Configuração > Loja. 3. Selecionar a aba Certificados. Figura 1 : Visualizar o código da loja e o certificado Observação: aconselhamos salvar estas informações em um arquivo de configuração. • uma ficha de autenticação para transmitir no cabeçalho SOAP (SOAP HEADER). O cálculo da ficha de autenticação se baseia no algoritmo de hash HMAC_SHA256. Ele é elaborado a partir da função de hash SHA-256 e utilizado como código HMAC (Hash-based Message Authentication Code). O hash de saída tem um cumprimento de 256 bits. Observação: a função HMAC_SHA256 só está disponível em PHP a partir da versão PHP 5.1.2. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 26 / 237 4.1. Efetuar a autenticação As etapas para efetuar a autenticação são as seguintes: 1. O site de e-commerce coleta os dados para montar o cabeçalho SOAP HEADER. Ver capítulo O cabeçalho SOAP HEADER. 2. O site de e-commerce calcula o valor da ficha de autenticação e o acrescenta no cabeçalho SOAP HEADER. Ver capítulo Construir o cabeçalho SOAP HEADER da solicitação. 3. O site de e-commerce envia a solicitação. 4. A plataforma de pagamento recebe a solicitação e analisa o cabeçalho SOAP HEADER. 5. A plataforma de pagamento calcula o valor da ficha de autenticação authToken. 6. A plataforma de pagamento compara o valor da ficha de autenticação calculado com o valor transmitido pelo site de e-commerce. 7. Se os valores são diferentes, a solicitação é rejeitada e retorna uma exceção SOAP Fault exception de tipo "bad.authToken: Invalid authentication token". Se não, a plataforma trata a solicitação. 8. A plataforma de pagamento calcula o valor da ficha de autenticação e o acrescenta no HEADER da resposta. 9. A plataforma de pagamento monta a mensagem de resposta e a envia para o site de e-commerce. 10.O site de e-commerce recupera os dados. Ele calcula o valor da ficha de autenticação com os valores contidos no HEADER da resposta. Ele compara o valor da ficha de autenticação calculado com o valor contido no HEADER da resposta. Observação: o requestId transmitido no cabeçalho da resposta será idêntico a aquele transmitido na solicitação pelo site de e-commerce. 11.Se os valores são diferentes, o vendedor analisa a origem do erro (erro, tentativa de fraude etc...). Se não, o site de e-commerce analisa a resposta. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 27 / 237 4.2. Construir o cabeçalho SOAP HEADER da solicitação Para construir o cabeçalho SOAP HEADER: 1. Acrescentar um novo cabeçalho chamado shopId cujo valor será o código da loja. Pode encontrar o valor no seu Back Office selecionando o menu Configuração > Loja > aba Certificados. 2. Acrescentar um novo cabeçalho chamado timestamp. O valor dele especifica a representação numérica da data e da hora da solicitação, codificado em formato ISO 8601 - W3C e UTC. Exemplo de geração em PHP : $timestamp = gmdate("Y-m-d\TH:i:s\Z"); Resultado: 2014-10-31T16:38:19Z 3. Acrescentar um novo cabeçalho chamado mode. O valor dele permite definir o tipo de transação. Pode ter o valor TEST (para uma transação de teste) ou PRODUCTION (para uma transação real). 4. Acrescentar um novo cabeçalho chamado requestId. O atributo requestId é um UUID (código universal único). O valor dele permite calcular a ficha de autenticação. O atributo requestId deve ser gerado pelo site de e-commerce. O formato dele deve respeitar a síntaxe xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (onde M=1,2,3,4,5 e N=8,9,A,B). • Exemplo de geração em JAVA : java.util.UUID.randomUUID().toString(); • Exemplo de geração em PHP : function gen_uuid() { return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0x0fff ) | 0x4000, mt_rand( 0, 0x3fff ) | 0x8000, mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) ); } • Exemplo de geração em ASP.NET : System.Guid.NewGuid().toString(); 5. Acrescentar um novo cabeçalho chamado authToken. Para obter o valor dele: a. Concatenar os atributos requestId e timestamp sem separador. Exemplo de resultado de concatenação com : • requestId = 04967dae-af01-43ff-a7d8-f3f228b9b1c2 • timestamp = 2014-10-31T16:38:19Z "04967dae-af01-43ff-a7d8-f3f228b9b1c22014-10-31T16:38:19Z" Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 28 / 237 b. Aplicar o algoritmo HMAC_SHA256 no string obtido com o valor do certificado de teste ou de produção (em função do valor de mode) como chave compartilhada. c. Codificar o resultado em Base64. • Exemplo de implementação em JAVA 7 : public String hmacsha256(String stringToSign , String key ){ try { byte[] bytes = encode256 ( key .getBytes( "UTF-8" ), stringToSign .getBytes( "UTF-8" )); return Base64.encodeBase64String( bytes ); } catch (Exception e ){ throw new RuntimeException( e ); } } private static byte[] encode256(byte[]keyBytes, byte[] text ) throws NoSuchAlgorithmException, InvalidKeyException { Mac hmacSha1 ; try { hmacSha1 = Mac.getInstance ( "HmacSHA256" ); } catch (NoSuchAlgorithmException nsae ){ hmacSha1 = Mac.getInstance ( "HMAC-SHA-256" ); } SecretKeySpec macKey = new SecretKeySpec( keyBytes, "RAW" ); hmacSha1.init( macKey ); return hmacSha1 .doFinal( text ); } Observação: a implementação se baseia na classe Mac do package javax.crypto. Exemplo de chamada em JAVA hmacsha256("04967dae-af01-43ff-a7d8-f3f228b9b1c22014-10-31T16:38:19Z", "1234567887654321") • Exemplo de implementação em PHP : //$data est la concaténation des attributs requestId et timestamp //$shopKey est la valeur du certificat <?php $authToken = base64_encode(hash_hmac('sha256',$data, $shopKey, true));?> • Exemplo de implementação em ASP.NET : private static byte[] StringEncode (string text) { var encoding = new ASCIIEncoding(); return encoding.GetBytes(text); } private static string HashEncode(byte[] hash) { return System.Convert.ToBase64String(hash) } private static byte[] HashHMAC (byte[] key, byte[] message) { var hash = new HMACSHA256(key); return hash.ComputeHash(message); } public String HmacSha256(String stringToSign, String key) { return HashEncode(HashHMAC(StringEncode(key), StringEncode(stringToSign))); } Exemplo de chamada em ASP.NET: HmacSha256("RF5GJlpZwcra2N7Ie/04Xn/SxFVnqy/61Yr6F6lFrHo=", "1234567887654321") Resultado : <soapHeader:authToken>NxoFUSsTqmMjwaDzTXyCN4nNpMOVJKb5UxHdS9TBuTg=</soapHeader:authToken> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 29 / 237 Exemplo de código em PHP para construir o cabeçalho SOAP HEADER Segue um exemplo PHP para lhe ajudar a construir o cabeçalho SOAP: //Geração do header $client = new soapClient("https://secure.payzen.com.br/vads-ws/v5?wsdl", $options = array( 'trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8', 'soapaction' => '') ); //Cálculo dos valores para ser transmitidos no cabeçalho $ns = 'http://v5.ws.vads.lyra.com/Header/'; $shopId = "12345678"; $requestId = gen_uuid(); $timestamp = gmdate("Y-m-d\TH:i:s\Z"); $mode = "TEST"; $authToken = base64_encode(hash_hmac('sha256',$requestId.$timestamp, $key, true)); //Criação dos cabeçalhos shopId, requestId, timestamp, mode e authToken $headerShopId = new SOAPHeader($ns, 'shopId', $shopId); $headerRequestId = new SOAPHeader($ns, 'requestId', $requestId); $headerTimestamp = new SOAPHeader($ns, 'timestamp', $timestamp); $headerMode = new SOAPHeader($ns, 'mode', $mode); $headerAuthToken = new SOAPHeader($ns, 'authToken', $authToken); //Acrescentar cabeçalhos no SOAP Header $headers = array( $headerShopId, $headerRequestId, $headerTimestamp, $headerMode, $headerAuthToken ); $client->__setSoapHeaders($headers); Exemplos em diversas linguagens de programação são disponíveis na Internet. • Em JAVA http://www.mkyong.com/webservices/jax-ws/jax-ws-soap-handler-in-client-side/ • Em Visual Basic .NET https://msdn.microsoft.com/en-fr/library/vstudio/whew6x7f(v=vs.100).aspx http://forums.asp.net/t/1137408.aspx?Adding+information+to+the+SOAP+Header Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 30 / 237 4.3. Verificar o cabeçalho SOAP na resposta Para que você tenha a garantia que a resposta venha da plataforma de pagamento, você deve verificar o valor da ficha de autenticação recebida. Para isso, calcular de novo a ficha de autenticação: 1. Resgatar os valores de shopId, timestamp, requestId, mode e authToken no cabeçalho SOAP na resposta. 2. Concatenar os atributos timestamp e requestId sem separador. Cuidado, a ordem é inversa em relação à solicitação. Exemplo de resultado de concatenação com: • timestamp = 2014-10-31T16:38:19Z • requestId = 04967dae-af01-43ff-a7d8-f3f228b9b1c2 "2014-10-31T16:38:19Z04967dae-af01-43ff-a7d8-f3f228b9b1c" 3. Aplicar o algoritmo HMAC_SHA256 no string obtido com o valor do certificado de teste ou de produção (em função do valor de mode) como chave compartilhada. 4. Codificar o resultado em Base64. 5. Comparar o valor de authToken presente no cabeçalho SOAP HEADER com outro valor calculado. Resultado: Se os valores são diferentes, o vendedor analisa a origem do erro (erro de cálculo, fraude etc...). Observação: o requestId transmitido no cabeçalho da resposta será idêntico a aquele transmitido na solicitação pelo site de e-commerce. Exemplo de código PHP para resgatar os cabeçalhos SOAP na resposta Segue um exemplo para lhe ajudar a resgatar os cabeçalhos SOAP HEADER na resposta: //Resgatar o SOAP Header da resposta para armazenar // os cabeçalhos em um quadro (aqui $responseHeader) $dom = new DOMDocument; $dom->loadXML($client->__getLastResponse(), LIBXML_NOWARNING); $path = new DOMXPath($dom); $headers = $path->query('//*[local-name()="Header"]/*'); $responseHeader = array(); foreach($headers as $headerItem) { $responseHeader[$headerItem->nodeName] = $headerItem->nodeValue; } Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 31 / 237 5. Gerar um uuid - retro compatibilidade Um uuid (Universally Unique IDentifier) é um código único que permite, nesta versão dos Web Services, identificar uma transação com total certeza. Porém,uuid não era gerado nas versões anteriores. Para identificar e consultar uma transação, os atributos transactionId, sequenceNumber ecreationDate eram utilizados. Permitiam identificar uma transação específica a partir de: • o código único dela para um dia, • a data e a hora da solicitação com a qual a transação era criada, • o número de sequência. Nesta versão, somente o atributo uuid (referência única da transação) é necessário. É utilizado para substituir os antigos atributos e simplificar as solicitações. É gerado pela plataforma de pagamento após a criação de uma transação de pagamento. Este código único garante a unicidade. O valor deste atributo é retornado no objeto paymentResponse da operação createPayment. Desta forma, para toda solicitação com transação específica, o atributo uuid será pedido no objeto queryRequest. Porém, por razões de retro compatibilidade, esta versão dos Web Services permite resgatar o uuid de uma transação (código único da transação) a partir do seu antigo código. Por isso, a operação getPaymentUuid está a disposição. 5.1. Solicitação para enviar A solicitação getPaymentUuid é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação getPaymentUuid toma na entrada um objeto do tipo getPaymentUuid. O tipo getPaymentUuid é constituído do parâmetro seguinte: Objeto Formato legacyTransactionKeyRequest legacyTransactionKeyRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 32 / 237 Requisito legacyTransactionKeyRequest O objeto legacyTransactionKeyRequest permite traduzir os antigos atributostransactionId,sequenceNumber etransmissionDate em transactionUuid (referência única de transação). Os atributos para serem valorizados para obter o valor de transactionUuid são os seguintes: legacyTransactionKeyRequest Atributo Requisito transactionId Código da transação para procurar. Formato string sequenceNumber Número de sequência da transação para procurar. Vale "1" para um pagamento unitário. Toma o valor do número de prestação no caso de um pagamento parcelado criado a partir do formulário de pagamento. creationDate Data de criação da transação apresentada no formato ISO 8601 definido pelo W3C. Se nenhuma data for informada, a data do dia terá o valor por padrão. Exemplo : 2016-07-16T19:20:00Z n..3 dateTime ans..40 Tabela 7 : Objeto legacyTransactionKeyRequest 5.2. Resposta A resposta à operação getPaymentUuid é constituída de um HEADER e de um BODY de tipo getPaymentUuidResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Contém as informações relativas à autenticação (ver capítulo O cabeçalho SOAP HEADER). • BODY A estrutura da mensagemgetPaymentUuidResponse é a seguinte: Nome Tipo legacyTransactionKeyResult legacyTransactionKeyResult A estrutura da mensagem legacyTransactionKeyResult é a seguinte: Objeto Tipo commonResponse commonResponse paymentResponse paymentResponse commonResponse O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 33 / 237 n..2 string commonResponse Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. Formato Tabela 8 : Objeto commonResponse paymentResponse O objeto paymentResponse retorna o atributotransactionUuid. paymentResponse Formato transactionUuid Referência única da transação gerada pela plataforma de pagamento. string ans32 Tabela 9 : Objeto paymentResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 34 / 237 6. Realizar operações comuns nas transações A opção pagamento por web services permite realizar uma certa quantidade de operações tais como: Nome da operação web service Descrição createPayment Iniciar uma transação de pagamento updatePayment Modificar uma transação de pagamento updatePaymentDetails Modificar os dados de uma transação (carrinho) cancelPayment Cancelar uma transação de pagamento findPayments Pesquisar transações de pagamentos refundPayment Reembolsar um comprador duplicatePayment Duplicar uma transação de pagamento validatePayment Validar uma transação de pagamento capturePayment Capturar uma transação de pagamento getPaymentDetails Obter os detalhes de uma transação de pagamento verifyThreeDSEnrollment Verificar a autenticação 3D Secure do cartão do comprador checkThreeDSAuthentication Verificar o status da autenticação 3D Secure. Tabela 10 : Operações disponíveis com a opção pagamento por web services Exemplos de codificação são apresentados em anexo a este documento. 6.1. Criar uma transação de pagamento 'createPayment' A chamada da operação createPayment permite de iniciar uma transação de pagamento Dependendo da valorização dos atributos na solicitação, pode-se realizar: • pagamentos à vista, • pagamentos agendados, • pagamentos com ou sem autenticação 3D Secure, • pagamentos utilizando um Token Cartão já existente. A operação createPayment é estruturada da maneira seguinte: Operação Entrada Saída createPayment createPayment createPaymentResponse Compartilhamento de códigos Pode-se compartilhar códigos (Token Cartão) entre diversas entidades jurídicas. Os códigos compartilhados entre diversas entidades jurídicas devem ser únicos e devem obrigatoriamente ser gerados pela plataforma de pagamento (ou seja o atributo paymentToken do objeto cardRequest não deve ser informado). No entanto, esta funcionalidade é submetida a condições particulares. Favor entrar em contato com a sua plataforma de pagamento para conhecê-las. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 35 / 237 Solicitação para enviar A solicitação createPayment é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo Construir o cabeçalho SOAP HEADER). • BODY A operação createPayment toma na entrada um objeto do tipo createPayment. O tipo createPayment é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest threeDSRequest threeDSRequest paymentRequest paymentRequest orderRequest orderRequest cardRequest cardRequest customerRequest customerRequest techRequest techRequest shoppingCartRequest shoppingCartRequest Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Diversos atributos podem ser especificados na solicitação. Porém, somente um atributo deve obrigatoriamente ser enviado: commonRequest Atributo Requisito paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. Parâmetro utilizado por padrão se nenhum valor estiver informado ou se for diferente dos valores possíveis. • MOTO para um pedido por correio ou telefone. • CC para um call center. • OTHER para um outro canal de venda. Somente o valor EC permite criar uma transação com 3D Secure. Os outros valores somente devem ser utilizados para a venda à distancia, pela qual o 3D Secure não é aplicável. submissionDate Data e hora UTC da transação apresentadas no formato ISO 8601 definido pelo W3C. Exemplo: 2016-07-16T19:20:00Z Se o valor deste atributo é distante demais da hora atual, a solicitação será rejeitada (código de erro 13). contractNumber Número de contrato comerciante utilizado. Se este campo é informado, tomar cuidado em utilizar o contrato certo em relação à rede do cartão. Por exemplo, um contrato CB não pode ser utilizado para uma transação AMEX. Tabela 11 : Objeto commonRequest O atributo comment não é levado em consideração para esta operação, nos dias de hoje. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 36 / 237 Formato string dateTime ans..40 string O objeto threeDSRequest permite: • determinar se um pagamento for realizado com ou sem autenticação 3D Secure, • transmitir informações vinculadas ao 3D Secure. Se nenhum valor for informado para este objeto, um pagamento sem autenticação 3D Secure será efetuado por padrão. Os objetos e atributos do objeto threeDSRequest variam segundo o tipo de pagamento. • Pagamento sem 3D Secure. Um pagamento sem autenticação 3D Secure é uma operação de débito pela qual a autenticação do portador do cartão não é efetuada. Somente um atributo deve obrigatoriamente ser enviado: threeDSRequest Atributo Formato mode Seleção do modo de autenticação 3D Secure. DISABLED Pagamento sem autenticação 3D Secure. Parâmetro utilizado por padrão se nenhum valor estiver informado. string Observação: todos os atributos não são levados em consideração para criar um pagamento sem 3D Secure. • Pagamento com 3D Secure. O pagamento com autenticação 3D Secure requer duas chamadas à operaçãocreatePayment. • Uma primeira chamada para verificar o alistamento do cartão e para resgatar as informações necessárias para redirecionar o comprador para o ACS. Somente um atributo deve obrigatoriamente ser enviado: threeDSRequest Atributo Formato mode Seleção do modo de autenticação 3D Secure. ENABLED_CREATE Permite verificar o alistamento do cartão 3D Secure antes de efetuar o pagamento. string Observação: todos os atributos não são levados em consideração para criar um pagamento com3D Secure. • Uma segunda chamada para analisar o retorno do 3D Secure e finalizar a transação. Três atributos devem obrigatoriamente ser enviados: threeDSRequest Atributo Formato mode Seleção do modo de autenticação 3D Secure. ENABLED_FINALIZE Permite finalizar um pagamento 3D Secure. string requestId Com o modo ENABLED_FINALIZE, este campo deve conter o valor retornado no atributo threeDSRequestId do objeto threeDsResponse na operação createPayment com o modo ENABLED_CREATE. string pares Mensagem PaRes (Payer Authentication Response) reenviada pelo ACS. string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 37 / 237 Observação: todos os atributos não são levados em consideração para criar um pagamento com3D Secure. • Pagamento com autenticação 3D Secure realizado pelo MPI do vendedor Diferentes atributos devem obrigatoriamente ser enviados para este tipo de pagamento. Cuidado: um valor específico para um atributo pode resultar na valorização de um outro atributo! threeDSRequest Atributo Requisito Formato mode Seleção do modo de autenticação 3D Secure. MERCHANT_3DS Permite realizar um pagamento 3DS com o MPI do vendedor. string brand Rede do cartão. string enrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. string status Status da autenticação do portador. Os valores possíveis são: • Y para um status autenticado 3 DS. • N para um erro de autenticação. • U para uma autenticação impossível. • A para uma tentativa de autenticação. Se enrolled é valorizado a Y string Se status é valorizado a Y ou A string Se status é valorizado aY string Se status é valorizado a Y ou A string Se status é valorizado a Y ou A string eci Indicador de Comercio Eletrônico. O valor eci depende do status da autenticação 3DS e do tipo de cartão. Os valores possíveis são: VISA AMEX status =Y status = A status = U status =N 5 6 7 - 01 - - MasterCard 02 xid Número de transação 3DS. cavv Certificado do ACS. algorithm Algoritmo de verificação da autenticação do portador (CAVV). Os valores possíveis são: • 0 para HMAC. • 1 para CVV. • 2 para CVV_ATN. • 3 para Mastercard SPA. Tabela 12 : Objeto threeDSRequest O objeto paymentRequest permite transmitir informações vinculadas ao pagamento. Possui os atributos seguintes: Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 38 / 237 paymentRequest Atributo Requisito Formato transactionId Código da transação durante a criação ou a modificação de uma transação de pagamento. Seu valor é único para o mesmo dia. • Ou este código será gerado pela plataforma. Neste caso, este parâmetro não deve ser informado. • Ou este código será gerado pelo site de e-commerce. Neste caso, este parâmetro deve ser informado com o valor do código desejado. Cuidado, cabe ao site de e-commerce garantir o caráter único dos códigos de usuários. Toda solicitação de registro contendo um código de usuário já existente, será recusada, e será retornada com o código de erro 12. Observação : este atributo não pode ser enviado vazio. an..6 amount Valor da transação expresso na menor unidade da moeda . Observação: • Não deve ser enviado vazio ou com o valor 0. • Não deve ser superior ao valor inicial (exemplo: reembolso). n..12 currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. n3 expectedCaptureDate Data de entrega solicitada apresentada no formato ISO 8601 definido pelo W3C. Exemplo: 2016-07-16T19:20:00Z. Este parâmetro é utilizado para efetuar um pagamento a prazo. Se a quantidade de dias entre a data de captura e a data do dia vigente for superior ao tempo de validade da autorização, uma autorização de 1 BRL será realizada o mesmo dia da transação. Permite verificar a validade do cartão. A autorização para o valor total será efetuada: • processo padrão: o dia da data de captura no banco desejada, • processo com autorização antecipada: em função do meio de pagamento selecionado, a Dquantidade de dias correspondente ao tempo de validade de uma autorização antes da data de captura no banco desejada. Se você quiser receber a notificação de resultado desta solicitação de autorização, você deve configurar a regra de notificação URL de notificação em autorização por Batch no Back Office (Configuração > Regras de notificações). dateTime ans..40 manualValidation Permite validar manualmente uma transação enquanto a data de entrega desejada não for vencida. Para isso, este atributo deve ser valorizado a 1 (validação manual). Com o valor 0, a validação será automática. n1 Tabela 13 : Objeto paymentRequest O objeto orderRequest permite transmitir informações vinculadas ao pedido. É composto do atributo seguinte: orderRequest Atributo Requisito orderId Referência do pedido. Formato string an..64 Tabela 14 : Objeto orderRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 39 / 237 O objeto cardRequest permite transmitir informações sobre o cartão de pagamento. Dependendo do tipo de pagamento (pagamento com digitação dos dados bancários ou pagamento por Token Cartão), um ou mais atributos são requisitados. • Pagamento com digitação dos dados bancários: cardRequest Atributo Requisito Formato number Número do cartão. string scheme Tipos de cartões. Os valores possíveis são: AMEX, CB, MASTERCARD, VISA, VISA_ELECTRON, MAESTRO, ECARTEBLEUE o JCB. string expiryMonth Mês de vencimento do cartão, entre 1 e 12. n..2 expiryYear Mês de vencimento do cartão de 4 dígitos Exemplo : 2016 n4 cardSecurityCode CVV de 3 números (ou 4 para Amex: Este campo é obrigatório quando o cartão possui um código criptograma visual. Se o CVV não é transmitido, o banco emissor recusará o pagamento. No entanto, este campo é facultativo quando a origem da transação for valorizada com MOTO. cardHolderBirthday Data de nascimento do portador no formato YYYY-MM-DD. Este campo é obrigatório para os meios de pagamento COFINOGA et CDGP, salvo se uma autenticação 3D Secure for realizada. string Requerido em função dateTime do tipo de ans..64 pagamento. Tabela 15 : Objeto cardRequest • Pagamento via um Token Cartão existente: cardRequest Atributo Requisito Formato paymentToken Código único (alias) associado a um meio de pagamento. • Ou este código foi gerado pela plataforma. • Ou este código foi gerado pelo site de e-commerce. string ans..64 cardSecurityCode CVV de 3 números (ou 4 para Amex). Para que o pagamento seja garantido, o vendedor deve pedir ao comprador: • digitar o CVV • uma autenticação 3D Secure. string ans..64 Tabela 16 : Objeto cardRequest Observação: Para que um pagamento utilizando um Token Cartão existente (pagamento em um clic) seja garantido, o vendedor deve pedir ao comprador: • digitar o CVV • uma autenticação 3D Secure. O objeto customerRequest permite transmitir informações a respeito da entrega, do faturamento e dos dados técnicos sobre o comprador. Este objeto deve obriagatoriamente ser enviado na solicitação. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 40 / 237 Porém, os sub objetos contidos nele (ver quadro abaixo) são facultativos para esta operação. Sub objeto Formato Requisitado billingDetails Dados de faturamento do comprador. billingDetailsRequest shippingDetails Dados de entrega do comprador. shippingDetailsRequest extraDetails Dados técnicos sobre o comprador. extraDetailsRequest Tabela 17 : Sub objetos de customerRequest billingDetails possui os atributos seguintes: billingDetails Atributo Requisito Formato reference Referência do comprador. string n..80 title Estado civil do comprador. Exemplos de valores possíveis: • Senhora, etc.. string n..80 type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 email E-mail do comprador. string ans..150 streetNumber Número de rua do comprador. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço do comprador. string ans..255 district Bairro do comprador. string ans..127 zipCode CEP do comprador. string ans..64 city Cidade do comprador. string ans..128 state UF / Região do comprador. string ans..128 country País do comprador conforme à norma ISO 3166. Exemplos de valores possíveis: • DE para a Alemanha • IT para a Itália • PT para o Portugal • GB para o Reino-Unido • JA para o Japão • RU para a Rússia • ES para a Espanha • NL para a Holanda • SE para a Suécia • FR para a França • PL para a Polônia • CN para a China language string - a2 string - a2 Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 41 / 237 billingDetails Atributo Idioma do comprador conforme à norma ISO 639-1. Exemplos de valores possíveis: Requisito • de para o alemão • it para o italiano • pt para o português • en para o inglês • ja para o japonês • ru para o russo • es para o espanhol • nl para o holandês • sv para o sueco • fr para o francês • pl para o polonês • zh para o chinês • tr para o turco Formato cellPhoneNumber Número de telefone celular string ans..32 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 18 : Objeto billingDetails shippingDetails possui os atributos seguintes: shippingDetails Atributo Requisito Formato type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 streetNumber Número de rua para a entrega. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço de entrega. string ans..255 address2 Complemento de endereço de entrega. string ans..255 district Bairro de entrega. string ans..127 zipCode CEP de entrega. string ans..64 city Cidade de entrega. string ans..128 state UF / Região de entrega. string ans..128 country País de entrega. string - a2 deliveryCompanyName Informações sobre a transportadora. string ans..128 shippingSpeed Modo de entrega selecionado. Os valores possíveis são: string (enum) Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 42 / 237 shippingDetails Atributo • STANDARD para uma entrega padrão. • EXPRESS para uma entrega express. Requisito Formato shippingMethod Método de entrega utilizado. Os valores possíveis são: • RECLAIM_IN_SHOP para retirar a mercadoria na loja. • RELAY_POINT para a utilização de uma rede de pontos de entrega terceirizada (Kiala, Alveol, etc). • RECLAIM_IN_STATION para retirar num aeroporto, uma agência de viagens ou outros. • PACKAGE_DELIVERY_COMPANY para a entrega por transportadora (Colissimo, UPS, etc). • ETICKET para emitir de uma passagem eletrônica, baixar. string (enum) legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 19 : Objeto shippingDetails extraDetails possui os atributos seguintes: extraDetails Atributo Requisito Formato ipAddress O endereço IP do comprador. string ans40 fingerPrintId Identificador único de sessão. Específico ao Brasil e ao analisador de fraude ClearSale. Codificado a 128 octetos, pode conter maiúsculas ou minúsculas, números ou hífen ([A-Z] [a-z], 0-9, _, -). string ans128 Tabela 20 : Objeto extraDetails O objeto techRequest permite transmitir informações técnicas a respeito do navegador do comprador. Este objeto deve obriagatoriamente ser enviado na solicitação. No entanto, os atributos dele são facultativos. techRequest Atributo Requisitado Formato browserUserAgent Header « User-Agent » do navegador do comprador (HTTP/1.1 - RFC. 2616). string browserAccept Header « Accept » do navegador do comprado (HTTP/1.1 - RFC. 2616). string Tabela 21 : Objeto techRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 43 / 237 O objeto shoppingCartRequest permite transmitir o conteúdo do carrinho. shoppingCartRequest Atributo Requisito Formato insuranceAmount Valor do seguro n..3 shippingAmount Despesas de entrega. n..3 taxAmount Valor dos impostos. n..3 cartItemInfo Campos personalizáveis para adicionar elementos no carrinho. O atributo cartItemInfo contém sub objetos: • productLabel : nome do produto. O formato dele é "string". • productType : tipo do artigo. O formato dele é "string (enum)". Valor Descrição FOOD_AND_GROCERY Produtos alimentares e de mercadinho AUTOMOTIVE Automóveis / Motos ENTERTAINMENT Entretenimento / Cultura HOME_AND_GARDEN Casa e jardim HOME_APPLIANCE Equipamentos para a casa AUCTION_AND_GROUP_BUYING Leilões e compras em grupo FLOWERS_AND_GIFTS| Flores e presentes COMPUTER_AND_SOFTWARE Computadores e softwares HEALTH_AND_BEAUTY Saúde e beleza SERVICE_FOR_INDIVIDUAL Serviços para pessoa física SERVICE_FOR_BUSINESS Serviços para pessoa jurídica SPORTS Esportes CLOTHING_AND_ACCESSORIES Roupas e acessórios TRAVEL Viagem HOME_AUDIO_PHOTO_VIDEO Som, imagem e vídeo TELEPHONY Telefonia Tabela 23 : Valores associados a productType • productRef : referência produto. O formato dele é "string". • productQty : quantidade de produto. O formato dele é "integer". • productAmount : valor em centavos do produto. O formato dele é "string". • productVat : valor dos impostos sobre o produto. O formato dele é "string". Exemplo : <cartItemInfo> <productLabel>CHIPS</productLabel> <productType>FOOD_AND_GROCERY</productType> <productRef>188545</productRef> <productQty>10</productQty> <productAmount>10000</productAmount> </cartItemInfo> Tabela 22 : Objeto shoppingCartRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 44 / 237 cartItemInfo Resposta A resposta à operação createPayment é constituída de um HEADER e de um BODY de tipo createPaymentResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem createPaymentResponse é a seguinte: Nome Tipo createPaymentResult createPaymentResult A estrutura da mensagem createPaymentResult é a seguinte: Objeto Tipo commonResponse commonResponse paymentResponse paymentResponse orderResponse orderResponse cardResponse cardResponse authorizationResponse authorizationResponse captureResponse captureResponse customerResponse customerResponse markResponse markResponse threeDSResponse threeDSResponse extraResponse extraResponse fraudManagementResponse fraudManagementResponse shoppingCartResponse shoppingCartResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. Observação: Porém, o valor 0, indicador do sucesso da operação, não quer dizer que a transação foi aprovada. Para verificar o status da transação, é preciso analisar o atributo transactionStatusLabel. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 45 / 237 O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso (não confundir com o status da transação). • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string transactionStatusLabel Denominação do status da transação. Os valores possíveis são: • INITIAL Em andamento. string • • • • Este status temporário. O status definitivo será retornado assim que a sincronização acabar. NOT_CREATED A transação não foi criada e portanto não será exibida no Back Office. AUTHORISED Captura em andamento. A transação foi aceita e será capturada automaticamente no banco na data prevista. AUTHORISED_TO_VALIDATE Para ser aprovado. A transação, criada em validação manual, foi autorizada. O vendedor deve validar manualmente a captura no banco. A transação pode ser aprovada enquanto a data de captura não for vencida. Se esta data estiver vencida, então o pagamento tem o status Expirado (status definitivo). WAITING_AUTHORISATION Autorização em andamento. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitado de autorização e a captura no banco serão acionadas automaticamente. WAITING_AUTHORISATION_TO_VALIDATE Para ser aprovado e autorizado. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitação de autorização será automaticamente efetuada a D-1 antes da data de captura no banco. O pagamento poderá ser aceito ou recusado. A captura no banco é automática. REFUSED Recusada. A transação foi recusada. shopId Código da loja. n8 paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. • MOTO para um pedido por e-mail ou telefone. • CC para um call center. • OTHER para um outro canal de venda. submissionDate Data e hora UTC da transação apresentadas em formato W3C (exemplo: 2016-07-16T19:20:00Z). string (enum) dateTime ans..40 contractNumber Número de contrato comerciante utilizado. string paymentToken Alias ou Código da conta comprador (pagamento por código). string Tabela 24 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 46 / 237 O objeto paymentResponse detalha as informações sobre a transação. paymentResponse Formato transactionUuid Referência única da transação gerada pela plataforma de pagamento. string ans32 transactionId Código da transação durante a criação ou a modificação de uma transação de pagamento. Seu valor é único para o mesmo dia. • Ou este código será gerado pela plataforma. • Ou este código será gerado pelo site de e-commerce. an..6 amount Valor da transação expresso na menor unidade da moeda . n..12 currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. effectiveAmount Valor da transação na moeda efetivamente usada para a captura no banco. effectiveCurrency Moeda efetivamente usada para a captura no banco. expectedCaptureDate Data de captura no banco solicitada. operationType Tipo de operação Os valores possíveis são: • DEBIT para uma operação de débito. • CREDIT para uma operação de reembolso. creationDate Data e hora do registro da transação apresentado em formato W3C. n3 n..12 n3 dateTime ans..40 string dateTime ans..40 externalTransactionId Referência dada por um terceiro: número de transação para Paypal, Boleto, RRN para Prism, etc... string liabilityShift Transferência de responsabilidade. Os valores possíveis são: • YES quando o pagamento é garantido. • NO quando pagamento não é garantido. string paymentType Tipo de pagamento. Os valores possíveis são: • SINGLE string (enum) • Pagamento em uma única parcela. INSTALLMENT • Pagamento em várias parcelas. SPLIT • Pagamento realizado com vários meios de pagamento. SUBSCRIPTION • Pagamento por Token cartão ou vinculado a uma assinatura. RETRY Quando um pagamento for recusado, pode-se reiterar a solicitação de pagamento. Para qualquer reiteração, o pagamento será valorizado com este valor. Observação: Durante uma operação createPayment, somente um pagamento em uma única parcela pode ser criada (valor SINGLE). Os valores INSTALLMENT, SPLIT, SUBSCRIPTION e RETRY podem ser retornados somente se há pagamentos que foram criados via o formulário de pagamento. sequenceNumber Número de seqüência da transação. Vale "1" para um pagamento unitário. Toma o valor do número de prestação no caso de um pagamento parcelado criado a partir do formulário de pagamento. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 47 / 237 n..3 paymentResponse Formato paymentError Complemento de informação em caso de erro técnico. Retorna um código de erro associado ao erro técnico (ver capítulo Gerenciar os códigos de erros durante um pagamento recusado). n..3 Tabela 25 : Objeto paymentResponse O objeto orderResponse detalha o pedido. orderResponse Formato orderId Referência do pedido. string an..64 extInfo Dados personalizados retornados em função das necessidades. Exemplo : extInfo.key, extInfo.value • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). extInfo Tabela 26 : Objeto orderResponse O objeto cardResponse apresenta em detalhes as informações sobre o meio de pagamento utilizado. cardResponse Formato number • Número de cartão inválido. Contém os 6 primeiros dígitos do número, seguido por "XXXXXX" e finalmente os 4 últimos números. • IBAN e BIC usados para o pagamento, separados por um "_" no caso de um pagamento por débito no cartão de crédito. string scheme Tipo do cartão. string brand Marca do cartão. string country Código país do país emissor do cartão (Código numérico ISO 3166). productCode Código produto do cartão. ISO 3166 ano..3 bankCode Código banco do banco emissor. n..5 expiryMonth Mês de vencimento entre 1 e 12 (ex: 3 para março, 10 para outubro). n..2 expiryYear Ano de vencimento com 4 dígitos (ex: 2023). n4 Tabela 27 : Objeto cardResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 48 / 237 O objeto authorizationResponse permite obter informações sobre a solicitação de autorização. authorizationResponse Formato mode Especifica de que maneira é realizada a solicitação de autorização. Dois valores possíveis: • MARK Uma autorização 1 BRL foi efetuada para verificar a validade do cartão. • string Isso acontece quando a data de captura ultrapassa o período de validade de uma autorização . FULL Autorização para o valor total pedido na solicitação. amount Valor da autorização na menor unidade da moeda se mode vale FULL. currency Código da moeda utilizada durante o pedido de autorização (conforme a norma ISO 4217) se mode vale FULL. date Data e hora do pedido de autorização se mode vale FULL. n..12 n3 dateTime anos..40 number Número do pedido de autorização se mode vaut FULL. n..2 result Código retorno da solicitação de autorização retornado pelo banco emissor quando for recusado. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n..2 Tabela 28 : Objeto authorizationResponse O objeto captureResponse permite obter informações a respeito do desconto se a transação for com desconto. captureResponse Formato date Data e hora de captura. dateTime anos..40 number Número de captura. n3 reconciliationStatus Status de aproximação bancária da transação. n1 refundAmount Valor que já foi sujeito a um reembolso na sua menor unidade de moeda. refundCurrency Moeda do valor que já foi sujeito a um reembolso (Código moeda ISO 4217: 986 para o BRL; 840 para o dólar americano.. chargeback Lítigio, não pago. Os valores possíveis são: • 0 : transação sujeita a um litígio. • 1 : transação não sujeita a um litígio. Tabela 29 : Objeto captureResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 49 / 237 n..12 n3 O objeto customerResponse detalha as numerosas informações sobre o comprador. A resposta contém as análises de: • billingDetails Dados de faturamento do comprador. • shippingDetails Dados de entrega do comprador. • extraDetails Dados técnicos sobre o comprador. billingDetails Atributo Formato reference Referência do comprador. string n..80 title Estado civil do comprador. Exemplos de valores possíveis: • Senhora, etc.. string n..80 type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 email E-mail do comprador. Parâmetro obrigatório quando criar um alias. string ans..150 streetNumber Número de rua do comprador. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço do comprador. string ans..255 district Bairro do comprador. string ans..127 zipCode CEP do comprador. string ans..64 city Cidade do comprador. string ans..128 state UF / Região do comprador. string ans..128 country País do comprador conforme à norma ISO 3166. Exemplos de valores possíveis: • DE para a Alemanha • IT para a Itália • PT para o Portugal • GB para o Reino-Unido • JA para o Japão • RU para a Rússia • ES para a Espanha • NL para a Holanda • SE para a Suécia • FR para a França • PL para a Polônia • CN para a China Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 50 / 237 string - a2 billingDetails Atributo Formato language Idioma do comprador conforme à norma ISO 639-1. Exemplos de valores possíveis: • de para o alemão • it para o italiano • pt para o português • en para o inglês • ja para o japonês • ru para o russo • es para o espanhol • nl para o holandês • sv para o sueco • fr para o francês • pl para o polonês • zh para o chinês • tr para o turco cellPhoneNumber Número de telefone celular string - a2 string ans..32 legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 30 : Objeto billingDetails shippingDetails Atributo Formato type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 streetNumber Número de rua para a entrega. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço de entrega. string ans..255 address2 Complemento de endereço de entrega. string ans..255 district Bairro de entrega. string ans..127 zipCode CEP de entrega. string ans..64 city Cidade de entrega. string ans..128 state UF / Região de entrega. string ans..128 country País de entrega. string - a2 deliveryCompanyName Informações sobre a transportadora. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 51 / 237 string ans..128 shippingDetails Atributo Formato shippingSpeed Modo de entrega selecionado. Os valores possíveis são: • STANDARD para uma entrega padrão. • EXPRESS para uma entrega express. string (enum) shippingMethod Método de entrega utilizado. Os valores possíveis são: • RECLAIM_IN_SHOP para retirar a mercadoria na loja. • RELAY_POINT para a utilização de uma rede de pontos de entrega terceirizada (Kiala, Alveol, etc). • RECLAIM_IN_STATION para retirar num aeroporto, uma agência de viagens ou outros. • PACKAGE_DELIVERY_COMPANY para a entrega por transportadora (Colissimo, UPS, etc). • ETICKET para emitir de uma passagem eletrônica, baixar. string (enum) legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 31 : Objeto shippingDetails extraDetails Formato ipAddress O endereço IP do comprador. string ans40 Tabela 32 : Objeto extraDetails O objeto markResponse permite obter informações sobre a solicitação de autorização de 1 BRL. markResponse Formato amount Valor utilizado para verificar a validade do cartão, na menor unidade da moeda . currency Código da moeda utilizado para verificar a validade do cartão (conforme a norma ISO 4217). n..12 n3 date Data e hora da solicitação de autorização efetuada se o atributo mode do objetoauthorizationResponse vaut MARK. dateTime anos..40 number Número de autorização da solicitação de autorização se o atributo mode do objeto authorizationResponse vale MARK. dateTime anos..40 result Resultado da solicitação de autorização efetuada se o atributo mode do objeto authorizationResponse vale MARK. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. Tabela 33 : Objet markResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 52 / 237 n..2 O objeto threeDSResponse permite obter informações sobre a autenticação 3D Secure. Este objeto contém: • authenticationRequestData Descreve o resultado da solicitado de alistamento bem como a mensagem codificada que será transmitida pelo navegador para o ACS. • authenticationResultData Descreve os detalhes da autenticação 3D Secure. authenticationRequestData Formato threeDSAcctId Certificado reenviado pelo Directory Server. string threeDSAcsUrl Url de ACS que deve ser solicitado. string threeDSBrand Rede do cartão. string threeDSEncodedPareq Mensagem PAReq encodificada, pronto para enviar ao ACS. string threeDSEnrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. a1 threeDSRequestId Número de solicitação, para relembrar na chamada ENABLED_FINALIZE do atributo mode do objeto threeDSRequest. Tabela 34 : Objeto authenticationRequestData Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 53 / 237 string authenticationResultData Formato transactionCondition Status da autenticação 3D Secure. Os valores possíveis são: • COND_3D_SUCCESS Sucesso da autenticação. • • • • • string O vendedor e o portador do cartão estão inscritos ao programa 3D Secure e o portador autenticou-se corretamente. COND_3D_FAILURE Autenticação não sucedida. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não conseguiu autenticar-se (senha errada). COND_3D_ERROR Autenticação em falha. O vendedor participa ao programa 3D secure mas o servidor da plataforma de pagamento encontrou um problema técnico durante o processo de autenticação (quando verificou a inscrição do cartão ao programa 3D ou durante a autenticação do portador). COND_3D_NOTENROLLED Portador não alistado. O vendedor participa ao programa 3D Secure mas o cartão do portador não é alistado. COND_3D_ATTEMPT Tentativa de autenticação. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não teve que autenticar-se (o servidor de controle de acesso do banco que emitiu o cartão somente implementa a geração de um comprovante de tentativa de autenticação). COND_SSL 3D Secure não aplicável. O vendedor não é alistado ao 3D Secure ou o canal de venda não tem cobertura com esta garantia. enrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. string status Status da autenticação do portador. Os valores possíveis são: • Y para um status autenticado 3 DS. • N para um erro de autenticação. • U para uma autenticação impossível. • A para uma tentativa de autenticação. a1 eci Indicador de Comercio Eletrônico. O valor eci depende do status da autenticação 3DS e do tipo de cartão. Os valores possíveis são: status =Y status = A status = U status =N VISA - AMEX 5 6 7 - MasterCard 02 01 - - xid Número de transação 3DS. string string cavvAlgorithm Algoritmo de verificação da autenticação do portador (CAVV). Os valores possíveis são: • 0 para HMAC. • 1 para CVV. • 2 para CVV_ATN. • 3 para Mastercard SPA. n1 cavv Certificado do ACS. string signValid Assinatura da autenticação 3DS. string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 54 / 237 authenticationResultData Formato brand Rede do cartão. string Tabela 35 : Objeto authenticationResultData O objeto extraResponse permite obter informações adicionais sobre o pagamento. extraResponse Formato paymentOptionCode Reservado para um uso específico (Brasil). Define o código de opção utilizada para caracterizar a quantidade de prestações para uma transação). paymentOptionOccNumb Reservado para um uso específico. Define a quantidade de prestações para uma transação. Por exemplo, para um pagamento em 3 vezes, este atributo terá o valor 3. n..2 string Tabela 36 : Objeto extraResponse O objeto fraudManagementResponse permite obter os resultados dos controle de gerenciamento de riscos. A resposta contem as análises dos atributos: • riskControl Retorna o resultado do controle de gerenciamento de riscos realizado. • riskAnalysis Retorna o resultado da análise de gerenciamento de riscos efetuada por um sistema externo (ClearSale, CyberSource,...). • riskAssessment Retorna o resultado da análise de gerenciamento dos riscos avançados realizado pela plataforma de pagamento. O atributo riskControl O formato é o seguinte: name1=result1;name2=result2 Nome Formato Descrição name string Nome da regra de gerenciamento de risco. result string Resultado do controle. Valores possíveis para 'name' CARD Cartão presente na lista cinza. COUNTRY País do comprador na lista cinza. IPADDR Endereço IP do comprador presente na lista cinza. AMOUNT Valor máximo autorizado por pedido foi atingido. BIN O código BIN do cartão está presente na lista cinza. ECB Detecção de um e-carte bleue. CARD_COMMERCIAL_NATIONAL Detecção de um cartão comercial nacional. CARD_COMMERCIAL_FOREIGN Detecção de um cartão comercial estrangeiro. CAS Detecção de um cartão com autorização sistemática. COUNTRY_CONSISTENCY O país de origem do cartão, o país do endereço IP do comprador e o país do comprador não correspondem. NON_GUARANTEED_PAYMENT Detecção de um pagamento sem transferência de responsabilidade. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 55 / 237 Valores possíveis para 'name' IPADDR_COUNTRY O pais do endereço IP do comprador está presente na lista cinza. Tabela 37 : Valores possíveis para 'name' Valores possíveis para 'result' OK Indica que o controle é correto. KO Indica que o controle está em falha. Tabela 38 : Valores possíveis para 'result' O atributo riskAnalysis riskAnalysis Formato score Pontuação atribuída para toda transação para avaliar o risco associado a ela. string resultCode Código retornado por um analista de risco externo. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno retornados pelo analista de risco externo. string status Status da analise de risco Os valores possíveis são os seguintes: • P_SEND_OK, "Sent to clearsale and successfully processed" Sucesso • P_TO_SEND, "Transaction analysis is scheduled to be sent to risk analyzer" O envio está programado • P_TO_SEND_KO, "Problem when tried to send to risk analyzer" Erro de tratamento • P_PENDING_AT_ANALYZER, "Analysis result is still being processed by the risk analyzer. We should keep checking/waiting for the analysis result" Tratamento em andamento pelo analista • P_MANUAL, "Analysis should be requested through user request (not automatically)" A espera de envio manual • P_SKIPPED, "Analysis request discarded by current transaction status/problem" Descartado • P_SEND_EXPIRED, "Analysis request expired" Vencido string requestId Código da analise para o analista de risco. string extraInfo Sem valorização para ClearSale. Para CyberSource, este atributo retorna todos os códigos retornados pelo DecisionManager. • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). Exemplo : • COR-BA=Endereço de faturamento corrigido ou corrigível • A=Mudanças de endereços excessivos. O comprador mudou de endereço de faturamento pelo menos duas vezes durante os seis últimos meses. • etc. extInfo Tabela 39 : Atributo riskAnalysis O atributo riskAssessment Valores Descrição ENABLE_3DS 3D Secure ativado DISABLE_3DS 3D Secure desativado MANUAL_VALIDATION A transação foi criada em validação manual. A captura do pagamento esta bloqueada temporariamente para permitir ao vendedor efetuar todas as verificações desejadas. REFUSE A transação foi recusada. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 56 / 237 Valores Descrição RUN_RISK_ANALYSIS Chamada para um analisador de riscos externos sob a condição que o vendedor possua um contrato Consultar a descrição do campo vads_risk_analysis_result para identificar a lista dos valores possíveis e a descrição deles. INFORM Uma alerta apareceu. O vendedor é avisado quando um risco é identificado. O vendedor é informado via uma ou mais regras do centro de notificação (URL de notificação, e-mail ou SMS). O objeto shoppingCartResponse apresenta em detalhes o conteúdo do carrinho. shoppingCartResponse Atributo Formato cartItemInfo Campos personalizáveis para adicionar elementos no carrinho. O atributo cartItemInfo contém sub objetos: • productLabel : nome do produto. O formato dele é "string". • productType : tipo do artigo. O formato dele é "string (enum)". Valor Descrição FOOD_AND_GROCERY Produtos alimentares e de mercadinho AUTOMOTIVE Automóveis / Motos ENTERTAINMENT Entretenimento / Cultura HOME_AND_GARDEN Casa e jardim HOME_APPLIANCE Equipamentos para a casa AUCTION_AND_GROUP_BUYING Leilões e compras em grupo FLOWERS_AND_GIFTS| Flores e presentes COMPUTER_AND_SOFTWARE Computadores e softwares HEALTH_AND_BEAUTY Saúde e beleza SERVICE_FOR_INDIVIDUAL Serviços para pessoa física SERVICE_FOR_BUSINESS Serviços para pessoa jurídica SPORTS Esportes CLOTHING_AND_ACCESSORIES Roupas e acessórios TRAVEL Viagem HOME_AUDIO_PHOTO_VIDEO Som, imagem e vídeo TELEPHONY Telefonia Tabela 40 : Valores associados a productType • productRef : referência produto. O formato dele é "string". • productQty : quantidade de produto. O formato dele é "integer". • productAmount : valor em centavos do produto. O formato dele é "string". • productVat : valor dos impostos sobre o produto. O formato dele é "string". Exemplo : <cartItemInfo> <productLabel>CHIPS</productLabel> <productType>FOOD_AND_GROCERY</productType> <productRef>188545</productRef> <productQty>10</productQty> <productAmount>10000</productAmount> </cartItemInfo> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 57 / 237 cartItemInfo Criar um pagamento sem autenticação 3D Secure A cinemática do pagamento sem autenticação 3D Secure é a seguinte: Figura 2 : Cinemática do pagamento sem autenticação 3D Secure 1. O comprador valida o pedido dele e digita os dados do cartão no site de e-commerce para realizar o pagamento. 2. O site de e-commerce entra em contato com a plataforma de pagamento. Chama a operação createPayment. Para um pagamento sem autenticação 3D Secure, ele pode: • não valorizar o atributo mode do objeto threeDSRequest (sem valorização, o valor DISABLED é dado ao atributo por padrão), • valorizar o atributo mode do objeto threeDSRequest a DISABLED. 3. A plataforma de pagamento realiza a solicitação de autorização e retorna o resultado do pagamento para o site de e-commerce. Exemplo de código para iniciar um pagamento sem 3D Secure <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v5="http:// v5.ws.vads.lyra.com/"> <soap:Header xmlns:soapHeader="http://v5.ws.vads.lyra.com/Header"> <soapHeader:shopId>12345678</soapHeader:shopId> <soapHeader:requestId>9a4bf6ef-af95-4078-b791-4e9e87888eaa</soapHeader:requestId> <soapHeader:timestamp>2015-04-01T12:07:34Z</soapHeader:timestamp> <soapHeader:mode>TEST</soapHeader:mode> <soapHeader:authToken>OWXz7lNdyoaQInKJcDxaKA/djtx6lk7RbaMTgwPhFVo=</soapHeader:authToken> </soap:Header> <soap:Body> <v5:createPayment> <commonRequest> <paymentSource>EC</paymentSource> <submissionDate>2015-04-01T12:05:42Z</submissionDate> </commonRequest> <threeDSRequest> <mode>DISABLED</mode> </threeDSRequest> <paymentRequest> <amount>1</amount> <currency>978</currency> </paymentRequest> <orderRequest> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 58 / 237 <orderId>TEST-01</orderId> </orderRequest> <cardRequest> <number>4970100000000000</number> <scheme>VISA</scheme> <expiryMonth>12</expiryMonth> <expiryYear>2015</expiryYear> <cardSecurityCode>123</cardSecurityCode> <cardHolderBirthDay>1976-04-18</cardHolderBirthDay> </cardRequest> <customerRequest> <billingDetails> <email>[email protected]</email> </billingDetails> <extraDetails> <ipAddress>127.0.0.1</ipAddress> </extraDetails> </customerRequest> </v5:createPayment> </soap:Body> </soap:Envelope> Exemplo de resposta para um pagamento sem 3D Secure realizado com sucesso. <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <shopId xmlns="http://v5.ws.vads.lyra.com/Header/">12345678</shopId> <requestId xmlns="http://v5.ws.vads.lyra.com/Header/">9a4bf6ef-af95-4078-b791-4e9e87888eaa</ requestId> <timestamp xmlns="http://v5.ws.vads.lyra.com/Header/">2015-04-01T12:07:34Z</timestamp> <mode xmlns="http://v5.ws.vads.lyra.com/Header/">TEST</mode> <authToken xmlns="http://v5.ws.vads.lyra.com/ Header/">BmIP5CNeLyAQQDuzrFjvfoSWEZlCa5OidTV3WNqUXL4=</authToken> </env:Header> <soap:Body> <ns2:createPaymentResponse xmlns:ns2="http://v5.ws.vads.lyra.com/"> <createPaymentResult> <requestId>9a4bf6ef-af95-4078-b791-4e9e87888eaa</requestId> <commonResponse> <responseCode>0</responseCode> <responseCodeDetail>Action successfully completed</responseCodeDetail> <transactionStatusLabel>AUTHORISED</transactionStatusLabel> <shopId>12345678</shopId> <paymentSource>EC</paymentSource> <submissionDate>2015-04-01T14:05:42+02:00</submissionDate> <contractNumber>5785350</contractNumber> </commonResponse> <paymentResponse> <transactionId>124478</transactionId> <amount>1</amount> <currency>978</currency> <expectedCaptureDate>2015-04-01T14:07:54.396+02:00</expectedCaptureDate> <operationType>0</operationType> <creationDate>2015-04-01T14:07:54.387+02:00</creationDate> <liabilityShift>NO</liabilityShift> <transactionUuid>a27d1907d7f74be1843318dce5875b99</transactionUuid> </paymentResponse> <orderResponse> <orderId>TEST-01</orderId> </orderResponse> <cardResponse> <number>497010XXXXXX0000</number> <scheme>CB</scheme> <brand>CB</brand> <country>FR</country> <productCode>A</productCode> <bankCode>17807</bankCode> <expiryMonth>12</expiryMonth> <expiryYear>2015</expiryYear> </cardResponse> <authorizationResponse> <mode>FULL</mode> <amount>1</amount> <currency>978</currency> <date>2015-04-01T14:07:54.387+02:00</date> <number>3fe19a</number> <result>0</result> </authorizationResponse> <captureResponse/> <customerResponse> <billingDetails> <email>[email protected]</email> <language>fr_FR</language> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 59 / 237 </billingDetails> <shippingDetails/> <extraDetails> <ipAddress>127.0.0.1</ipAddress> </extraDetails> </customerResponse> <markResponse/> <threeDSResponse> <authenticationResultData> <transactionCondition>COND_SSL</transactionCondition> </authenticationResultData> </threeDSResponse> <extraResponse/> <fraudManagementResponse> <riskControl> <name>CARD_FRAUD</name> <result>OK</result> </riskControl> <riskControl> <name>COMMERCIAL_CARD</name> <result>OK</result> </riskControl> </fraudManagementResponse> </createPaymentResult> </ns2:createPaymentResponse> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 60 / 237 Criar um pagamento com autenticação 3D Secure A cinemática do pagamento com autenticação 3D Secure é a seguinte: Figura 3 : Cinemática do pagamento com autenticação 3D Secure 1. O comprador valida o pedido dele e digita os dados do cartão no site de e-commerce para realizar o pagamento. 2. O site de e-commerce entra em contato com a plataforma de pagamento. Chama a operação createPayment. Valoriza o atributo mode do objeto threeDSRequest a ENABLED_CREATE. 3. A plataforma de pagamento, via o MPI dela, consulta o directory servidor VISA, Mastercard ou AMEX (SafeKey). • Se o cartão não for alistado, a plataforma de pagamento realiza a solicitação de autorização e retorna o resultado do pagamento para o site de e-commerce. • O atributo threeDSEnrolled do objeto authenticationRequestData do threeDSResponse é valorizado a N. • Se o cartão for alistado: a plataforma de pagamento retorna ao vendedor as informações seguintes: • O atributo threeDSEnrolled do objeto authenticationRequestData do threeDSResponse é valorizado a Y, • a URL do site internet do banco do portador (ACS) para qual o vendedor deverá redirecionar o comprador, • a mensagem PAReq codificada (threeDSEncodedPareq), • o código da solicitação (threeDSRequestId). 4. O site de e-commerce salvo no campo MD : • o código de sessão presente no cabeçalho HTTP da resposta (JSESSIONID ), • o código da solicitação (threeDSRequestId ) presente na resposta authenticationRequestData. MD é a abreviação de MerchantData. Trata-se de um campo criado para a solicitação. 5. O site de e-commerce envia para o navegador do comprador uma solicitação HTTP POST com: Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 61 / 237 • PaReq • TermUrl • MD 6. O comprador é redirecionado para o site do banco emissor (ACS) e autentica-se. 7. No final da autenticação, o comprador é redirecionado para o site de e-commerce. O navegador dele realiza e envia uma solicitação POST para o site de e-commerce com os campos MD e PaRes. 8. O site de e-commerce recupera estes dois campos e os transmite para a plataforma de pagamento para verificar a autenticação e criar a transação. Para criar a transação, ele deve: • chamar de novo a operação createPayment informando o atributo mode do objeto threeDSRequest a ENABLED_FINALIZE, • informar o atributo requestId do objeto threeDSRequest, • informar o atributo pares do objeto threeDSRequest, 9. O MPI da plataforma de pagamento verifica os dados presentes no PaRes : • o comprador não se autenticou, o pagamento é recusado. • o comprador autenticou-se, a plataforma de pagamento realiza a solicitação de autorização. 10.A plataforma de pagamento (authenticationResultData). retorna o resultado para o site de e-commerce Iniciar um pagamento com 3D Secure O exemplo abaixo permite iniciar um pagamento (createPayment) com autenticação 3D Secure. <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v5="http:// v5.ws.vads.lyra.com/"> <soap:Header xmlns:soapHeader="http://v5.ws.vads.lyra.com/Header"> <soapHeader:shopId>12345678</soapHeader:shopId> <soapHeader:requestId>09016abd-2869-40cc-b32f-a467bd541e42</soapHeader:requestId> <soapHeader:timestamp>2015-04-01T12:09:44Z</soapHeader:timestamp> <soapHeader:mode>TEST</soapHeader:mode> <soapHeader:authToken>ASQu/agMyf5UDEkd2HZbBZAKkIjrAMoJV98ZN2W9o/g=</soapHeader:authToken> </soap:Header> <soap:Body> <v5:createPayment> <commonRequest> <paymentSource>EC</paymentSource> <submissionDate>2015-04-01T12:09:44Z</submissionDate> </commonRequest> <threeDSRequest> <mode>ENABLED_CREATE</mode> </threeDSRequest> <paymentRequest> <amount>1</amount> <currency>978</currency> <manualValidation>1</manualValidation> </paymentRequest> <orderRequest> <orderId>TEST-01</orderId> </orderRequest> <cardRequest> <number>4970100000000009</number> <scheme>VISA</scheme> <expiryMonth>12</expiryMonth> <expiryYear>2015</expiryYear> <cardSecurityCode>123</cardSecurityCode> <cardHolderBirthDay>1976-04-18</cardHolderBirthDay> </cardRequest> </v5:createPayment> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 62 / 237 A criação de um pagamento com autenticação 3D Secure retorna um objeto threeDSResponse. Exemplos de respostas: pagamento com autenticação 3D Secure solicitada • Caso 1: o cartão esta alistado <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <shopId xmlns="http://v5.ws.vads.lyra.com/Header/">12345678</shopId> <requestId xmlns="http://v5.ws.vads.lyra.com/Header/">09016abd-2869-40cc-b32fa467bd541e42</requestId> <timestamp xmlns="http://v5.ws.vads.lyra.com/Header/">2015-04-01T12:09:44Z</timestamp> <mode xmlns="http://v5.ws.vads.lyra.com/Header/">TEST</mode> <authToken xmlns="http://v5.ws.vads.lyra.com/ Header/">3fRs8IRBhkPvomIoILJmP/4sdfWg4V5AbppfGEN7PW0=</authToken> </env:Header> <soap:Body> <ns2:createPaymentResponse xmlns:ns2="http://v5.ws.vads.lyra.com/"> <createPaymentResult> <requestId>09016abd-2869-40cc-b32f-a467bd541e42</requestId> <commonResponse> <responseCode>0</responseCode> <responseCodeDetail>Action successfully completed</responseCodeDetail> </commonResponse> <paymentResponse/> <orderResponse/> <cardResponse/> <authorizationResponse/> <captureResponse/> <customerResponse/> <markResponse/> <threeDSResponse> <authenticationRequestData> <threeDSAcctId>98b7b83c590d4aaabab3667b4ec2</threeDSAcctId> <threeDSAcsUrl>https://[ACS-URL]</threeDSAcsUrl> <threeDSBrand>VISA</threeDSBrand> <threeDSEncodedPareq>eJxVUstu2zAQ/BVBd5kPiaZkrBgkNYqka[...]</ threeDSEncodedPareq> <threeDSEnrolled>Y</threeDSEnrolled> <threeDSRequestId>_a7c5c935-24d1-4d6c-873e-7e29f4e5dec1</ threeDSRequestId> </authenticationRequestData> </threeDSResponse> <extraResponse/> <fraudManagementResponse/> </createPaymentResult> </ns2:createPaymentResponse> </soap:Body> </soap:Envelope> • Caso 2: o cartão não esta alistado <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <shopId xmlns="http://v5.ws.vads.lyra.com/Header/">12345678</shopId> <requestId xmlns="http://v5.ws.vads.lyra.com/Header/">c63b5e8ee6b9-47f1-8890-98ff62f4d018</requestId> <timestamp xmlns="http://v5.ws.vads.lyra.com/Header/">2015-09-17T09:19:44Z</timestamp> <mode xmlns="http://v5.ws.vads.lyra.com/Header/">TEST</mode> <authToken xmlns="http://v5.ws.vads.lyra.com/ Header/">BKlVnOafVsEJTtdQRvYgHvHVTjlt68CFKefT0s8sikk=</authToken> </SOAP-ENV:Header> <soap:Body> <ns2:createPaymentResponse xmlns:ns2="http://v5.ws.vads.lyra.com/"> <createPaymentResult><requestId>c63b5e8e-e6b9-47f1-8890-98ff62f4d018</requestId> <commonResponse> <responseCode>0</responseCode> <responseCodeDetail>Action successfully completed</responseCodeDetail> <transactionStatusLabel>AUTHORISED</transactionStatusLabel> <shopId>12345678</shopId> <paymentSource>EC</paymentSource> <submissionDate>2015-09-17T11:19:44+02:00</submissionDate> <contractNumber>5555555</contractNumber> </commonResponse> <paymentResponse> <transactionId>962003</transactionId> <amount>2990</amount> <currency>978</currency> <expectedCaptureDate>2015-09-17T11:19:44.732+02:00</expectedCaptureDate> <operationType>0</operationType> <creationDate>2015-09-17T11:19:44.702+02:00</creationDate> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 63 / 237 <transactionUuid>04474adae6c24b688d4892a1a80833c3</transactionUuid> <sequenceNumber>1</sequenceNumber> <paymentType>SINGLE</paymentType> </paymentResponse> <orderResponse> <orderId>myOder</orderId> </orderResponse> <cardResponse> <number>497010XXXXXX0001</number> <scheme>CB</scheme> <brand>CB</brand> <country>FR</country> <productCode>F</productCode> <expiryMonth>12</expiryMonth> <expiryYear>2023</expiryYear> </cardResponse> <authorizationResponse> <mode>FULL</mode> <amount>2990</amount> <currency>978</currency> <date>2015-09-17T11:19:44.702+02:00</date> <number>3fc075</number> <result>0</result> </authorizationResponse> <captureResponse/> <customerResponse> <billingDetails> <email>[email protected]</email> <language>fr_FR</language> </billingDetails> <shippingDetails/> <extraDetails/> </customerResponse> <markResponse/> <threeDSResponse> <authenticationRequestData/> <authenticationResultData> <brand>VISA</brand> <enrolled>N</enrolled> <transactionCondition>COND_3D_NOTENROLLED</transactionCondition> </authenticationResultData> </threeDSResponse> <extraResponse/> <fraudManagementResponse> <riskControl> <name>COMMERCIAL_CARD</name> <result>OK</result> </riskControl> <riskControl> <name>SYSTEMATIC_AUTO</name> <result>OK</result> </riskControl> <riskAssesments/> </fraudManagementResponse> </createPaymentResult> </ns2:createPaymentResponse> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 64 / 237 Manter uma mesma sessão HTTP para um pagamento com autenticação 3D Secure A arquitetura da plataforma de pagamento baseia-se em um conjunto de servidores com repartição de carga. Para garantir a continuidade do processo, cada solicitação vinculada a um mesmo pagamento deve ser realizada com a mesma sessão HTTP. Desta forma, para toda solicitação createPayment com autenticação 3D Secure (threeDSRequest), uma sessão é criada no servidor. A ID desta sessão deve ser retornada no cabeçalho HTTP da resposta e deverá ser retornada na solicitação createPayment em modo ENABLED_FINALIZE. Em função da linguagem utilizada, seguem dois exemplos para efetuar esta operação. • Em JAVA Utilize a propriedade SESSION_MAINTAIN_PROPERTY garantido que ela seja valorizada como True para recuperar automaticamente as informações de sessão associadas à solicitação HTTP e manter um cookie com o ID da sessão (Standard Java , JAX-WS). ((BindingProvider)port).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY,true); • Em PHP Segue um exemplo de código para resgatar a id de sessão e transmiti-la: /* O método abaixo permite resgatar o cabeçalho HTTP da resposta $/$header= $client -> __getLastResponseHeaders (); /* No string de símbolos obtido, procuramos a presença do ID da sessão HTTP, armazenada no elemento "JSESSIONID" : */ if(!preg_match("#JSESSIONID=([A-Za-z0-9\.]+)#",$header, $matches)){ return " Nenhum ID de Sessão retornado. " ; //Case de erro técnico } $cookie= $matches[1] ) ; /*O método abaixo permite especificar um cookie que será enviado em todo cabeçalho http */ $client ->__setCookie ("JSESSIONID",$cookie ); Este método permite ao servidor resgatar o conteudo do header e transmiti-lo na forma de cookie na solicitação HTTP. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 65 / 237 Redirecionar o navegador do comprador para o ACS dele Após ter resgatado o conteúdo do objeto authenticationRequestData, é preciso redirecionar o navegador do comprador para o ACS dele, retornando uma página HTML com um formulário POST auto submetido. A url do ACS é utilizada como ação do POST. O valor dele é redirecionado para o campo threeDSAcsUrl. É preciso também ter uma URL de retorno no servidor para resgatar a resposta do ACS retornada por POST. Este formulário deve obrigatoriamente conter os atributos seguintes: • PaReq Mensagem PAReq encodificada, pronto para enviar ao ACS. • TermUrl URL de retorno para tratar o retorno do ACS. • MD Contém o código de sessão presente no cabeçalho HTTP da resposta(JSESSIONID) e o código da solicitação (threeDSRequestId) presente no objeto authenticationRequestData da resposta separado por um separador (por exemplo o caractere « + »). Estes dados serão restituídos na resposta do ACS. Nota a respeito do modo TEST: Para manter a continuidade das transações em modo teste, é preciso transmitir o código da sessão durante o redirecionamento para o ACS. Isto deverá ser feito concatenando: • A URL do ACS obtida na resposta authenticationRequestData • O código de sessão retornado no cabeçalho http, separados por ;jsessionid= » Respeitar a sintaxe seguinte: ${URL};jsessionid=${session} Exemplo : <form name="Form" method="post" action=https://secure.payzen.com.br/vads-payment/ acs.silent_authenticate.a;jsessionid=B420BF68835F6563FB6E4B289ABB9080.bdxvad3" > ... </form> EM MODO PRODUÇÃO, VOCÊ NUNCA DEVE TRANSMITIR UM CÓDIGO DE SESSÃO PARA O ACS Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 66 / 237 Resgatar a resposta do ACS Para resgatar a resposta do ACS, é preciso configurar uma URL de retorno do ACS. Esta permitirá retornar os dados do PaRes para o site de e-commerce. Os parâmetros retornados pelo ACS são os seguintes: • PaRes : contém a mensagem PaRes (Payer Authentication Response). • MD : Contém o código de sessão presente no cabeçalho da resposta e o código da solicitação (threeDSRequestId ) presente na resposta authenticationRequestData. Estes dois valores devem ser extraídos para utiliza-los durante a chamada da operação createPayment quando o atributo mode do objeto threeDSRequest for valorizado a ENABLED_FINALIZE. Exemplo: PaRes:eJzNWVmPo0i2frfk/1CqeXRXsZjFtJw5YjVgg81mlpcrdjCrzWr/+gln1pLdqjvqOz0PN6UUcIg4ceIs33cCb/ 85V+WnMb51eVO/fEa+wp8/xXXYRHmdvny2TOHL5vM/X7dmdotjzojD4Ra/bpW46/w0/pRHL5//hyBQHEsI/ EuyJsMvGBmvv1BUsPlCUlQUUFiAoQH5+XV7ovW4e5vR5WkdR1//6sRvtr0C076iW+j7IzDiFmZ+3b9u/ [...] MD:pcpSryKqB0NynWVHj8LQj0uz+_66254f65-f37c-47e3-99b8-799db94b42b7 Neste exemplo, o campo MD contém o código da sessão e o código da solicitação, separados pelo símbolo «+»: JSESSIONID: pcpSryKqB0NynWVHj8LQj0uz requestId:_66254f65-f37c-47e3-99b8-799db94b42b7 Verificar a autenticação e finalizar o pagamento Para verificar o resultado da autenticação 3DS e finalizar o pagamento, é preciso submeter para a plataforma de pagamento: • o requestId, • a mensagem PaRes recebida após a autenticação 3DS. Para isso, é preciso chamar a operação createPayment e valorisar o atributo mode do objeto threeDSRequest a ENABLED_FINALIZE. Esta operação retornará uma resposta threeDSResponse com um objeto authenticationResultData. <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v5="http:// v5.ws.vads.lyra.com/"> <soap:Header xmlns:soapHeader="http://v5.ws.vads.lyra.com/Header"> <soapHeader:shopId>12345678</soapHeader:shopId> <soapHeader:requestId>1416ffba-66ca-4609-bac8-041764fa4cad</soapHeader:requestId> <soapHeader:timestamp>2015-04-01T12:18:21Z</soapHeader:timestamp> <soapHeader:mode>TEST</soapHeader:mode> <soapHeader:authToken>J8wgBbvfbMGWZAMUbn+3HFUJMblBG+//rkclkJOz2aA=</soapHeader:authToken> </soap:Header> <soap:Body> <v5:createPayment> <commonRequest> <paymentSource>EC</paymentSource> <submissionDate>2015-04-01T12:18:21Z</submissionDate> </commonRequest> <threeDSRequest> <mode>ENABLED_FINALIZE</mode> <pares>eJzNWVmPo0i2frfk/1CqeXRXsZjFtJw5YjVgg81mlpcrdjCrzWr/+gl [...] </pares> <requestId>_66254f65-f37c-47e3-99b8-799db94b42b7</requestId> </v5:createPayment> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 67 / 237 Exemplo de arquivo de resposta gerado após a chamada ENABLED_FINALIZE : <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <shopId xmlns="http://v5.ws.vads.lyra.com/Header/">12345678</shopId> <requestId xmlns="http://v5.ws.vads.lyra.com/Header/">1416ffba-66ca-4609-bac8-041764fa4cad</ requestId> <timestamp xmlns="http://v5.ws.vads.lyra.com/Header/">2015-04-01T12:18:21Z</timestamp> <mode xmlns="http://v5.ws.vads.lyra.com/Header/">TEST</mode> <authToken xmlns="http://v5.ws.vads.lyra.com/ Header/">CwOMOsyYYLzxcDyY0+7JyNi70uUbNEYGUAD81MttVnA=</authToken> </env:Header> <soap:Body> <ns2:createPaymentResponse xmlns:ns2="http://v5.ws.vads.lyra.com/"> <createPaymentResult> <requestId>1416ffba-66ca-4609-bac8-041764fa4cad</requestId> <commonResponse> <responseCode>0</responseCode> <responseCodeDetail>Action successfully completed</responseCodeDetail> <transactionStatusLabel>AUTHORISED_TO_VALIDATE</transactionStatusLabel> <shopId>12345678</shopId> <paymentSource>EC</paymentSource> <submissionDate>2015-04-01T14:09:44+02:00</submissionDate> <contractNumber>5785350</contractNumber> </commonResponse> <paymentResponse> <transactionId>124472</transactionId> <amount>1</amount> <currency>978</currency> <expectedCaptureDate>2015-04-01T14:18:58.522+02:00</expectedCaptureDate> <operationType>0</operationType> <creationDate>2015-04-01T14:18:58.514+02:00</creationDate> <transactionUuid>170fd39a02c847feb5a5f750e8b320d2</transactionUuid> <sequenceNumber>1</sequenceNumber> <paymentType>SINGLE</paymentType> </paymentResponse> <orderResponse> <orderId>TEST-01</orderId> </orderResponse> <cardResponse> <number>497010XXXXXX0009</number> <scheme>CB</scheme> <brand>CB</brand> <country>FR</country> <productCode>G1</productCode> <bankCode>17807</bankCode> <expiryMonth>12</expiryMonth> <expiryYear>2015</expiryYear> </cardResponse> <authorizationResponse> <mode>FULL</mode> <amount>1</amount> <currency>978</currency> <date>2015-04-01T14:18:58.514+02:00</date> <number>3fea6c</number> <result>0</result> </authorizationResponse> <captureResponse/> <customerResponse> <billingDetails> <language>fr_FR</language> </billingDetails> <shippingDetails/> <extraDetails/> </customerResponse> <markResponse/> <threeDSResponse> <authenticationResultData> <brand>VISA</brand> <enrolled>Y</enrolled> <status>Y</status> <eci>05</eci> <xid>TUN3a0JZczB2QlRDeHZTT2lqakk=</xid> <cavv>Q2F2dkNhdnZDYXZ2Q2F2dkNhdnY=</cavv> <cavvAlgorithm>2</cavvAlgorithm> <transactionCondition>COND_3D_SUCCESS</transactionCondition> </authenticationResultData> </threeDSResponse> <extraResponse/> <fraudManagementResponse> <riskControl> <name>CARD_FRAUD</name> <result>OK</result> </riskControl> <riskControl> <name>COMMERCIAL_CARD</name> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 68 / 237 <result>OK</result> </riskControl> </fraudManagementResponse> </createPaymentResult> </ns2:createPaymentResponse> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 69 / 237 6.2. Modificar uma transação de pagamento 'updatePayment' updatePayment permite: • Modificar o valor de uma transação (para baixo) • Modificar a data de captura desejada As transações que podem estar sujeitas à modificação possuem uns dos status seguintes: • Para ser aprovado • Para ser aprovado e autorizado • Autorização em andamento • Captura em andamento Observação : Se nenhuma informação for modificada, a solicitação sera rejeitada com um código de erro. Solicitação para enviar A solicitação updatePayment é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação updatePayment toma na entrada um objeto do tipo updatePayment. O tipo updatePayment é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest queryRequest queryRequest paymentRequest paymentRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 70 / 237 Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Somente um atributo pode ser valorizado, se precisar: commonRequest Atributo Requisito comment Comentário livre. Formato string Tabela 41 : Objeto commonRequest O comentário será exibido no histórico da transação que você pode consultar no Back Office. O objeto paymentRequest permite transmitir informações sobre o pagamento. Possui os atributos seguintes: paymentRequest Atributo Requisito amount Valor da transação expresso na menor unidade da moeda . Observação: • Não deve ser enviado vazio ou com o valor 0. • Não deve ser superior ao valor inicial (exemplo: reembolso). Formato n..12 currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. n3 expectedCaptureDate Data de entrega solicitada apresentada no formato ISO 8601 definido pelo W3C. Exemplo: 2016-07-16T19:20:00Z. Este parâmetro é utilizado para efetuar um pagamento a prazo. Se a quantidade de dias entre a data de captura e a data do dia vigente for superior ao tempo de validade da autorização, uma autorização de 1 BRL será realizada o mesmo dia da transação. Permite verificar a validade do cartão. A autorização para o valor total será efetuada: • processo padrão: o dia da data de captura no banco desejada, • processo com autorização antecipada: em função do meio de pagamento selecionado, a Dquantidade de dias correspondente ao tempo de validade de uma autorização antes da data de captura no banco desejada. Se você quiser receber a notificação de resultado desta solicitação de autorização, você deve configurar a regra de notificação URL de notificação em autorização por Batch no Back Office (Configuração > Regras de notificações). dateTime ans..40 manualValidation Permite validar manualmente uma transação enquanto a data de entrega desejada não for vencida. Para isso, este atributo deve ser valorizado a 1 (validação manual). Com o valor 0, a validação será automática. n1 Tabela 42 : Objeto paymentRequest O objeto queryRequest permite consultar uma transação para saber quais são os diferentes atributos dela. O atributo a ser valorizado é o seguinte: queryRequest Atributo uuid Referência única da transação. Observação: este atributo é utilizado para substituir antigos atributos transactionId, sequenceNumber e creationDate. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 71 / 237 Requisito Formato string queryRequest Atributo Porém, pode-se continuar a utilizar estes antigos atributos por razões de retro compatibilidade. Para maiores informações, consultar o capítulo Gerenciar a retro contabilidade. Requisito Formato Tabela 43 : Objeto queryRequest Os atributos orderId, subscriptionId e paymentToken não são hoje levados em consideração para esta operação. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 72 / 237 Resposta A resposta à operação updatePayment é constituída de um HEADER e de um BODY de tipo updatePaymentResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem updatePaymentResponse é a seguinte: Nome Tipo updatePaymentResult updatePaymentResult A estrutura da mensagem updatePaymentResult é a seguinte: Objeto Tipo commonResponse commonResponse paymentResponse paymentResponse orderResponse orderResponse cardResponse cardResponse authorizationResponse authorizationResponse captureResponse captureResponse customerResponse customerResponse markResponse markResponse threeDSResponse threeDSResponse extraResponse extraResponse fraudManagementResponse fraudManagementResponse Observação : o objeto subscriptionResponse não está valorizado na resposta. Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 73 / 237 O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso (não confundir com o status da transação). • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string transactionStatusLabel Denominação do status da transação. Os valores possíveis são: • AUTHORISED Captura em andamento. string • • A transação foi aceita e será capturada automaticamente no banco na data prevista. AUTHORISED_TO_VALIDATE Para ser aprovado. A transação, criada em validação manual, foi autorizada. O vendedor deve validar manualmente a captura no banco. A transação pode ser aprovada enquanto a data de captura não for vencida. Se esta data estiver vencida, então o pagamento tem o status Expirado (status definitivo). WAITING_AUTHORISATION Autorização em andamento. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitado de autorização e a captura no banco serão acionadas automaticamente. WAITING_AUTHORISATION_TO_VALIDATE Para ser aprovado e autorizado. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitação de autorização será automaticamente efetuada a D-1 antes da data de captura no banco. O pagamento poderá ser aceito ou recusado. A captura no banco é automática. REFUSED Recusada. A transação foi recusada. shopId Código da loja. n8 paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. • MOTO para um pedido por e-mail ou telefone. • CC para um call center. • OTHER para um outro canal de venda. submissionDate Data e hora UTC da transação apresentadas em formato W3C (exemplo: 2016-07-16T19:20:00Z). contractNumber Número de contrato comerciante utilizado. string (enum) dateTime ans..40 string Tabela 44 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 74 / 237 O objeto paymentResponse detalha as informações sobre a transação. paymentResponse Formato transactionUuid Referência única da transação gerada pela plataforma de pagamento. string ans32 transactionId Código da transação durante a criação ou a modificação de uma transação de pagamento. Seu valor é único para o mesmo dia. • Ou este código será gerado pela plataforma. • Ou este código será gerado pelo site de e-commerce. an..6 amount Valor da transação expresso na menor unidade da moeda . n..12 currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. effectiveAmount Valor da transação na moeda efetivamente usada para a captura no banco. effectiveCurrency Moeda efetivamente usada para a captura no banco. expectedCaptureDate Data de captura no banco solicitada. operationType Tipo de operação Os valores possíveis são: • DEBIT para uma operação de débito. • CREDIT para uma operação de reembolso. creationDate Data e hora do registro da transação apresentado em formato W3C. n3 n..12 n3 dateTime ans..40 string dateTime ans..40 externalTransactionId Referência dada por um terceiro: número de transação para Paypal, Boleto, RRN para Prism, etc... string liabilityShift Transferência de responsabilidade. Os valores possíveis são: • YES quando o pagamento é garantido. • NO quando pagamento não é garantido. string paymentType Tipo de pagamento. Os valores possíveis são: • SINGLE string (enum) • Pagamento em uma única parcela. INSTALLMENT • Pagamento em várias parcelas. SPLIT • Pagamento realizado com vários meios de pagamento. SUBSCRIPTION • Pagamento por Token cartão ou vinculado a uma assinatura. RETRY Quando um pagamento for recusado, pode-se reiterar a solicitação de pagamento. Para qualquer reiteração, o pagamento será valorizado com este valor. Observação: Durante uma operação createPayment, somente um pagamento em uma única parcela pode ser criada (valor SINGLE). Os valores INSTALLMENT, SPLIT, SUBSCRIPTION e RETRY podem ser retornados somente se há pagamentos que foram criados via o formulário de pagamento. sequenceNumber Número de seqüência da transação. Vale "1" para um pagamento unitário. Toma o valor do número de prestação no caso de um pagamento parcelado criado a partir do formulário de pagamento. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 75 / 237 n..3 paymentResponse Formato paymentError Complemento de informação em caso de erro técnico. Retorna um código de erro associado ao erro técnico (ver capítulo Gerenciar os códigos de erros durante um pagamento recusado). n..3 Tabela 45 : Objeto paymentResponse O objeto orderResponse detalha o pedido. orderResponse Formato orderId Referência do pedido. string an..64 extInfo Dados personalizados retornados em função das necessidades. Exemplo : extInfo.key, extInfo.value • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). extInfo Tabela 46 : Objeto orderResponse O objeto cardResponse apresenta em detalhes as informações sobre o meio de pagamento utilizado. cardResponse Formato number • Número de cartão inválido. Contém os 6 primeiros dígitos do número, seguido por "XXXXXX" e finalmente os 4 últimos números. • IBAN e BIC usados para o pagamento, separados por um "_" no caso de um pagamento por débito no cartão de crédito. string scheme Tipo do cartão. string brand Marca do cartão. string country Código país do país emissor do cartão (Código numérico ISO 3166). productCode Código produto do cartão. ISO 3166 ano..3 bankCode Código banco do banco emissor. n..5 expiryMonth Mês de vencimento entre 1 e 12 (ex: 3 para março, 10 para outubro). n..2 expiryYear Ano de vencimento com 4 dígitos (ex: 2023). n4 Tabela 47 : Objeto cardResponse O objeto authorizationResponse permite obter informações sobre a solicitação de autorização. authorizationResponse Formato mode Especifica de que maneira é realizada a solicitação de autorização. Dois valores possíveis: • MARK Uma autorização 1 BRL foi efetuada para verificar a validade do cartão. • string Isso acontece quando a data de captura ultrapassa o período de validade de uma autorização . FULL Autorização para o valor total pedido na solicitação. amount Valor da autorização na menor unidade da moeda se mode vale FULL. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 76 / 237 n..12 authorizationResponse Formato currency Código da moeda utilizada durante o pedido de autorização (conforme a norma ISO 4217) se mode vale FULL. date Data e hora do pedido de autorização se mode vale FULL. n3 dateTime anos..40 number Número do pedido de autorização se mode vaut FULL. n..2 result Código retorno da solicitação de autorização retornado pelo banco emissor quando for recusado. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n..2 Tabela 48 : Objeto authorizationResponse O objeto captureResponse permite obter informações a respeito do desconto se a transação for com desconto. captureResponse Formato date Data e hora de captura. dateTime anos..40 number Número de captura. n3 reconciliationStatus Status de aproximação bancária da transação. n1 refundAmount Valor que já foi sujeito a um reembolso na sua menor unidade de moeda. refundCurrency Moeda do valor que já foi sujeito a um reembolso (Código moeda ISO 4217: 986 para o BRL; 840 para o dólar americano.. chargeback Lítigio, não pago. Os valores possíveis são: • 0 : transação sujeita a um litígio. • 1 : transação não sujeita a um litígio. Tabela 49 : Objeto captureResponse O objeto customerResponse detalha as numerosas informações sobre o comprador. A resposta contém as análises de: • billingDetails Dados de faturamento do comprador. • shippingDetails Dados de entrega do comprador. • extraDetails Dados técnicos sobre o comprador. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 77 / 237 n..12 n3 billingDetails Atributo Formato reference Referência do comprador. string n..80 title Estado civil do comprador. Exemplos de valores possíveis: • Senhora, etc.. string n..80 type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 email E-mail do comprador. Parâmetro obrigatório quando criar um alias. string ans..150 streetNumber Número de rua do comprador. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço do comprador. string ans..255 district Bairro do comprador. string ans..127 zipCode CEP do comprador. string ans..64 city Cidade do comprador. string ans..128 state UF / Região do comprador. string ans..128 country País do comprador conforme à norma ISO 3166. Exemplos de valores possíveis: • DE para a Alemanha • IT para a Itália • PT para o Portugal • GB para o Reino-Unido • JA para o Japão • RU para a Rússia • ES para a Espanha • NL para a Holanda • SE para a Suécia • FR para a França • PL para a Polônia • CN para a China string - a2 language Idioma do comprador conforme à norma ISO 639-1. Exemplos de valores possíveis: • de para o alemão • it para o italiano • pt para o português • en para o inglês • ja para o japonês • ru para o russo • es para o espanhol • nl para o holandês • sv para o sueco • fr para o francês • pl para o polonês • zh para o chinês • tr para o turco cellPhoneNumber Número de telefone celular string - a2 string ans..32 legalName Razão social da empresa. string ans..128 Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 78 / 237 billingDetails Atributo Formato identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 50 : Objeto billingDetails shippingDetails Atributo Formato type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 streetNumber Número de rua para a entrega. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço de entrega. string ans..255 address2 Complemento de endereço de entrega. string ans..255 district Bairro de entrega. string ans..127 zipCode CEP de entrega. string ans..64 city Cidade de entrega. string ans..128 state UF / Região de entrega. string ans..128 country País de entrega. string - a2 deliveryCompanyName Informações sobre a transportadora. string ans..128 shippingSpeed Modo de entrega selecionado. Os valores possíveis são: • STANDARD para uma entrega padrão. • EXPRESS para uma entrega express. string (enum) shippingMethod Método de entrega utilizado. Os valores possíveis são: • RECLAIM_IN_SHOP para retirar a mercadoria na loja. • RELAY_POINT para a utilização de uma rede de pontos de entrega terceirizada (Kiala, Alveol, etc). • RECLAIM_IN_STATION para retirar num aeroporto, uma agência de viagens ou outros. • PACKAGE_DELIVERY_COMPANY para a entrega por transportadora (Colissimo, UPS, etc). • ETICKET para emitir de uma passagem eletrônica, baixar. string (enum) Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 79 / 237 shippingDetails Atributo Formato legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 51 : Objeto shippingDetails extraDetails Formato ipAddress O endereço IP do comprador. string ans40 Tabela 52 : Objeto extraDetails O objeto markResponse permite obter informações sobre a solicitação de autorização de 1 BRL. markResponse Formato amount Valor utilizado para verificar a validade do cartão, na menor unidade da moeda . n..12 currency Código da moeda utilizado para verificar a validade do cartão (conforme a norma ISO 4217). n3 date Data e hora da solicitação de autorização efetuada se o atributo mode do objetoauthorizationResponse vaut MARK. dateTime anos..40 number Número de autorização da solicitação de autorização se o atributo mode do objeto authorizationResponse vale MARK. dateTime anos..40 result Resultado da solicitação de autorização efetuada se o atributo mode do objeto authorizationResponse vale MARK. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n..2 Tabela 53 : Objet markResponse O objeto threeDSResponse permite obter informações sobre a autenticação 3D Secure. Este objeto contém: • authenticationRequestData Descreve o resultado da solicitado de alistamento bem como a mensagem codificada que será transmitida pelo navegador para o ACS. • authenticationResultData Descreve os detalhes da autenticação 3D Secure. authenticationRequestData Formato threeDSAcctId Certificado reenviado pelo Directory Server. string threeDSAcsUrl Url de ACS que deve ser solicitado. string threeDSBrand Rede do cartão. string threeDSEncodedPareq Mensagem PAReq encodificada, pronto para enviar ao ACS. string threeDSEnrolled a1 Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 80 / 237 authenticationRequestData Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. Formato threeDSRequestId Número de solicitação, para relembrar na chamada ENABLED_FINALIZE do atributo mode do objeto threeDSRequest. Tabela 54 : Objeto authenticationRequestData Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 81 / 237 string authenticationResultData Formato transactionCondition Status da autenticação 3D Secure. Os valores possíveis são: • COND_3D_SUCCESS Sucesso da autenticação. • • • • • string O vendedor e o portador do cartão estão inscritos ao programa 3D Secure e o portador autenticou-se corretamente. COND_3D_FAILURE Autenticação não sucedida. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não conseguiu autenticar-se (senha errada). COND_3D_ERROR Autenticação em falha. O vendedor participa ao programa 3D secure mas o servidor da plataforma de pagamento encontrou um problema técnico durante o processo de autenticação (quando verificou a inscrição do cartão ao programa 3D ou durante a autenticação do portador). COND_3D_NOTENROLLED Portador não alistado. O vendedor participa ao programa 3D Secure mas o cartão do portador não é alistado. COND_3D_ATTEMPT Tentativa de autenticação. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não teve que autenticar-se (o servidor de controle de acesso do banco que emitiu o cartão somente implementa a geração de um comprovante de tentativa de autenticação). COND_SSL 3D Secure não aplicável. O vendedor não é alistado ao 3D Secure ou o canal de venda não tem cobertura com esta garantia. enrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. string status Status da autenticação do portador. Os valores possíveis são: • Y para um status autenticado 3 DS. • N para um erro de autenticação. • U para uma autenticação impossível. • A para uma tentativa de autenticação. a1 eci Indicador de Comercio Eletrônico. O valor eci depende do status da autenticação 3DS e do tipo de cartão. Os valores possíveis são: status =Y status = A status = U status =N VISA - AMEX 5 6 7 - MasterCard 02 01 - - xid Número de transação 3DS. string string cavvAlgorithm Algoritmo de verificação da autenticação do portador (CAVV). Os valores possíveis são: • 0 para HMAC. • 1 para CVV. • 2 para CVV_ATN. • 3 para Mastercard SPA. n1 cavv Certificado do ACS. string signValid Assinatura da autenticação 3DS. string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 82 / 237 authenticationResultData Formato brand Rede do cartão. string Tabela 55 : Objeto authenticationResultData O objeto fraudManagementResponse permite obter os resultados dos controle de gerenciamento de riscos. A resposta contem as análises dos atributos: • riskControl Retorna o resultado do controle de gerenciamento de riscos realizado. • riskAnalysis Retorna o resultado da análise de gerenciamento de riscos efetuada por um sistema externo (ClearSale, CyberSource,...). • riskAssessment Retorna o resultado da análise de gerenciamento dos riscos avançados realizado pela plataforma de pagamento. O atributo riskControl O formato é o seguinte: name1=result1;name2=result2 Nome Formato Descrição name string Nome da regra de gerenciamento de risco. result string Resultado do controle. Valores possíveis para 'name' CARD Cartão presente na lista cinza. COUNTRY País do comprador na lista cinza. IPADDR Endereço IP do comprador presente na lista cinza. AMOUNT Valor máximo autorizado por pedido foi atingido. BIN O código BIN do cartão está presente na lista cinza. ECB Detecção de um e-carte bleue. CARD_COMMERCIAL_NATIONAL Detecção de um cartão comercial nacional. CARD_COMMERCIAL_FOREIGN Detecção de um cartão comercial estrangeiro. CAS Detecção de um cartão com autorização sistemática. COUNTRY_CONSISTENCY O país de origem do cartão, o país do endereço IP do comprador e o país do comprador não correspondem. NON_GUARANTEED_PAYMENT Detecção de um pagamento sem transferência de responsabilidade. IPADDR_COUNTRY O pais do endereço IP do comprador está presente na lista cinza. Tabela 56 : Valores possíveis para 'name' Valores possíveis para 'result' OK Indica que o controle é correto. KO Indica que o controle está em falha. Tabela 57 : Valores possíveis para 'result' O atributo riskAnalysis riskAnalysis Formato score Pontuação atribuída para toda transação para avaliar o risco associado a ela. string resultCode string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 83 / 237 riskAnalysis Código retornado por um analista de risco externo. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno retornados pelo analista de risco externo. Formato status Status da analise de risco Os valores possíveis são os seguintes: • P_SEND_OK, "Sent to clearsale and successfully processed" Sucesso • P_TO_SEND, "Transaction analysis is scheduled to be sent to risk analyzer" O envio está programado • P_TO_SEND_KO, "Problem when tried to send to risk analyzer" Erro de tratamento • P_PENDING_AT_ANALYZER, "Analysis result is still being processed by the risk analyzer. We should keep checking/waiting for the analysis result" Tratamento em andamento pelo analista • P_MANUAL, "Analysis should be requested through user request (not automatically)" A espera de envio manual • P_SKIPPED, "Analysis request discarded by current transaction status/problem" Descartado • P_SEND_EXPIRED, "Analysis request expired" Vencido string requestId Código da analise para o analista de risco. string extraInfo Sem valorização para ClearSale. Para CyberSource, este atributo retorna todos os códigos retornados pelo DecisionManager. • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). Exemplo : • COR-BA=Endereço de faturamento corrigido ou corrigível • A=Mudanças de endereços excessivos. O comprador mudou de endereço de faturamento pelo menos duas vezes durante os seis últimos meses. • etc. extInfo Tabela 58 : Atributo riskAnalysis O atributo riskAssessment Valores Descrição ENABLE_3DS 3D Secure ativado DISABLE_3DS 3D Secure desativado MANUAL_VALIDATION A transação foi criada em validação manual. A captura do pagamento esta bloqueada temporariamente para permitir ao vendedor efetuar todas as verificações desejadas. REFUSE A transação foi recusada. RUN_RISK_ANALYSIS Chamada para um analisador de riscos externos sob a condição que o vendedor possua um contrato Consultar a descrição do campo vads_risk_analysis_result para identificar a lista dos valores possíveis e a descrição deles. INFORM Uma alerta apareceu. O vendedor é avisado quando um risco é identificado. O vendedor é informado via uma ou mais regras do centro de notificação (URL de notificação, e-mail ou SMS). Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 84 / 237 O objeto extraResponse permite obter informações adicionais sobre o pagamento. extraResponse Formato paymentOptionCode Reservado para um uso específico (Brasil). Define o código de opção utilizada para caracterizar a quantidade de prestações para uma transação). n..2 paymentOptionOccNumb Reservado para um uso específico. Define a quantidade de prestações para uma transação. Por exemplo, para um pagamento em 3 vezes, este atributo terá o valor 3. string Tabela 59 : Objeto extraResponse 6.3. Modificar os dados (carrinho) de uma transação 'updatePaymentDetails' updatePaymentDetails permite modificar/atualizar os dados do carrinho. updatePaymentDetails é por enquanto somente disponível para as transações Klarna, com a condição que estas: • possuam um carrinho • tenham um dos status seguintes: • Para ser aprovado e autorizado • Para ser aprovado • Para ser autorizado • Captura em andamento • Capturado • sejam de um valor global menor ou igual (sem aumento) Solicitação para enviar A solicitação updatePaymentDetails é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação updatePaymentDetails toma na entrada um objeto do tipo updatePaymentDetails. O tipo updatePaymentDetails é constituído dos parâmetros seguintes: Objeto Formato queryRequest queryRequest shoppingCartRequest shoppingCartRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 85 / 237 Requisito O objeto queryRequest permite consultar uma transação para saber quais são os diferentes atributos dela. O atributo a ser valorizado é o seguinte: queryRequest Atributo Requisito uuid Referência única da transação. Observação: este atributo é utilizado para substituir antigos atributos transactionId, sequenceNumber e creationDate. Porém, pode-se continuar a utilizar estes antigos atributos por razões de retro compatibilidade. Para maiores informações, consultar o capítulo Gerenciar a retro contabilidade. Formato string Tabela 60 : Objeto queryRequest Os atributos orderId, subscriptionId e paymentToken não são hoje levados em consideração para esta operação. O objeto shoppingCartRequest permite transmitir o conteúdo do carrinho modificado. Deve conter todos os atributos que permitirão definir o carrinho definitivo. Observação: Se um atributo for apagado na solicitação, ele será apagado definitivamente. Para evitar erros ou omissões, todos os campos são requeridos. Aconselhamos enviá-los na solicitação mesmo se um deles for valorizado a 0 ou vazio. shoppingCartRequest Atributo Requisito Formato insuranceAmount Valor do seguro n..3 shippingAmount Despesas de entrega. n..3 cartItemInfo Campos personalizáveis para adicionar elementos no carrinho. O atributo cartItemInfo contém sub objetos: • productLabel : nome do produto. O formato dele é "string". • productType : tipo do artigo. O formato dele é "string (enum)". Valor Descrição FOOD_AND_GROCERY Produtos alimentares e de mercadinho AUTOMOTIVE Automóveis / Motos ENTERTAINMENT Entretenimento / Cultura HOME_AND_GARDEN Casa e jardim HOME_APPLIANCE Equipamentos para a casa AUCTION_AND_GROUP_BUYING Leilões e compras em grupo FLOWERS_AND_GIFTS| Flores e presentes COMPUTER_AND_SOFTWARE Computadores e softwares HEALTH_AND_BEAUTY Saúde e beleza SERVICE_FOR_INDIVIDUAL Serviços para pessoa física SERVICE_FOR_BUSINESS Serviços para pessoa jurídica SPORTS Esportes CLOTHING_AND_ACCESSORIES Roupas e acessórios TRAVEL Viagem HOME_AUDIO_PHOTO_VIDEO Som, imagem e vídeo TELEPHONY Telefonia Tabela 62 : Valores associados a productType Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 86 / 237 cartItemInfo shoppingCartRequest Atributo • productRef : referência produto. O formato dele é "string". • productQty : quantidade de produto. O formato dele é "integer". • productAmount : valor em centavos do produto. O formato dele é "string". • productVat : valor dos impostos sobre o produto. O formato dele é "string". Exemplo : Requisito Formato <cartItemInfo> <productLabel>CHIPS</productLabel> <productType>FOOD_AND_GROCERY</productType> <productRef>188545</productRef> <productQty>10</productQty> <productAmount>10000</productAmount> </cartItemInfo> Tabela 61 : Objeto shoppingCartRequest O atributo taxAmount não é levado em consideração para esta operação, nos dias de hoje. Resposta A resposta à operação updatePaymentDetails é constituída de um HEADER e de um BODY de tipo updatePaymentDetailsResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem updatePaymentDetailsResponse é a seguinte: Nome Tipo updatePaymentDetailsResult updatePaymentDetailsResult A estrutura da mensagem updatePaymentDetailsResult é a seguinte: Objeto Tipo commonResponse commonResponse paymentResponse paymentResponse orderResponse orderResponse cardResponse cardResponse authorizationResponse authorizationResponse captureResponse captureResponse customerResponse customerResponse markResponse markResponse threeDSResponse threeDSResponse extraResponse extraResponse fraudManagementResponse fraudManagementResponse shoppingCartResponse shoppingCartResponse Observação : o objeto subscriptionResponse não está valorizado na resposta. Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 87 / 237 • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso (não confundir com o status da transação). • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string transactionStatusLabel Denominação do status da transação. Os valores possíveis são: • AUTHORISED Captura em andamento. string • • A transação foi aceita e será capturada automaticamente no banco na data prevista. AUTHORISED_TO_VALIDATE Para ser aprovado. A transação, criada em validação manual, foi autorizada. O vendedor deve validar manualmente a captura no banco. A transação pode ser aprovada enquanto a data de captura não for vencida. Se esta data estiver vencida, então o pagamento tem o status Expirado (status definitivo). WAITING_AUTHORISATION Autorização em andamento. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitado de autorização e a captura no banco serão acionadas automaticamente. WAITING_AUTHORISATION_TO_VALIDATE Para ser aprovado e autorizado. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitação de autorização será automaticamente efetuada a D-1 antes da data de captura no banco. O pagamento poderá ser aceito ou recusado. A captura no banco é automática. CAPTURED A transação foi capturada no banco. shopId Código da loja. n8 paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. • MOTO para um pedido por e-mail ou telefone. • CC para um call center. • OTHER para um outro canal de venda. submissionDate Data e hora UTC da transação apresentadas em formato W3C (exemplo: 2016-07-16T19:20:00Z). contractNumber Número de contrato comerciante utilizado. string (enum) dateTime ans..40 string Tabela 63 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 88 / 237 O objeto paymentResponse detalha as informações sobre a transação. paymentResponse Formato transactionUuid Referência única da transação gerada pela plataforma de pagamento. string ans32 transactionId Código da transação durante a criação ou a modificação de uma transação de pagamento. Seu valor é único para o mesmo dia. • Ou este código será gerado pela plataforma. • Ou este código será gerado pelo site de e-commerce. an..6 amount Valor da transação expresso na menor unidade da moeda . n..12 currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. effectiveAmount Valor da transação na moeda efetivamente usada para a captura no banco. effectiveCurrency Moeda efetivamente usada para a captura no banco. expectedCaptureDate Data de captura no banco solicitada. operationType Tipo de operação Os valores possíveis são: • DEBIT para uma operação de débito. • CREDIT para uma operação de reembolso. creationDate Data e hora do registro da transação apresentado em formato W3C. n3 n..12 n3 dateTime ans..40 string dateTime ans..40 externalTransactionId Referência dada por um terceiro: número de transação para Paypal, Boleto, RRN para Prism, etc... string liabilityShift Transferência de responsabilidade. Os valores possíveis são: • YES quando o pagamento é garantido. • NO quando pagamento não é garantido. string paymentType Tipo de pagamento. Os valores possíveis são: • SINGLE string (enum) • Pagamento em uma única parcela. INSTALLMENT • Pagamento em várias parcelas. SPLIT • Pagamento realizado com vários meios de pagamento. SUBSCRIPTION • Pagamento por Token cartão ou vinculado a uma assinatura. RETRY Quando um pagamento for recusado, pode-se reiterar a solicitação de pagamento. Para qualquer reiteração, o pagamento será valorizado com este valor. Observação: Durante uma operação createPayment, somente um pagamento em uma única parcela pode ser criada (valor SINGLE). Os valores INSTALLMENT, SPLIT, SUBSCRIPTION e RETRY podem ser retornados somente se há pagamentos que foram criados via o formulário de pagamento. sequenceNumber Número de seqüência da transação. Vale "1" para um pagamento unitário. Toma o valor do número de prestação no caso de um pagamento parcelado criado a partir do formulário de pagamento. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 89 / 237 n..3 paymentResponse Formato paymentError Complemento de informação em caso de erro técnico. Retorna um código de erro associado ao erro técnico (ver capítulo Gerenciar os códigos de erros durante um pagamento recusado). n..3 Tabela 64 : Objeto paymentResponse O objeto orderResponse detalha o pedido. orderResponse Formato orderId Referência do pedido. string an..64 extInfo Dados personalizados retornados em função das necessidades. Exemplo : extInfo.key, extInfo.value • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). extInfo Tabela 65 : Objeto orderResponse O objeto cardResponse apresenta em detalhes as informações sobre o meio de pagamento utilizado. cardResponse Formato number • Número de cartão inválido. Contém os 6 primeiros dígitos do número, seguido por "XXXXXX" e finalmente os 4 últimos números. • IBAN e BIC usados para o pagamento, separados por um "_" no caso de um pagamento por débito no cartão de crédito. string scheme Tipo do cartão. string brand Marca do cartão. string country Código país do país emissor do cartão (Código numérico ISO 3166). productCode Código produto do cartão. ISO 3166 ano..3 bankCode Código banco do banco emissor. n..5 expiryMonth Mês de vencimento entre 1 e 12 (ex: 3 para março, 10 para outubro). n..2 expiryYear Ano de vencimento com 4 dígitos (ex: 2023). n4 Tabela 66 : Objeto cardResponse O objeto authorizationResponse permite obter informações sobre a solicitação de autorização. authorizationResponse Formato mode Especifica de que maneira é realizada a solicitação de autorização. Dois valores possíveis: • MARK Uma autorização 1 BRL foi efetuada para verificar a validade do cartão. • string Isso acontece quando a data de captura ultrapassa o período de validade de uma autorização . FULL Autorização para o valor total pedido na solicitação. amount Valor da autorização na menor unidade da moeda se mode vale FULL. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 90 / 237 n..12 authorizationResponse Formato currency Código da moeda utilizada durante o pedido de autorização (conforme a norma ISO 4217) se mode vale FULL. n3 date Data e hora do pedido de autorização se mode vale FULL. dateTime anos..40 number Número do pedido de autorização se mode vaut FULL. n..2 result Código retorno da solicitação de autorização retornado pelo banco emissor quando for recusado. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n..2 Tabela 67 : Objeto authorizationResponse O objeto captureResponse permite obter informações a respeito do desconto se a transação for com desconto. captureResponse Formato date Data e hora de captura. dateTime anos..40 number Número de captura. n3 reconciliationStatus Status de aproximação bancária da transação. n1 refundAmount Valor que já foi sujeito a um reembolso na sua menor unidade de moeda. refundCurrency Moeda do valor que já foi sujeito a um reembolso (Código moeda ISO 4217: 986 para o BRL; 840 para o dólar americano.. n..12 n3 chargeback Lítigio, não pago. Os valores possíveis são: • 0 : transação sujeita a um litígio. • 1 : transação não sujeita a um litígio. Tabela 68 : Objeto captureResponse O objeto customerResponse detalha as numerosas informações sobre o comprador. A resposta contém as análises de: • billingDetails Dados de faturamento do comprador. • shippingDetails Dados de entrega do comprador. • extraDetails Dados técnicos sobre o comprador. billingDetails Atributo Formato reference Referência do comprador. string n..80 title Estado civil do comprador. Exemplos de valores possíveis: • Senhora, etc.. string n..80 Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 91 / 237 billingDetails Atributo Formato type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 email E-mail do comprador. Parâmetro obrigatório quando criar um alias. string ans..150 streetNumber Número de rua do comprador. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço do comprador. string ans..255 district Bairro do comprador. string ans..127 zipCode CEP do comprador. string ans..64 city Cidade do comprador. string ans..128 state UF / Região do comprador. string ans..128 country País do comprador conforme à norma ISO 3166. Exemplos de valores possíveis: • DE para a Alemanha • IT para a Itália • PT para o Portugal • GB para o Reino-Unido • JA para o Japão • RU para a Rússia • ES para a Espanha • NL para a Holanda • SE para a Suécia • FR para a França • PL para a Polônia • CN para a China string - a2 language Idioma do comprador conforme à norma ISO 639-1. Exemplos de valores possíveis: • de para o alemão • it para o italiano • pt para o português • en para o inglês • ja para o japonês • ru para o russo • es para o espanhol • nl para o holandês • sv para o sueco • fr para o francês • pl para o polonês • zh para o chinês • tr para o turco cellPhoneNumber Número de telefone celular string - a2 string ans..32 legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 69 : Objeto billingDetails Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 92 / 237 shippingDetails Atributo Formato type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 streetNumber Número de rua para a entrega. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço de entrega. string ans..255 address2 Complemento de endereço de entrega. string ans..255 district Bairro de entrega. string ans..127 zipCode CEP de entrega. string ans..64 city Cidade de entrega. string ans..128 state UF / Região de entrega. string ans..128 country País de entrega. string - a2 deliveryCompanyName Informações sobre a transportadora. string ans..128 shippingSpeed Modo de entrega selecionado. Os valores possíveis são: • STANDARD para uma entrega padrão. • EXPRESS para uma entrega express. string (enum) shippingMethod Método de entrega utilizado. Os valores possíveis são: • RECLAIM_IN_SHOP para retirar a mercadoria na loja. • RELAY_POINT para a utilização de uma rede de pontos de entrega terceirizada (Kiala, Alveol, etc). • RECLAIM_IN_STATION para retirar num aeroporto, uma agência de viagens ou outros. • PACKAGE_DELIVERY_COMPANY para a entrega por transportadora (Colissimo, UPS, etc). • ETICKET para emitir de uma passagem eletrônica, baixar. string (enum) legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 70 : Objeto shippingDetails Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 93 / 237 extraDetails Formato ipAddress O endereço IP do comprador. string ans40 Tabela 71 : Objeto extraDetails O objeto markResponse permite obter informações sobre a solicitação de autorização de 1 BRL. markResponse Formato amount Valor utilizado para verificar a validade do cartão, na menor unidade da moeda . n..12 currency Código da moeda utilizado para verificar a validade do cartão (conforme a norma ISO 4217). n3 date Data e hora da solicitação de autorização efetuada se o atributo mode do objetoauthorizationResponse vaut MARK. dateTime anos..40 number Número de autorização da solicitação de autorização se o atributo mode do objeto authorizationResponse vale MARK. dateTime anos..40 result Resultado da solicitação de autorização efetuada se o atributo mode do objeto authorizationResponse vale MARK. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n..2 Tabela 72 : Objet markResponse O objeto threeDSResponse permite obter informações sobre a autenticação 3D Secure. Este objeto contém: • authenticationRequestData Descreve o resultado da solicitado de alistamento bem como a mensagem codificada que será transmitida pelo navegador para o ACS. • authenticationResultData Descreve os detalhes da autenticação 3D Secure. authenticationRequestData Formato threeDSAcctId Certificado reenviado pelo Directory Server. string threeDSAcsUrl Url de ACS que deve ser solicitado. string threeDSBrand Rede do cartão. string threeDSEncodedPareq Mensagem PAReq encodificada, pronto para enviar ao ACS. string threeDSEnrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. a1 threeDSRequestId Número de solicitação, para relembrar na chamada ENABLED_FINALIZE do atributo mode do objeto threeDSRequest. Tabela 73 : Objeto authenticationRequestData Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 94 / 237 string authenticationResultData Formato transactionCondition Status da autenticação 3D Secure. Os valores possíveis são: • COND_3D_SUCCESS Sucesso da autenticação. • • • • • string O vendedor e o portador do cartão estão inscritos ao programa 3D Secure e o portador autenticou-se corretamente. COND_3D_FAILURE Autenticação não sucedida. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não conseguiu autenticar-se (senha errada). COND_3D_ERROR Autenticação em falha. O vendedor participa ao programa 3D secure mas o servidor da plataforma de pagamento encontrou um problema técnico durante o processo de autenticação (quando verificou a inscrição do cartão ao programa 3D ou durante a autenticação do portador). COND_3D_NOTENROLLED Portador não alistado. O vendedor participa ao programa 3D Secure mas o cartão do portador não é alistado. COND_3D_ATTEMPT Tentativa de autenticação. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não teve que autenticar-se (o servidor de controle de acesso do banco que emitiu o cartão somente implementa a geração de um comprovante de tentativa de autenticação). COND_SSL 3D Secure não aplicável. O vendedor não é alistado ao 3D Secure ou o canal de venda não tem cobertura com esta garantia. enrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. string status Status da autenticação do portador. Os valores possíveis são: • Y para um status autenticado 3 DS. • N para um erro de autenticação. • U para uma autenticação impossível. • A para uma tentativa de autenticação. a1 eci Indicador de Comercio Eletrônico. O valor eci depende do status da autenticação 3DS e do tipo de cartão. Os valores possíveis são: status =Y status = A status = U status =N VISA - AMEX 5 6 7 - MasterCard 02 01 - - xid Número de transação 3DS. string string cavvAlgorithm Algoritmo de verificação da autenticação do portador (CAVV). Os valores possíveis são: • 0 para HMAC. • 1 para CVV. • 2 para CVV_ATN. • 3 para Mastercard SPA. n1 cavv Certificado do ACS. string signValid Assinatura da autenticação 3DS. string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 95 / 237 authenticationResultData Formato brand Rede do cartão. string Tabela 74 : Objeto authenticationResultData O objeto fraudManagementResponse permite obter os resultados dos controle de gerenciamento de riscos. A resposta contem as análises dos atributos: • riskControl Retorna o resultado do controle de gerenciamento de riscos realizado. • riskAnalysis Retorna o resultado da análise de gerenciamento de riscos efetuada por um sistema externo (ClearSale, CyberSource,...). • riskAssessment Retorna o resultado da análise de gerenciamento dos riscos avançados realizado pela plataforma de pagamento. O atributo riskControl O formato é o seguinte: name1=result1;name2=result2 Nome Formato Descrição name string Nome da regra de gerenciamento de risco. result string Resultado do controle. Valores possíveis para 'name' CARD Cartão presente na lista cinza. COUNTRY País do comprador na lista cinza. IPADDR Endereço IP do comprador presente na lista cinza. AMOUNT Valor máximo autorizado por pedido foi atingido. BIN O código BIN do cartão está presente na lista cinza. ECB Detecção de um e-carte bleue. CARD_COMMERCIAL_NATIONAL Detecção de um cartão comercial nacional. CARD_COMMERCIAL_FOREIGN Detecção de um cartão comercial estrangeiro. CAS Detecção de um cartão com autorização sistemática. COUNTRY_CONSISTENCY O país de origem do cartão, o país do endereço IP do comprador e o país do comprador não correspondem. NON_GUARANTEED_PAYMENT Detecção de um pagamento sem transferência de responsabilidade. IPADDR_COUNTRY O pais do endereço IP do comprador está presente na lista cinza. Tabela 75 : Valores possíveis para 'name' Valores possíveis para 'result' OK Indica que o controle é correto. KO Indica que o controle está em falha. Tabela 76 : Valores possíveis para 'result' O atributo riskAnalysis riskAnalysis Formato score Pontuação atribuída para toda transação para avaliar o risco associado a ela. string resultCode string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 96 / 237 riskAnalysis Código retornado por um analista de risco externo. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno retornados pelo analista de risco externo. Formato status Status da analise de risco Os valores possíveis são os seguintes: • P_SEND_OK, "Sent to clearsale and successfully processed" Sucesso • P_TO_SEND, "Transaction analysis is scheduled to be sent to risk analyzer" O envio está programado • P_TO_SEND_KO, "Problem when tried to send to risk analyzer" Erro de tratamento • P_PENDING_AT_ANALYZER, "Analysis result is still being processed by the risk analyzer. We should keep checking/waiting for the analysis result" Tratamento em andamento pelo analista • P_MANUAL, "Analysis should be requested through user request (not automatically)" A espera de envio manual • P_SKIPPED, "Analysis request discarded by current transaction status/problem" Descartado • P_SEND_EXPIRED, "Analysis request expired" Vencido string requestId Código da analise para o analista de risco. string extraInfo Sem valorização para ClearSale. Para CyberSource, este atributo retorna todos os códigos retornados pelo DecisionManager. • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). Exemplo : • COR-BA=Endereço de faturamento corrigido ou corrigível • A=Mudanças de endereços excessivos. O comprador mudou de endereço de faturamento pelo menos duas vezes durante os seis últimos meses. • etc. extInfo Tabela 77 : Atributo riskAnalysis O atributo riskAssessment Valores Descrição ENABLE_3DS 3D Secure ativado DISABLE_3DS 3D Secure desativado MANUAL_VALIDATION A transação foi criada em validação manual. A captura do pagamento esta bloqueada temporariamente para permitir ao vendedor efetuar todas as verificações desejadas. REFUSE A transação foi recusada. RUN_RISK_ANALYSIS Chamada para um analisador de riscos externos sob a condição que o vendedor possua um contrato Consultar a descrição do campo vads_risk_analysis_result para identificar a lista dos valores possíveis e a descrição deles. INFORM Uma alerta apareceu. O vendedor é avisado quando um risco é identificado. O vendedor é informado via uma ou mais regras do centro de notificação (URL de notificação, e-mail ou SMS). Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 97 / 237 O objeto extraResponse permite obter informações adicionais sobre o pagamento. extraResponse Formato paymentOptionCode Reservado para um uso específico (Brasil). Define o código de opção utilizada para caracterizar a quantidade de prestações para uma transação). paymentOptionOccNumb Reservado para um uso específico. Define a quantidade de prestações para uma transação. Por exemplo, para um pagamento em 3 vezes, este atributo terá o valor 3. n..2 string Tabela 78 : Objeto extraResponse O objeto shoppingCartResponse apresenta em detalhes o conteúdo do carrinho. shoppingCartResponse Atributo Formato cartItemInfo Campos personalizáveis para adicionar elementos no carrinho. O atributo cartItemInfo contém sub objetos: • productLabel : nome do produto. O formato dele é "string". • productType : tipo do artigo. O formato dele é "string (enum)". Valor Descrição FOOD_AND_GROCERY Produtos alimentares e de mercadinho AUTOMOTIVE Automóveis / Motos ENTERTAINMENT Entretenimento / Cultura HOME_AND_GARDEN Casa e jardim HOME_APPLIANCE Equipamentos para a casa AUCTION_AND_GROUP_BUYING Leilões e compras em grupo FLOWERS_AND_GIFTS| Flores e presentes COMPUTER_AND_SOFTWARE Computadores e softwares HEALTH_AND_BEAUTY Saúde e beleza SERVICE_FOR_INDIVIDUAL Serviços para pessoa física SERVICE_FOR_BUSINESS Serviços para pessoa jurídica SPORTS Esportes CLOTHING_AND_ACCESSORIES Roupas e acessórios TRAVEL Viagem HOME_AUDIO_PHOTO_VIDEO Som, imagem e vídeo TELEPHONY Telefonia Tabela 79 : Valores associados a productType • productRef : referência produto. O formato dele é "string". • productQty : quantidade de produto. O formato dele é "integer". • productAmount : valor em centavos do produto. O formato dele é "string". • productVat : valor dos impostos sobre o produto. O formato dele é "string". Exemplo : <cartItemInfo> <productLabel>CHIPS</productLabel> <productType>FOOD_AND_GROCERY</productType> <productRef>188545</productRef> <productQty>10</productQty> <productAmount>10000</productAmount> </cartItemInfo> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 98 / 237 cartItemInfo 6.4. Cancelar uma transação de pagamento 'cancelPayment' Cancelar uma transação de pagamento é possível graças à chamada da operaçãocancelPayment. cancelPayment permite cancelar definitivamente uma transação, que não foi capturada, e tendo uns dos status seguintes: • Para ser aprovado • Para ser aprovado e autorizado • Autorização em andamento • Captura em andamento Solicitação para enviar A solicitação cancelPayment é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação cancelPayment toma na entrada um objeto do tipo cancelPayment. O tipo cancelPayment é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest queryRequest queryRequest Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Somente um atributo pode ser valorizado, se precisar: commonRequest Atributo Requisito comment Comentário livre. Formato string Tabela 80 : Objeto commonRequest O comentário será exibido no histórico da transação que você pode consultar no Back Office. O objeto queryRequest permite consultar uma transação para saber quais são os diferentes atributos dela. O atributo a ser valorizado é o seguinte: queryRequest Atributo Requisito uuid Referência única da transação. Observação: este atributo é utilizado para substituir antigos atributos transactionId, sequenceNumber e creationDate. Porém, pode-se continuar a utilizar estes antigos atributos por razões de retro compatibilidade. Para maiores informações, consultar o capítulo Gerenciar a retro contabilidade. Tabela 81 : Objeto queryRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 99 / 237 Formato string Resposta A resposta à operação cancelPayment é feita pela plataforma de pagamento após uma solicitação de cancelamento de um pagamento. É constituída de um HEADER e de um BODY de tipo cancelPaymentResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem cancelPaymentResponse é a seguinte: Nome Tipo cancelPaymentResult cancelPaymentResult A estrutura da mensagem cancelPaymentResult é a seguinte: Objeto Tipo commonResponse commonResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso (não confundir com o status da transação). • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string transactionStatusLabel Denominação do status da transação. Os valores possíveis são: • CANCELLED Cancelada. string A transação foi cancelada pelo vendedor. shopId Código da loja. n8 paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. • MOTO para um pedido por e-mail ou telefone. • CC para um call center. • OTHER para um outro canal de venda. submissionDate Data e hora UTC da transação apresentadas em formato W3C (exemplo: 2016-07-16T19:20:00Z). Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 100 / 237 string (enum) dateTime ans..40 commonResponse Formato contractNumber Número de contrato comerciante utilizado. string paymentToken Alias ou Código da conta comprador (pagamento por código). string Tabela 82 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 101 / 237 6.5. Procurar pagamentos 'findPayments' Procurar pagamentos é possível graças à chamada da operação findPayments. findPayments permite obter a lista de pagamentos correspondentes aos critérios de pesquisa digitados. Solicitação para enviar A operação findPayments é utilizada para pesquisar um ou mais pagamentos. A solicitação findPayments é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação findPayments toma na entrada um objeto do tipo findPayments. O tipo findPayments é constituído do parâmetro seguinte: Objeto Formato queryRequest queryRequest Requisito O objeto queryRequest permite consultar uma transação para saber quais são os diferentes atributos dela. Para a operação findPayments, somente o atributo orderId deve ser informado para encontrar uma lista de pagamentos. queryRequest Atributo orderId Referência do pedido. Requisito Formato string-n8 Tabela 83 : Objeto queryRequest Os atributos paymentToken, subscriptionId e uuid não são hoje levados em consideração para esta operação. Exemplo de solicitação para ser enviada: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v5="http:// v5.ws.vads.lyra.com/"> <soap:Header xmlns:soapHeader="http://v5.ws.vads.lyra.com/Header"> <soapHeader:shopId>12345678</soapHeader:shopId> <soapHeader:requestId>1d37acc0-c5a7-4e32-b3df-168b9e2617e0</soapHeader:requestId> <soapHeader:timestamp>2015-04-01T12:21:09Z</soapHeader:timestamp> <soapHeader:mode>TEST</soapHeader:mode> <soapHeader:authToken>WFBz7scW8n/xYro5Od3iTUyFhr0Jw6Y4z1EhX71fR6U=</soapHeader:authToken> </soap:Header> <soap:Body> <v5:findPayments> <queryRequest> <orderId>TEST-01</orderId> </queryRequest> </v5:findPayments> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 102 / 237 Resposta A resposta à operação findPayments é feita pela plataforma de pagamento após uma pesquisa de um ou mais pagamentos. É constituída de um HEADER e de um BODY de tipo findPaymentsResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem findPaymentsResponse é a seguinte: Nome Tipo findPaymentsResult findPaymentsResult A estrutura da mensagem findPaymentsResult é a seguinte: Objeto Tipo commonResponse commonResponse orderResponse orderResponse transactionItem transactionItem Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. O objeto commonResponse permite obter informações gerais sobre uma operação. Os atributos que contém um valor na resposta são os seguintes: commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso (não confundir com o status da transação). • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. shopId Código da loja. n..2 string n8 Tabela 84 : Objeto commonResponse Os atributos transactionStatusLabel, paymentSource, paymentToken não são informados nesta operação. submissionDate, Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 103 / 237 contractNumber e O objeto orderResponse detalha o pedido. orderResponse Formato orderId Referência do pedido. string an..64 extInfo Dados personalizados retornados em função das necessidades. Exemplo : extInfo.key, extInfo.value • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). extInfo Tabela 85 : Objeto orderResponse O objeto transactionItem detalha as informações sobre a transação que você esta procurando. transactionItem Formato transactionUuid Referência única da transação gerada pela plataforma de pagamento. string ans32 transactionStatusLabel Denominação do status da transação. Os valores possíveis são: • INITIAL Em andamento. • Este status temporário. O status definitivo será retornado assim que a sincronização acabar. AUTHORISED Captura em andamento. • A transação foi aceita e será capturada automaticamente no banco na data prevista. AUTHORISED_TO_VALIDATE Para ser aprovado. • string A transação, criada em validação manual, foi autorizada. O vendedor deve validar manualmente a captura no banco. A transação pode ser aprovada enquanto a data de captura não for vencida. Se esta data estiver vencida, então o pagamento tem o status Expirado (status definitivo). WAITING_AUTHORISATION Autorização em andamento. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitado de autorização e a captura no banco serão acionadas automaticamente. WAITING_AUTHORISATION_TO_VALIDATE Para ser aprovado e autorizado. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • • • • • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitação de autorização será automaticamente efetuada a D-1 antes da data de captura no banco. O pagamento poderá ser aceito ou recusado. A captura no banco é automática. REFUSED Recusada. A transação foi recusada. CAPTURED A transação foi capturada no banco. CANCELLED Cancelada. A transação foi cancelada pelo vendedor. EXPIRED Expirada. A date de captura foi atingida mas o vendedor não validou a transação. UNDER_VERIFICATION (Específico a PayPal) Verificação por PayPal em andamento. Este valor significa que Paypal segura a transação por causa de uma suspeita de fraude. O pagamento esta então na aba Pagamento em andamento. amount Valor da transação expresso na menor unidade da moeda . Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 104 / 237 n..12 transactionItem Observação: Não deve ser enviado vazio ou com o valor 0. Se você não quiser modificar o status da transação, deve informar o atributo amount com o valor inicial. Se nenhuma informação for mofdificada, a solicitação sera rejeitada com um código de erro. currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. expectedCaptureDate Data de captura no banco solicitada. Formato n3 dateTime ans..40 Tabela 86 : Objeto transactionItem Exemplo de resposta: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <shopId xmlns="http://v5.ws.vads.lyra.com/Header/">12345678</shopId> <requestId xmlns="http://v5.ws.vads.lyra.com/Header/">1d37acc0-c5a7-4e32-b3df-168b9e2617e0</ requestId> <timestamp xmlns="http://v5.ws.vads.lyra.com/Header/">2015-04-01T12:21:09Z</timestamp> <mode xmlns="http://v5.ws.vads.lyra.com/Header/">TEST</mode> <authToken xmlns="http://v5.ws.vads.lyra.com/Header/">m2+EUcE2+4OLrPe/ zpmo0W9BXqxAnTsA77OdesXCkiY=</authToken> </env:Header> <soap:Body> <ns2:findPaymentsResponse xmlns:ns2="http://v5.ws.vads.lyra.com/"> <findPaymentsResult> <requestId>1d37acc0-c5a7-4e32-b3df-168b9e2617e0</requestId> <commonResponse> <responseCode>0</responseCode> <responseCodeDetail>Action successfully completed</responseCodeDetail> <shopId>12345678</shopId> </commonResponse> <orderResponse> <orderId>TEST-01</orderId> </orderResponse> <transactionItem> <transactionUuid>a27d1907d7f74be1843318dce5875b99</transactionUuid> <transactionStatusLabel>AUTHORISED</transactionStatusLabel> <amount>1</amount> <currency>978</currency> <expectedCaptureDate>2015-04-01T14:07:54+02:00</expectedCaptureDate> </transactionItem> <transactionItem> <transactionUuid>170fd39a02c847feb5a5f750e8b320d2</transactionUuid> <transactionStatusLabel>AUTHORISED_TO_VALIDATE</transactionStatusLabel> <amount>1</amount> <currency>978</currency> <expectedCaptureDate>2015-04-01T14:18:58+02:00</expectedCaptureDate> </transactionItem> </findPaymentsResult> </ns2:findPaymentsResponse> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 105 / 237 6.6. Reembolsar um comprador 'refundPayment' A operação refundPayment permite reembolsar um comprador. As transações que podem estar sujeitas a um reembolso tem o status Capturada. Solicitação para enviar A operação refundPayment é utilizada para efetuar um reembolso sobre uma transação cujo status é Capturado. A solicitação refundPayment é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação refundPayment toma na entrada um objeto do tipo refundPayment. O tipo refundPayment é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest paymentRequest paymentRequest queryRequest queryRequest Requisito Observação: Se o cartão estiver vencido na hora da solicitação de reembolso, uma transação recusada pelo motivo cartão vencido será criada. A resposta terá os valores seguintes: • responseCode : 0 • transactionStatusLabel : REFUSED O objeto commonRequest permite transmitir informações gerais sobre uma operação. Somente um atributo pode ser valorizado, se precisar: commonRequest Atributo Requisito comment Comentário livre. Formato string Tabela 87 : Objeto commonRequest O comentário será exibido no histórico da transação que você pode consultar no Back Office. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 106 / 237 O objeto paymentRequest permite transmitir informações vinculadas ao pagamento. Possui os atributos seguintes: paymentRequest Atributo Requisito Formato transactionId Código da transação durante a criação ou a modificação de uma transação de pagamento. Seu valor é único para o mesmo dia. • Ou este código será gerado pela plataforma. Neste caso, este parâmetro não deve ser informado. • Ou este código será gerado pelo site de e-commerce. Neste caso, este parâmetro deve ser informado com o valor do código desejado. Cuidado, cabe ao site de e-commerce garantir o caráter único dos códigos de usuários. Toda solicitação de registro contendo um código de usuário já existente, será recusada, e será retornada com o código de erro 12. Observação : este atributo não pode ser enviado vazio. an..6 amount Valor da transação expresso na menor unidade da moeda . Observação: • Não deve ser enviado vazio ou com o valor 0. • Não deve ser superior ao valor inicial (exemplo: reembolso). n..12 currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. n3 expectedCaptureDate Data de entrega solicitada apresentada no formato ISO 8601 definido pelo W3C. Exemplo: 2016-07-16T19:20:00Z. Este parâmetro é utilizado para efetuar um pagamento a prazo. Se a quantidade de dias entre a data de captura e a data do dia vigente for superior ao tempo de validade da autorização, uma autorização de 1 BRL será realizada o mesmo dia da transação. Permite verificar a validade do cartão. A autorização para o valor total será efetuada: • processo padrão: o dia da data de captura no banco desejada, • processo com autorização antecipada: em função do meio de pagamento selecionado, a Dquantidade de dias correspondente ao tempo de validade de uma autorização antes da data de captura no banco desejada. Se você quiser receber a notificação de resultado desta solicitação de autorização, você deve configurar a regra de notificação URL de notificação em autorização por Batch no Back Office (Configuração > Regras de notificações). dateTime ans..40 manualValidation Permite validar manualmente uma transação enquanto a data de entrega desejada não for vencida. Para isso, este atributo deve ser valorizado a 1 (validação manual). Com o valor 0, a validação será automática. n1 Tabela 88 : Objeto paymentRequest O objeto queryRequest permite consultar uma transação para saber quais são os diferentes atributos dela. O atributo a ser valorizado é o seguinte: queryRequest Atributo Requisito uuid Referência única da transação. Observação: este atributo é utilizado para substituir antigos atributos transactionId, sequenceNumber e creationDate. Porém, pode-se continuar a utilizar estes antigos atributos por razões de retro compatibilidade. Para maiores informações, consultar o capítulo Gerenciar a retro contabilidade. Tabela 89 : Objeto queryRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 107 / 237 Formato string Resposta A resposta à operação refundPayment é feita pela plataforma de pagamento após uma solicitação de reembolso. É constituída de um HEADER e de um BODY de tipo refundPaymentResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem refundPaymentResponse é a seguinte: Nome Tipo refundPaymentResult refundPaymentResult A estrutura da mensagem refundPaymentResult é a seguinte: Objeto Tipo commonResponse commonResponse paymentResponse paymentResponse orderResponse orderResponse cardResponse cardResponse authorizationResponse authorizationResponse captureResponse captureResponse customerResponse customerResponse markResponse markResponse threeDSResponse threeDSResponse extraResponse extraResponse fraudManagementResponse fraudManagementResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 108 / 237 O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso (não confundir com o status da transação). • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string transactionStatusLabel Denominação do status da transação. Os valores possíveis são: • INITIAL Em andamento. string • • • • Este status temporário. O status definitivo será retornado assim que a sincronização acabar. NOT_CREATED A transação não foi criada e portanto não será exibida no Back Office. AUTHORISED Captura em andamento. A transação foi aceita e será capturada automaticamente no banco na data prevista. AUTHORISED_TO_VALIDATE Para ser aprovado. A transação, criada em validação manual, foi autorizada. O vendedor deve validar manualmente a captura no banco. A transação pode ser aprovada enquanto a data de captura não for vencida. Se esta data estiver vencida, então o pagamento tem o status Expirado (status definitivo). WAITING_AUTHORISATION Autorização em andamento. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitado de autorização e a captura no banco serão acionadas automaticamente. WAITING_AUTHORISATION_TO_VALIDATE Para ser aprovado e autorizado. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitação de autorização será automaticamente efetuada a D-1 antes da data de captura no banco. O pagamento poderá ser aceito ou recusado. A captura no banco é automática. REFUSED Recusada. A transação foi recusada. shopId Código da loja. n8 paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. • MOTO para um pedido por e-mail ou telefone. • CC para um call center. • OTHER para um outro canal de venda. submissionDate Data e hora UTC da transação apresentadas em formato W3C (exemplo: 2016-07-16T19:20:00Z). string (enum) dateTime ans..40 contractNumber Número de contrato comerciante utilizado. string paymentToken Alias ou Código da conta comprador (pagamento por código). string Tabela 90 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 109 / 237 O objeto paymentResponse detalha as informações sobre a transação. paymentResponse Formato transactionUuid Referência única da transação gerada pela plataforma de pagamento. string ans32 transactionId Código da transação durante a criação ou a modificação de uma transação de pagamento. Seu valor é único para o mesmo dia. • Ou este código será gerado pela plataforma. • Ou este código será gerado pelo site de e-commerce. an..6 amount Valor da transação expresso na menor unidade da moeda . n..12 currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. effectiveAmount Valor da transação na moeda efetivamente usada para a captura no banco. effectiveCurrency Moeda efetivamente usada para a captura no banco. expectedCaptureDate Data de captura no banco solicitada. operationType Tipo de operação Os valores possíveis são: • DEBIT para uma operação de débito. • CREDIT para uma operação de reembolso. creationDate Data e hora do registro da transação apresentado em formato W3C. n3 n..12 n3 dateTime ans..40 string dateTime ans..40 externalTransactionId Referência dada por um terceiro: número de transação para Paypal, Boleto, RRN para Prism, etc... string liabilityShift Transferência de responsabilidade. Os valores possíveis são: • YES quando o pagamento é garantido. • NO quando pagamento não é garantido. string paymentType Tipo de pagamento. Os valores possíveis são: • SINGLE string (enum) • Pagamento em uma única parcela. INSTALLMENT • Pagamento em várias parcelas. SPLIT • Pagamento realizado com vários meios de pagamento. SUBSCRIPTION • Pagamento por Token cartão ou vinculado a uma assinatura. RETRY Quando um pagamento for recusado, pode-se reiterar a solicitação de pagamento. Para qualquer reiteração, o pagamento será valorizado com este valor. Observação: Durante uma operação createPayment, somente um pagamento em uma única parcela pode ser criada (valor SINGLE). Os valores INSTALLMENT, SPLIT, SUBSCRIPTION e RETRY podem ser retornados somente se há pagamentos que foram criados via o formulário de pagamento. sequenceNumber Número de seqüência da transação. Vale "1" para um pagamento unitário. Toma o valor do número de prestação no caso de um pagamento parcelado criado a partir do formulário de pagamento. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 110 / 237 n..3 paymentResponse Formato paymentError Complemento de informação em caso de erro técnico. Retorna um código de erro associado ao erro técnico (ver capítulo Gerenciar os códigos de erros durante um pagamento recusado). n..3 Tabela 91 : Objeto paymentResponse O objeto orderResponse detalha o pedido. orderResponse Formato orderId Referência do pedido. string an..64 extInfo Dados personalizados retornados em função das necessidades. Exemplo : extInfo.key, extInfo.value • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). extInfo Tabela 92 : Objeto orderResponse O objeto cardResponse apresenta em detalhes as informações sobre o meio de pagamento utilizado. cardResponse Formato number • Número de cartão inválido. Contém os 6 primeiros dígitos do número, seguido por "XXXXXX" e finalmente os 4 últimos números. • IBAN e BIC usados para o pagamento, separados por um "_" no caso de um pagamento por débito no cartão de crédito. string scheme Tipo do cartão. string brand Marca do cartão. string country Código país do país emissor do cartão (Código numérico ISO 3166). productCode Código produto do cartão. ISO 3166 ano..3 bankCode Código banco do banco emissor. n..5 expiryMonth Mês de vencimento entre 1 e 12 (ex: 3 para março, 10 para outubro). n..2 expiryYear Ano de vencimento com 4 dígitos (ex: 2023). n4 Tabela 93 : Objeto cardResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 111 / 237 O objeto authorizationResponse permite obter informações sobre a solicitação de autorização. authorizationResponse Formato mode Especifica de que maneira é realizada a solicitação de autorização. Dois valores possíveis: • MARK Uma autorização 1 BRL foi efetuada para verificar a validade do cartão. • string Isso acontece quando a data de captura ultrapassa o período de validade de uma autorização . FULL Autorização para o valor total pedido na solicitação. amount Valor da autorização na menor unidade da moeda se mode vale FULL. currency Código da moeda utilizada durante o pedido de autorização (conforme a norma ISO 4217) se mode vale FULL. date Data e hora do pedido de autorização se mode vale FULL. n..12 n3 dateTime anos..40 number Número do pedido de autorização se mode vaut FULL. n..2 result Código retorno da solicitação de autorização retornado pelo banco emissor quando for recusado. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n..2 Tabela 94 : Objeto authorizationResponse O objeto captureResponse permite obter informações a respeito do desconto se a transação for com desconto. captureResponse Formato date Data e hora de captura. dateTime anos..40 number Número de captura. n3 reconciliationStatus Status de aproximação bancária da transação. n1 refundAmount Valor que já foi sujeito a um reembolso na sua menor unidade de moeda. refundCurrency Moeda do valor que já foi sujeito a um reembolso (Código moeda ISO 4217: 986 para o BRL; 840 para o dólar americano.. chargeback Lítigio, não pago. Os valores possíveis são: • 0 : transação sujeita a um litígio. • 1 : transação não sujeita a um litígio. Tabela 95 : Objeto captureResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 112 / 237 n..12 n3 O objeto customerResponse detalha as numerosas informações sobre o comprador. A resposta contém as análises de: • billingDetails Dados de faturamento do comprador. • shippingDetails Dados de entrega do comprador. • extraDetails Dados técnicos sobre o comprador. billingDetails Atributo Formato reference Referência do comprador. string n..80 title Estado civil do comprador. Exemplos de valores possíveis: • Senhora, etc.. string n..80 type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 email E-mail do comprador. Parâmetro obrigatório quando criar um alias. string ans..150 streetNumber Número de rua do comprador. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço do comprador. string ans..255 district Bairro do comprador. string ans..127 zipCode CEP do comprador. string ans..64 city Cidade do comprador. string ans..128 state UF / Região do comprador. string ans..128 country País do comprador conforme à norma ISO 3166. Exemplos de valores possíveis: • DE para a Alemanha • IT para a Itália • PT para o Portugal • GB para o Reino-Unido • JA para o Japão • RU para a Rússia • ES para a Espanha • NL para a Holanda • SE para a Suécia • FR para a França • PL para a Polônia • CN para a China Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 113 / 237 string - a2 billingDetails Atributo Formato language Idioma do comprador conforme à norma ISO 639-1. Exemplos de valores possíveis: • de para o alemão • it para o italiano • pt para o português • en para o inglês • ja para o japonês • ru para o russo • es para o espanhol • nl para o holandês • sv para o sueco • fr para o francês • pl para o polonês • zh para o chinês • tr para o turco cellPhoneNumber Número de telefone celular string - a2 string ans..32 legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 96 : Objeto billingDetails shippingDetails Atributo Formato type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 streetNumber Número de rua para a entrega. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço de entrega. string ans..255 address2 Complemento de endereço de entrega. string ans..255 district Bairro de entrega. string ans..127 zipCode CEP de entrega. string ans..64 city Cidade de entrega. string ans..128 state UF / Região de entrega. string ans..128 country País de entrega. string - a2 deliveryCompanyName Informações sobre a transportadora. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 114 / 237 string ans..128 shippingDetails Atributo Formato shippingSpeed Modo de entrega selecionado. Os valores possíveis são: • STANDARD para uma entrega padrão. • EXPRESS para uma entrega express. string (enum) shippingMethod Método de entrega utilizado. Os valores possíveis são: • RECLAIM_IN_SHOP para retirar a mercadoria na loja. • RELAY_POINT para a utilização de uma rede de pontos de entrega terceirizada (Kiala, Alveol, etc). • RECLAIM_IN_STATION para retirar num aeroporto, uma agência de viagens ou outros. • PACKAGE_DELIVERY_COMPANY para a entrega por transportadora (Colissimo, UPS, etc). • ETICKET para emitir de uma passagem eletrônica, baixar. string (enum) legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 97 : Objeto shippingDetails extraDetails Formato ipAddress O endereço IP do comprador. string ans40 Tabela 98 : Objeto extraDetails Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 115 / 237 O objeto markResponse permite obter informações sobre a solicitação de autorização de 1 BRL. markResponse Formato amount Valor utilizado para verificar a validade do cartão, na menor unidade da moeda . n..12 currency Código da moeda utilizado para verificar a validade do cartão (conforme a norma ISO 4217). n3 date Data e hora da solicitação de autorização efetuada se o atributo mode do objetoauthorizationResponse vaut MARK. dateTime anos..40 number Número de autorização da solicitação de autorização se o atributo mode do objeto authorizationResponse vale MARK. dateTime anos..40 result Resultado da solicitação de autorização efetuada se o atributo mode do objeto authorizationResponse vale MARK. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n..2 Tabela 99 : Objet markResponse O objeto threeDSResponse permite obter informações sobre a autenticação 3D Secure. Este objeto contém: • authenticationRequestData Descreve o resultado da solicitado de alistamento bem como a mensagem codificada que será transmitida pelo navegador para o ACS. • authenticationResultData Descreve os detalhes da autenticação 3D Secure. authenticationRequestData Formato threeDSAcctId Certificado reenviado pelo Directory Server. string threeDSAcsUrl Url de ACS que deve ser solicitado. string threeDSBrand Rede do cartão. string threeDSEncodedPareq Mensagem PAReq encodificada, pronto para enviar ao ACS. string threeDSEnrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. a1 threeDSRequestId Número de solicitação, para relembrar na chamada ENABLED_FINALIZE do atributo mode do objeto threeDSRequest. Tabela 100 : Objeto authenticationRequestData Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 116 / 237 string authenticationResultData Formato transactionCondition Status da autenticação 3D Secure. Os valores possíveis são: • COND_3D_SUCCESS Sucesso da autenticação. • • • • • string O vendedor e o portador do cartão estão inscritos ao programa 3D Secure e o portador autenticou-se corretamente. COND_3D_FAILURE Autenticação não sucedida. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não conseguiu autenticar-se (senha errada). COND_3D_ERROR Autenticação em falha. O vendedor participa ao programa 3D secure mas o servidor da plataforma de pagamento encontrou um problema técnico durante o processo de autenticação (quando verificou a inscrição do cartão ao programa 3D ou durante a autenticação do portador). COND_3D_NOTENROLLED Portador não alistado. O vendedor participa ao programa 3D Secure mas o cartão do portador não é alistado. COND_3D_ATTEMPT Tentativa de autenticação. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não teve que autenticar-se (o servidor de controle de acesso do banco que emitiu o cartão somente implementa a geração de um comprovante de tentativa de autenticação). COND_SSL 3D Secure não aplicável. O vendedor não é alistado ao 3D Secure ou o canal de venda não tem cobertura com esta garantia. enrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. string status Status da autenticação do portador. Os valores possíveis são: • Y para um status autenticado 3 DS. • N para um erro de autenticação. • U para uma autenticação impossível. • A para uma tentativa de autenticação. a1 eci Indicador de Comercio Eletrônico. O valor eci depende do status da autenticação 3DS e do tipo de cartão. Os valores possíveis são: status =Y status = A status = U status =N VISA - AMEX 5 6 7 - MasterCard 02 01 - - xid Número de transação 3DS. string string cavvAlgorithm Algoritmo de verificação da autenticação do portador (CAVV). Os valores possíveis são: • 0 para HMAC. • 1 para CVV. • 2 para CVV_ATN. • 3 para Mastercard SPA. n1 cavv Certificado do ACS. string signValid Assinatura da autenticação 3DS. string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 117 / 237 authenticationResultData Formato brand Rede do cartão. string Tabela 101 : Objeto authenticationResultData O objeto fraudManagementResponse permite obter os resultados dos controle de gerenciamento de riscos. A resposta contem as análises dos atributos: • riskControl Retorna o resultado do controle de gerenciamento de riscos realizado. • riskAnalysis Retorna o resultado da análise de gerenciamento de riscos efetuada por um sistema externo (ClearSale, CyberSource,...). • riskAssessment Retorna o resultado da análise de gerenciamento dos riscos avançados realizado pela plataforma de pagamento. O atributo riskControl O formato é o seguinte: name1=result1;name2=result2 Nome Formato Descrição name string Nome da regra de gerenciamento de risco. result string Resultado do controle. Valores possíveis para 'name' CARD Cartão presente na lista cinza. COUNTRY País do comprador na lista cinza. IPADDR Endereço IP do comprador presente na lista cinza. AMOUNT Valor máximo autorizado por pedido foi atingido. BIN O código BIN do cartão está presente na lista cinza. ECB Detecção de um e-carte bleue. CARD_COMMERCIAL_NATIONAL Detecção de um cartão comercial nacional. CARD_COMMERCIAL_FOREIGN Detecção de um cartão comercial estrangeiro. CAS Detecção de um cartão com autorização sistemática. COUNTRY_CONSISTENCY O país de origem do cartão, o país do endereço IP do comprador e o país do comprador não correspondem. NON_GUARANTEED_PAYMENT Detecção de um pagamento sem transferência de responsabilidade. IPADDR_COUNTRY O pais do endereço IP do comprador está presente na lista cinza. Tabela 102 : Valores possíveis para 'name' Valores possíveis para 'result' OK Indica que o controle é correto. KO Indica que o controle está em falha. Tabela 103 : Valores possíveis para 'result' O atributo riskAnalysis riskAnalysis Formato score Pontuação atribuída para toda transação para avaliar o risco associado a ela. string resultCode string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 118 / 237 riskAnalysis Código retornado por um analista de risco externo. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno retornados pelo analista de risco externo. Formato status Status da analise de risco Os valores possíveis são os seguintes: • P_SEND_OK, "Sent to clearsale and successfully processed" Sucesso • P_TO_SEND, "Transaction analysis is scheduled to be sent to risk analyzer" O envio está programado • P_TO_SEND_KO, "Problem when tried to send to risk analyzer" Erro de tratamento • P_PENDING_AT_ANALYZER, "Analysis result is still being processed by the risk analyzer. We should keep checking/waiting for the analysis result" Tratamento em andamento pelo analista • P_MANUAL, "Analysis should be requested through user request (not automatically)" A espera de envio manual • P_SKIPPED, "Analysis request discarded by current transaction status/problem" Descartado • P_SEND_EXPIRED, "Analysis request expired" Vencido string requestId Código da analise para o analista de risco. string extraInfo Sem valorização para ClearSale. Para CyberSource, este atributo retorna todos os códigos retornados pelo DecisionManager. • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). Exemplo : • COR-BA=Endereço de faturamento corrigido ou corrigível • A=Mudanças de endereços excessivos. O comprador mudou de endereço de faturamento pelo menos duas vezes durante os seis últimos meses. • etc. extInfo Tabela 104 : Atributo riskAnalysis O atributo riskAssessment Valores Descrição ENABLE_3DS 3D Secure ativado DISABLE_3DS 3D Secure desativado MANUAL_VALIDATION A transação foi criada em validação manual. A captura do pagamento esta bloqueada temporariamente para permitir ao vendedor efetuar todas as verificações desejadas. REFUSE A transação foi recusada. RUN_RISK_ANALYSIS Chamada para um analisador de riscos externos sob a condição que o vendedor possua um contrato Consultar a descrição do campo vads_risk_analysis_result para identificar a lista dos valores possíveis e a descrição deles. INFORM Uma alerta apareceu. O vendedor é avisado quando um risco é identificado. O vendedor é informado via uma ou mais regras do centro de notificação (URL de notificação, e-mail ou SMS). O objeto extraResponse permite obter informações adicionais sobre o pagamento. extraResponse Formato paymentOptionCode Reservado para um uso específico (Brasil). Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 119 / 237 n..2 extraResponse Define o código de opção utilizada para caracterizar a quantidade de prestações para uma transação). paymentOptionOccNumb Reservado para um uso específico. Define a quantidade de prestações para uma transação. Por exemplo, para um pagamento em 3 vezes, este atributo terá o valor 3. Tabela 105 : Objeto extraResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 120 / 237 Formato string 6.7. Duplicar uma transação de pagamento 'duplicatePayment' A operação duplicatePayment permite criar uma nova transação tendo exatamente as mesmas características que a transação que deu origem a duplicação. As transações que podem estar sujeitas à duplicação devem possuir uns dos status seguintes: • Capturado • Vencido • Cancelado • Recusado Solicitação para enviar A operação duplicatePayment é utilizada para criar uma nova transação tendo exatamente as mesmas características do que a transação que deu origem à duplicação. A solicitação duplicatePayment é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação duplicatePayment toma na entrada um objeto do tipo duplicatePayment. O tipo duplicatePayment é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest paymentRequest paymentRequest queryRequest queryRequest orderRequest orderRequest Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Somente um atributo pode ser valorizado, se precisar: commonRequest Atributo Requisito comment Comentário livre. Formato string Tabela 106 : Objeto commonRequest O comentário será exibido no histórico da transação que você pode consultar no Back Office. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 121 / 237 O objeto queryRequest permite consultar uma transação para saber quais são os diferentes atributos dela. O atributo a ser valorizado é o seguinte: queryRequest Atributo Requisito uuid Referência única da transação. Observação: este atributo é utilizado para substituir antigos atributos transactionId, sequenceNumber e creationDate. Porém, pode-se continuar a utilizar estes antigos atributos por razões de retro compatibilidade. Para maiores informações, consultar o capítulo Gerenciar a retro contabilidade. Formato string Tabela 107 : Objeto queryRequest O objeto paymentRequest permite transmitir informações vinculadas ao pagamento. Possui os atributos seguintes: paymentRequest Atributo Requisito Formato transactionId Código da transação durante a criação ou a modificação de uma transação de pagamento. Seu valor é único para o mesmo dia. • Ou este código será gerado pela plataforma. Neste caso, este parâmetro não deve ser informado. • Ou este código será gerado pelo site de e-commerce. Neste caso, este parâmetro deve ser informado com o valor do código desejado. Cuidado, cabe ao site de e-commerce garantir o caráter único dos códigos de usuários. Toda solicitação de registro contendo um código de usuário já existente, será recusada, e será retornada com o código de erro 12. Observação : este atributo não pode ser enviado vazio. an..6 amount Valor da transação expresso na menor unidade da moeda . Observação: • Não deve ser enviado vazio ou com o valor 0. • Não deve ser superior ao valor inicial (exemplo: reembolso). n..12 currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. n3 expectedCaptureDate Data de entrega solicitada apresentada no formato ISO 8601 definido pelo W3C. Exemplo: 2016-07-16T19:20:00Z. Este parâmetro é utilizado para efetuar um pagamento a prazo. Se a quantidade de dias entre a data de captura e a data do dia vigente for superior ao tempo de validade da autorização, uma autorização de 1 BRL será realizada o mesmo dia da transação. Permite verificar a validade do cartão. A autorização para o valor total será efetuada: • processo padrão: o dia da data de captura no banco desejada, • processo com autorização antecipada: em função do meio de pagamento selecionado, a Dquantidade de dias correspondente ao tempo de validade de uma autorização antes da data de captura no banco desejada. Se você quiser receber a notificação de resultado desta solicitação de autorização, você deve configurar a regra de notificação URL de notificação em autorização por Batch no Back Office (Configuração > Regras de notificações). dateTime ans..40 manualValidation Permite validar manualmente uma transação enquanto a data de entrega desejada não for vencida. Para isso, este atributo deve ser valorizado a 1 (validação manual). Com o valor 0, a validação será automática. n1 Tabela 108 : Objeto paymentRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 122 / 237 O objeto orderRequest permite transmitir informações vinculadas ao pedido. É composto do atributo seguinte: orderRequest Atributo Requisito orderId Referência do pedido. Formato string an..64 Tabela 109 : Objeto orderRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 123 / 237 Resposta A resposta à operação duplicatePayment é feita pela plataforma de pagamento após uma solicitação de duplicação de uma transação. É constituída de um HEADER e de um BODY de tipo duplicatePaymentResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem duplicatePaymentResponse é a seguinte: Nome Tipo duplicatePaymentResult duplicatePaymentResult A estrutura da mensagem duplicatePaymentResult é a seguinte: Objeto Tipo commonResponse commonResponse paymentResponse paymentResponse orderResponse orderResponse cardResponse cardResponse authorizationResponse authorizationResponse captureResponse captureResponse customerResponse customerResponse markResponse markResponse threeDSResponse threeDSResponse extraResponse extraResponse fraudManagementResponse fraudManagementResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 124 / 237 O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso (não confundir com o status da transação). • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string transactionStatusLabel Denominação do status da transação. Os valores possíveis são: • INITIAL Em andamento. string • • • • Este status temporário. O status definitivo será retornado assim que a sincronização acabar. NOT_CREATED A transação não foi criada e portanto não será exibida no Back Office. AUTHORISED Captura em andamento. A transação foi aceita e será capturada automaticamente no banco na data prevista. AUTHORISED_TO_VALIDATE Para ser aprovado. A transação, criada em validação manual, foi autorizada. O vendedor deve validar manualmente a captura no banco. A transação pode ser aprovada enquanto a data de captura não for vencida. Se esta data estiver vencida, então o pagamento tem o status Expirado (status definitivo). WAITING_AUTHORISATION Autorização em andamento. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitado de autorização e a captura no banco serão acionadas automaticamente. WAITING_AUTHORISATION_TO_VALIDATE Para ser aprovado e autorizado. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitação de autorização será automaticamente efetuada a D-1 antes da data de captura no banco. O pagamento poderá ser aceito ou recusado. A captura no banco é automática. REFUSED Recusada. A transação foi recusada. shopId Código da loja. n8 paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. • MOTO para um pedido por e-mail ou telefone. • CC para um call center. • OTHER para um outro canal de venda. submissionDate Data e hora UTC da transação apresentadas em formato W3C (exemplo: 2016-07-16T19:20:00Z). string (enum) dateTime ans..40 contractNumber Número de contrato comerciante utilizado. string paymentToken Alias ou Código da conta comprador (pagamento por código). string Tabela 110 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 125 / 237 O objeto paymentResponse detalha as informações sobre a transação. paymentResponse Formato transactionUuid Referência única da transação gerada pela plataforma de pagamento. string ans32 transactionId Código da transação durante a criação ou a modificação de uma transação de pagamento. Seu valor é único para o mesmo dia. • Ou este código será gerado pela plataforma. • Ou este código será gerado pelo site de e-commerce. an..6 amount Valor da transação expresso na menor unidade da moeda . n..12 currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. effectiveAmount Valor da transação na moeda efetivamente usada para a captura no banco. effectiveCurrency Moeda efetivamente usada para a captura no banco. expectedCaptureDate Data de captura no banco solicitada. operationType Tipo de operação Os valores possíveis são: • DEBIT para uma operação de débito. • CREDIT para uma operação de reembolso. creationDate Data e hora do registro da transação apresentado em formato W3C. n3 n..12 n3 dateTime ans..40 string dateTime ans..40 externalTransactionId Referência dada por um terceiro: número de transação para Paypal, Boleto, RRN para Prism, etc... string liabilityShift Transferência de responsabilidade. Os valores possíveis são: • YES quando o pagamento é garantido. • NO quando pagamento não é garantido. string paymentType Tipo de pagamento. Os valores possíveis são: • SINGLE string (enum) • Pagamento em uma única parcela. INSTALLMENT • Pagamento em várias parcelas. SPLIT • Pagamento realizado com vários meios de pagamento. SUBSCRIPTION • Pagamento por Token cartão ou vinculado a uma assinatura. RETRY Quando um pagamento for recusado, pode-se reiterar a solicitação de pagamento. Para qualquer reiteração, o pagamento será valorizado com este valor. Observação: Durante uma operação createPayment, somente um pagamento em uma única parcela pode ser criada (valor SINGLE). Os valores INSTALLMENT, SPLIT, SUBSCRIPTION e RETRY podem ser retornados somente se há pagamentos que foram criados via o formulário de pagamento. sequenceNumber Número de seqüência da transação. Vale "1" para um pagamento unitário. Toma o valor do número de prestação no caso de um pagamento parcelado criado a partir do formulário de pagamento. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 126 / 237 n..3 paymentResponse Formato paymentError Complemento de informação em caso de erro técnico. Retorna um código de erro associado ao erro técnico (ver capítulo Gerenciar os códigos de erros durante um pagamento recusado). n..3 Tabela 111 : Objeto paymentResponse O objeto orderResponse detalha o pedido. orderResponse Formato orderId Referência do pedido. string an..64 extInfo Dados personalizados retornados em função das necessidades. Exemplo : extInfo.key, extInfo.value • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). extInfo Tabela 112 : Objeto orderResponse O objeto cardResponse apresenta em detalhes as informações sobre o meio de pagamento utilizado. cardResponse Formato number • Número de cartão inválido. Contém os 6 primeiros dígitos do número, seguido por "XXXXXX" e finalmente os 4 últimos números. • IBAN e BIC usados para o pagamento, separados por um "_" no caso de um pagamento por débito no cartão de crédito. string scheme Tipo do cartão. string brand Marca do cartão. string country Código país do país emissor do cartão (Código numérico ISO 3166). productCode Código produto do cartão. ISO 3166 ano..3 bankCode Código banco do banco emissor. n..5 expiryMonth Mês de vencimento entre 1 e 12 (ex: 3 para março, 10 para outubro). n..2 expiryYear Ano de vencimento com 4 dígitos (ex: 2023). n4 Tabela 113 : Objeto cardResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 127 / 237 O objeto authorizationResponse permite obter informações sobre a solicitação de autorização. authorizationResponse Formato mode Especifica de que maneira é realizada a solicitação de autorização. Dois valores possíveis: • MARK Uma autorização 1 BRL foi efetuada para verificar a validade do cartão. • string Isso acontece quando a data de captura ultrapassa o período de validade de uma autorização . FULL Autorização para o valor total pedido na solicitação. amount Valor da autorização na menor unidade da moeda se mode vale FULL. currency Código da moeda utilizada durante o pedido de autorização (conforme a norma ISO 4217) se mode vale FULL. date Data e hora do pedido de autorização se mode vale FULL. n..12 n3 dateTime anos..40 number Número do pedido de autorização se mode vaut FULL. n..2 result Código retorno da solicitação de autorização retornado pelo banco emissor quando for recusado. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n..2 Tabela 114 : Objeto authorizationResponse O objeto captureResponse permite obter informações a respeito do desconto se a transação for com desconto. captureResponse Formato date Data e hora de captura. dateTime anos..40 number Número de captura. n3 reconciliationStatus Status de aproximação bancária da transação. n1 refundAmount Valor que já foi sujeito a um reembolso na sua menor unidade de moeda. refundCurrency Moeda do valor que já foi sujeito a um reembolso (Código moeda ISO 4217: 986 para o BRL; 840 para o dólar americano.. chargeback Lítigio, não pago. Os valores possíveis são: • 0 : transação sujeita a um litígio. • 1 : transação não sujeita a um litígio. Tabela 115 : Objeto captureResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 128 / 237 n..12 n3 O objeto customerResponse detalha as numerosas informações sobre o comprador. A resposta contém as análises de: • billingDetails Dados de faturamento do comprador. • shippingDetails Dados de entrega do comprador. • extraDetails Dados técnicos sobre o comprador. billingDetails Atributo Formato reference Referência do comprador. string n..80 title Estado civil do comprador. Exemplos de valores possíveis: • Senhora, etc.. string n..80 type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 email E-mail do comprador. Parâmetro obrigatório quando criar um alias. string ans..150 streetNumber Número de rua do comprador. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço do comprador. string ans..255 district Bairro do comprador. string ans..127 zipCode CEP do comprador. string ans..64 city Cidade do comprador. string ans..128 state UF / Região do comprador. string ans..128 country País do comprador conforme à norma ISO 3166. Exemplos de valores possíveis: • DE para a Alemanha • IT para a Itália • PT para o Portugal • GB para o Reino-Unido • JA para o Japão • RU para a Rússia • ES para a Espanha • NL para a Holanda • SE para a Suécia • FR para a França • PL para a Polônia • CN para a China Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 129 / 237 string - a2 billingDetails Atributo Formato language Idioma do comprador conforme à norma ISO 639-1. Exemplos de valores possíveis: • de para o alemão • it para o italiano • pt para o português • en para o inglês • ja para o japonês • ru para o russo • es para o espanhol • nl para o holandês • sv para o sueco • fr para o francês • pl para o polonês • zh para o chinês • tr para o turco cellPhoneNumber Número de telefone celular string - a2 string ans..32 legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 116 : Objeto billingDetails shippingDetails Atributo Formato type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 streetNumber Número de rua para a entrega. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço de entrega. string ans..255 address2 Complemento de endereço de entrega. string ans..255 district Bairro de entrega. string ans..127 zipCode CEP de entrega. string ans..64 city Cidade de entrega. string ans..128 state UF / Região de entrega. string ans..128 country País de entrega. string - a2 deliveryCompanyName Informações sobre a transportadora. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 130 / 237 string ans..128 shippingDetails Atributo Formato shippingSpeed Modo de entrega selecionado. Os valores possíveis são: • STANDARD para uma entrega padrão. • EXPRESS para uma entrega express. string (enum) shippingMethod Método de entrega utilizado. Os valores possíveis são: • RECLAIM_IN_SHOP para retirar a mercadoria na loja. • RELAY_POINT para a utilização de uma rede de pontos de entrega terceirizada (Kiala, Alveol, etc). • RECLAIM_IN_STATION para retirar num aeroporto, uma agência de viagens ou outros. • PACKAGE_DELIVERY_COMPANY para a entrega por transportadora (Colissimo, UPS, etc). • ETICKET para emitir de uma passagem eletrônica, baixar. string (enum) legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 117 : Objeto shippingDetails extraDetails Formato ipAddress O endereço IP do comprador. string ans40 Tabela 118 : Objeto extraDetails Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 131 / 237 O objeto markResponse permite obter informações sobre a solicitação de autorização de 1 BRL. markResponse Formato amount Valor utilizado para verificar a validade do cartão, na menor unidade da moeda . n..12 currency Código da moeda utilizado para verificar a validade do cartão (conforme a norma ISO 4217). n3 date Data e hora da solicitação de autorização efetuada se o atributo mode do objetoauthorizationResponse vaut MARK. dateTime anos..40 number Número de autorização da solicitação de autorização se o atributo mode do objeto authorizationResponse vale MARK. dateTime anos..40 result Resultado da solicitação de autorização efetuada se o atributo mode do objeto authorizationResponse vale MARK. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n..2 Tabela 119 : Objet markResponse O objeto threeDSResponse permite obter informações sobre a autenticação 3D Secure. Este objeto contém: • authenticationRequestData Descreve o resultado da solicitado de alistamento bem como a mensagem codificada que será transmitida pelo navegador para o ACS. • authenticationResultData Descreve os detalhes da autenticação 3D Secure. authenticationRequestData Formato threeDSAcctId Certificado reenviado pelo Directory Server. string threeDSAcsUrl Url de ACS que deve ser solicitado. string threeDSBrand Rede do cartão. string threeDSEncodedPareq Mensagem PAReq encodificada, pronto para enviar ao ACS. string threeDSEnrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. a1 threeDSRequestId Número de solicitação, para relembrar na chamada ENABLED_FINALIZE do atributo mode do objeto threeDSRequest. Tabela 120 : Objeto authenticationRequestData Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 132 / 237 string authenticationResultData Formato transactionCondition Status da autenticação 3D Secure. Os valores possíveis são: • COND_3D_SUCCESS Sucesso da autenticação. • • • • • string O vendedor e o portador do cartão estão inscritos ao programa 3D Secure e o portador autenticou-se corretamente. COND_3D_FAILURE Autenticação não sucedida. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não conseguiu autenticar-se (senha errada). COND_3D_ERROR Autenticação em falha. O vendedor participa ao programa 3D secure mas o servidor da plataforma de pagamento encontrou um problema técnico durante o processo de autenticação (quando verificou a inscrição do cartão ao programa 3D ou durante a autenticação do portador). COND_3D_NOTENROLLED Portador não alistado. O vendedor participa ao programa 3D Secure mas o cartão do portador não é alistado. COND_3D_ATTEMPT Tentativa de autenticação. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não teve que autenticar-se (o servidor de controle de acesso do banco que emitiu o cartão somente implementa a geração de um comprovante de tentativa de autenticação). COND_SSL 3D Secure não aplicável. O vendedor não é alistado ao 3D Secure ou o canal de venda não tem cobertura com esta garantia. enrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. string status Status da autenticação do portador. Os valores possíveis são: • Y para um status autenticado 3 DS. • N para um erro de autenticação. • U para uma autenticação impossível. • A para uma tentativa de autenticação. a1 eci Indicador de Comercio Eletrônico. O valor eci depende do status da autenticação 3DS e do tipo de cartão. Os valores possíveis são: status =Y status = A status = U status =N VISA - AMEX 5 6 7 - MasterCard 02 01 - - xid Número de transação 3DS. string string cavvAlgorithm Algoritmo de verificação da autenticação do portador (CAVV). Os valores possíveis são: • 0 para HMAC. • 1 para CVV. • 2 para CVV_ATN. • 3 para Mastercard SPA. n1 cavv Certificado do ACS. string signValid Assinatura da autenticação 3DS. string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 133 / 237 authenticationResultData Formato brand Rede do cartão. string Tabela 121 : Objeto authenticationResultData O objeto extraResponse permite obter informações adicionais sobre o pagamento. extraResponse Formato paymentOptionCode Reservado para um uso específico (Brasil). Define o código de opção utilizada para caracterizar a quantidade de prestações para uma transação). paymentOptionOccNumb Reservado para um uso específico. Define a quantidade de prestações para uma transação. Por exemplo, para um pagamento em 3 vezes, este atributo terá o valor 3. n..2 string Tabela 122 : Objeto extraResponse O objeto fraudManagementResponse permite obter os resultados dos controle de gerenciamento de riscos. A resposta contem as análises dos atributos: • riskControl Retorna o resultado do controle de gerenciamento de riscos realizado. • riskAnalysis Retorna o resultado da análise de gerenciamento de riscos efetuada por um sistema externo (ClearSale, CyberSource,...). • riskAssessment Retorna o resultado da análise de gerenciamento dos riscos avançados realizado pela plataforma de pagamento. O atributo riskControl O formato é o seguinte: name1=result1;name2=result2 Nome Formato Descrição name string Nome da regra de gerenciamento de risco. result string Resultado do controle. Valores possíveis para 'name' CARD Cartão presente na lista cinza. COUNTRY País do comprador na lista cinza. IPADDR Endereço IP do comprador presente na lista cinza. AMOUNT Valor máximo autorizado por pedido foi atingido. BIN O código BIN do cartão está presente na lista cinza. ECB Detecção de um e-carte bleue. CARD_COMMERCIAL_NATIONAL Detecção de um cartão comercial nacional. CARD_COMMERCIAL_FOREIGN Detecção de um cartão comercial estrangeiro. CAS Detecção de um cartão com autorização sistemática. COUNTRY_CONSISTENCY O país de origem do cartão, o país do endereço IP do comprador e o país do comprador não correspondem. NON_GUARANTEED_PAYMENT Detecção de um pagamento sem transferência de responsabilidade. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 134 / 237 Valores possíveis para 'name' IPADDR_COUNTRY O pais do endereço IP do comprador está presente na lista cinza. Tabela 123 : Valores possíveis para 'name' Valores possíveis para 'result' OK Indica que o controle é correto. KO Indica que o controle está em falha. Tabela 124 : Valores possíveis para 'result' O atributo riskAnalysis riskAnalysis Formato score Pontuação atribuída para toda transação para avaliar o risco associado a ela. string resultCode Código retornado por um analista de risco externo. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno retornados pelo analista de risco externo. string status Status da analise de risco Os valores possíveis são os seguintes: • P_SEND_OK, "Sent to clearsale and successfully processed" Sucesso • P_TO_SEND, "Transaction analysis is scheduled to be sent to risk analyzer" O envio está programado • P_TO_SEND_KO, "Problem when tried to send to risk analyzer" Erro de tratamento • P_PENDING_AT_ANALYZER, "Analysis result is still being processed by the risk analyzer. We should keep checking/waiting for the analysis result" Tratamento em andamento pelo analista • P_MANUAL, "Analysis should be requested through user request (not automatically)" A espera de envio manual • P_SKIPPED, "Analysis request discarded by current transaction status/problem" Descartado • P_SEND_EXPIRED, "Analysis request expired" Vencido string requestId Código da analise para o analista de risco. string extraInfo Sem valorização para ClearSale. Para CyberSource, este atributo retorna todos os códigos retornados pelo DecisionManager. • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). Exemplo : • COR-BA=Endereço de faturamento corrigido ou corrigível • A=Mudanças de endereços excessivos. O comprador mudou de endereço de faturamento pelo menos duas vezes durante os seis últimos meses. • etc. extInfo Tabela 125 : Atributo riskAnalysis O atributo riskAssessment Valores Descrição ENABLE_3DS 3D Secure ativado DISABLE_3DS 3D Secure desativado MANUAL_VALIDATION A transação foi criada em validação manual. A captura do pagamento esta bloqueada temporariamente para permitir ao vendedor efetuar todas as verificações desejadas. REFUSE A transação foi recusada. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 135 / 237 Valores Descrição RUN_RISK_ANALYSIS Chamada para um analisador de riscos externos sob a condição que o vendedor possua um contrato Consultar a descrição do campo vads_risk_analysis_result para identificar a lista dos valores possíveis e a descrição deles. INFORM Uma alerta apareceu. O vendedor é avisado quando um risco é identificado. O vendedor é informado via uma ou mais regras do centro de notificação (URL de notificação, e-mail ou SMS). Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 136 / 237 6.8. Validar uma transação de pagamento 'validatePayment' A operação validatePayment permite autorizar a captura no banco de uma transação na data da apresentação pedida no pagamento original. As transações que podem estar sujeitas à validação possuem uns dos status seguintes: • Para ser aprovado • Para ser aprovado e autorizado Solicitação para enviar A operação validatePayment é utilizada para validar um pagamento. A solicitação validatePayment é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação validatePayment toma na entrada um objeto do tipo validatePayment. O tipo validatePayment é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest queryRequest queryRequest Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Somente um atributo pode ser valorizado, se precisar: commonRequest Atributo Requisito comment Comentário livre. Formato string Tabela 126 : Objeto commonRequest O comentário será exibido no histórico da transação que você pode consultar no Back Office. O objeto queryRequest permite consultar uma transação para saber quais são os diferentes atributos dela. O atributo a ser valorizado é o seguinte: queryRequest Atributo Requisito uuid Referência única da transação. Observação: este atributo é utilizado para substituir antigos atributos transactionId, sequenceNumber e creationDate. Porém, pode-se continuar a utilizar estes antigos atributos por razões de retro compatibilidade. Para maiores informações, consultar o capítulo Gerenciar a retro contabilidade. Tabela 127 : Objeto queryRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 137 / 237 Formato string Resposta A resposta à operação validatePayment é feita pela plataforma de pagamento após a validação de um pagamento. É constituída de um HEADER e de um BODY de tipo validatePaymentResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem validatePaymentResponse é a seguinte: Nome Tipo validatePaymentResult validatePaymentResult A estrutura da mensagem validatePaymentResult é a seguinte: Objeto Tipo commonResponse commonResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso (não confundir com o status da transação). • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string transactionStatusLabel Denominação do status da transação. Os valores possíveis são: • AUTHORISED Captura em andamento. string • A transação foi aceita e será capturada automaticamente no banco na data prevista. WAITING_AUTHORISATION Autorização em andamento. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitado de autorização e a captura no banco serão acionadas automaticamente. REFUSED Recusada. A transação foi recusada. shopId Código da loja. n8 paymentSource string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 138 / 237 commonResponse Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. • MOTO para um pedido por e-mail ou telefone. • CC para um call center. • OTHER para um outro canal de venda. submissionDate Data e hora UTC da transação apresentadas em formato W3C (exemplo: 2016-07-16T19:20:00Z). Formato dateTime ans..40 contractNumber Número de contrato comerciante utilizado. string paymentToken Alias ou Código da conta comprador (pagamento por código). string Tabela 128 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 139 / 237 6.9. Capturar uma transação de pagamento 'capturePayment' A operação capturePayment é específica a certos tipos de pagamentos realizados no Brasil. Permite capturar um pagamento a partir do momento que a transação for capturada. Solicitação para enviar A solicitação capturePayment é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação capturePayment toma na entrada um objeto do tipo capturePayment. O tipo capturePayment é composto de um só objeto. Objeto Formato settlementRequest settlementRequest Requisito O objeto settlementRequest permite capturar uma transação via cartão ou Boleto (Brasil). settlementRequest Atributo Requisito transactionUuids Lista de transações para quais uma captura é solicitada. commission Reservado para um uso específico (Brasil). Este atributo é obrigatório para um Boleto. Comissão paga ao banco pelo serviço de faturamento. date Reservado para um uso específico (Brasil). Data da captura no banco apresentada no formato ISO 8601 definido pelo W3C. Exemplo : 2016-07-16T00:00:00Z. As horas, os minutos e segundos terão o valor zero para este atributo. Tabela 129 : Objeto settlementRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 140 / 237 Formato string n2 dateTime ans..40 Resposta A resposta à operação capturePayment é feita pela plataforma de pagamento após a captura de um pagamento. É constituída de um HEADER e de um BODY de tipo capturePaymentResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem capturePaymentResponse é a seguinte: Nome Tipo capturePaymentResult capturePaymentResult A estrutura da mensagem capturePaymentResult é a seguinte: Objeto Tipo commonResponse commonResponse O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso (não confundir com o status da transação). • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. Tabela 130 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 141 / 237 n..2 string 6.10. Obter o detalhes de uma transação de pagamento 'getPaymentDetails' A operação getPaymentDetails permite realizar uma solicitação de resultado de um pagamento para saber quais são os diferentes atributos dele. Solicitação para enviar A solicitação getPaymentDetails é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação getPaymentDetails toma na entrada um objeto do tipo getPaymentDetails. O tipo getPaymentDetails é composto de um só objeto. Objeto Formato queryRequest queryRequest Requisito O objeto queryRequest permite consultar uma transação para saber quais são os diferentes atributos dela. O atributo a ser valorizado é o seguinte: queryRequest Atributo Requisito uuid Referência única da transação. Observação: este atributo é utilizado para substituir antigos atributos transactionId, sequenceNumber e creationDate. Porém, pode-se continuar a utilizar estes antigos atributos por razões de retro compatibilidade. Para maiores informações, consultar o capítulo Gerenciar a retro contabilidade. Tabela 131 : Objeto queryRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 142 / 237 Formato string Resposta A resposta à operação getPaymentDetails é feita pela plataforma de pagamento após uma solicitação de informação sobre um pagamento. É constituída de um HEADER e de um BODY de tipo getPaymentDetailsResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem getPaymentDetailsResponse é a seguinte: Nome Tipo getPaymentDetailsResult getPaymentDetailsResult A estrutura da mensagem getPaymentDetailsResult é a seguinte: Objeto Tipo commonResponse commonResponse paymentResponse paymentResponse orderResponse orderResponse cardResponse cardResponse authorizationResponse authorizationResponse captureResponse captureResponse customerResponse customerResponse markResponse markResponse threeDSResponse threeDSResponse extraResponse extraResponse fraudManagementResponse fraudManagementResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. Observação : os objetos subscriptionResponse et tokenResponse não são informados na resposta. O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso (não confundir com o status da transação). • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string transactionStatusLabel string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 143 / 237 commonResponse Denominação do status da transação. Os valores possíveis são: • AUTHORISED Captura em andamento. • • Formato A transação foi aceita e será capturada automaticamente no banco na data prevista. AUTHORISED_TO_VALIDATE Para ser aprovado. A transação, criada em validação manual, foi autorizada. O vendedor deve validar manualmente a captura no banco. A transação pode ser aprovada enquanto a data de captura não for vencida. Se esta data estiver vencida, então o pagamento tem o status Expirado (status definitivo). WAITING_AUTHORISATION Autorização em andamento. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitado de autorização e a captura no banco serão acionadas automaticamente. WAITING_AUTHORISATION_TO_VALIDATE Para ser aprovado e autorizado. A data de captura solicitada é superior à data de fim de validade da solicitação de autorização. • • • • • Uma autorização de 1 BRL foi efetuada e aceita pelo banco emissor. A solicitação de autorização será automaticamente efetuada a D-1 antes da data de captura no banco. O pagamento poderá ser aceito ou recusado. A captura no banco é automática. REFUSED Recusada. A transação foi recusada. CAPTURED A transação foi capturada no banco. CANCELLED Cancelada. A transação foi cancelada pelo vendedor. EXPIRED Expirada. A date de captura foi atingida mas o vendedor não validou a transação. UNDER_VERIFICATION (Específico a PayPal) Verificação por PayPal em andamento. Este valor significa que Paypal segura a transação por causa de uma suspeita de fraude. O pagamento esta então na aba Pagamento em andamento. shopId Código da loja. n8 paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. • MOTO para um pedido por e-mail ou telefone. • CC para um call center. • OTHER para um outro canal de venda. submissionDate Data e hora UTC da transação apresentadas em formato W3C (exemplo: 2016-07-16T19:20:00Z). string dateTime ans..40 contractNumber Número de contrato comerciante utilizado. string paymentToken Alias ou Código da conta comprador (pagamento por código). string Tabela 132 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 144 / 237 O objeto paymentResponse detalha as informações sobre a transação. paymentResponse Formato transactionUuid Referência única da transação gerada pela plataforma de pagamento. string ans32 transactionId Código da transação durante a criação ou a modificação de uma transação de pagamento. Seu valor é único para o mesmo dia. • Ou este código será gerado pela plataforma. • Ou este código será gerado pelo site de e-commerce. an..6 amount Valor da transação expresso na menor unidade da moeda . n..12 currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. effectiveAmount Valor da transação na moeda efetivamente usada para a captura no banco. effectiveCurrency Moeda efetivamente usada para a captura no banco. expectedCaptureDate Data de captura no banco solicitada. operationType Tipo de operação Os valores possíveis são: • DEBIT para uma operação de débito. • CREDIT para uma operação de reembolso. creationDate Data e hora do registro da transação apresentado em formato W3C. n3 n..12 n3 dateTime ans..40 string dateTime ans..40 externalTransactionId Referência dada por um terceiro: número de transação para Paypal, Boleto, RRN para Prism, etc... string liabilityShift Transferência de responsabilidade. Os valores possíveis são: • YES quando o pagamento é garantido. • NO quando pagamento não é garantido. string paymentType Tipo de pagamento. Os valores possíveis são: • SINGLE string (enum) • Pagamento em uma única parcela. INSTALLMENT • Pagamento em várias parcelas. SPLIT • Pagamento realizado com vários meios de pagamento. SUBSCRIPTION • Pagamento por Token cartão ou vinculado a uma assinatura. RETRY Quando um pagamento for recusado, pode-se reiterar a solicitação de pagamento. Para qualquer reiteração, o pagamento será valorizado com este valor. Observação: Durante uma operação createPayment, somente um pagamento em uma única parcela pode ser criada (valor SINGLE). Os valores INSTALLMENT, SPLIT, SUBSCRIPTION e RETRY podem ser retornados somente se há pagamentos que foram criados via o formulário de pagamento. sequenceNumber Número de seqüência da transação. Vale "1" para um pagamento unitário. Toma o valor do número de prestação no caso de um pagamento parcelado criado a partir do formulário de pagamento. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 145 / 237 n..3 paymentResponse Formato paymentError Complemento de informação em caso de erro técnico. Retorna um código de erro associado ao erro técnico (ver capítulo Gerenciar os códigos de erros durante um pagamento recusado). n..3 Tabela 133 : Objeto paymentResponse O objeto orderResponse detalha o pedido. orderResponse Formato orderId Referência do pedido. string an..64 extInfo Dados personalizados retornados em função das necessidades. Exemplo : extInfo.key, extInfo.value • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). extInfo Tabela 134 : Objeto orderResponse O objeto cardResponse apresenta em detalhes as informações sobre o meio de pagamento utilizado. cardResponse Formato number • Número de cartão inválido. Contém os 6 primeiros dígitos do número, seguido por "XXXXXX" e finalmente os 4 últimos números. • IBAN e BIC usados para o pagamento, separados por um "_" no caso de um pagamento por débito no cartão de crédito. string scheme Tipo do cartão. string brand Marca do cartão. string country Código país do país emissor do cartão (Código numérico ISO 3166). productCode Código produto do cartão. ISO 3166 ano..3 bankCode Código banco do banco emissor. n..5 expiryMonth Mês de vencimento entre 1 e 12 (ex: 3 para março, 10 para outubro). n..2 expiryYear Ano de vencimento com 4 dígitos (ex: 2023). n4 Tabela 135 : Objeto cardResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 146 / 237 O objeto authorizationResponse permite obter informações sobre a solicitação de autorização. authorizationResponse Formato mode Especifica de que maneira é realizada a solicitação de autorização. Dois valores possíveis: • MARK Uma autorização 1 BRL foi efetuada para verificar a validade do cartão. • string Isso acontece quando a data de captura ultrapassa o período de validade de uma autorização . FULL Autorização para o valor total pedido na solicitação. amount Valor da autorização na menor unidade da moeda se mode vale FULL. currency Código da moeda utilizada durante o pedido de autorização (conforme a norma ISO 4217) se mode vale FULL. date Data e hora do pedido de autorização se mode vale FULL. n..12 n3 dateTime anos..40 number Número do pedido de autorização se mode vaut FULL. n..2 result Código retorno da solicitação de autorização retornado pelo banco emissor quando for recusado. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n..2 Tabela 136 : Objeto authorizationResponse O objeto captureResponse permite obter informações a respeito do desconto se a transação for com desconto. captureResponse Formato date Data e hora de captura. dateTime anos..40 number Número de captura. n3 reconciliationStatus Status de aproximação bancária da transação. n1 refundAmount Valor que já foi sujeito a um reembolso na sua menor unidade de moeda. refundCurrency Moeda do valor que já foi sujeito a um reembolso (Código moeda ISO 4217: 986 para o BRL; 840 para o dólar americano.. chargeback Lítigio, não pago. Os valores possíveis são: • 0 : transação sujeita a um litígio. • 1 : transação não sujeita a um litígio. Tabela 137 : Objeto captureResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 147 / 237 n..12 n3 O objeto customerResponse detalha as numerosas informações sobre o comprador. A resposta contém as análises de: • billingDetails Dados de faturamento do comprador. • shippingDetails Dados de entrega do comprador. • extraDetails Dados técnicos sobre o comprador. billingDetails Atributo Formato reference Referência do comprador. string n..80 title Estado civil do comprador. Exemplos de valores possíveis: • Senhora, etc.. string n..80 type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 email E-mail do comprador. Parâmetro obrigatório quando criar um alias. string ans..150 streetNumber Número de rua do comprador. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço do comprador. string ans..255 district Bairro do comprador. string ans..127 zipCode CEP do comprador. string ans..64 city Cidade do comprador. string ans..128 state UF / Região do comprador. string ans..128 country País do comprador conforme à norma ISO 3166. Exemplos de valores possíveis: • DE para a Alemanha • IT para a Itália • PT para o Portugal • GB para o Reino-Unido • JA para o Japão • RU para a Rússia • ES para a Espanha • NL para a Holanda • SE para a Suécia • FR para a França • PL para a Polônia • CN para a China Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 148 / 237 string - a2 billingDetails Atributo Formato language Idioma do comprador conforme à norma ISO 639-1. Exemplos de valores possíveis: • de para o alemão • it para o italiano • pt para o português • en para o inglês • ja para o japonês • ru para o russo • es para o espanhol • nl para o holandês • sv para o sueco • fr para o francês • pl para o polonês • zh para o chinês • tr para o turco cellPhoneNumber Número de telefone celular string - a2 string ans..32 legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 138 : Objeto billingDetails shippingDetails Atributo Formato type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 streetNumber Número de rua para a entrega. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço de entrega. string ans..255 address2 Complemento de endereço de entrega. string ans..255 district Bairro de entrega. string ans..127 zipCode CEP de entrega. string ans..64 city Cidade de entrega. string ans..128 state UF / Região de entrega. string ans..128 country País de entrega. string - a2 deliveryCompanyName Informações sobre a transportadora. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 149 / 237 string ans..128 shippingDetails Atributo Formato shippingSpeed Modo de entrega selecionado. Os valores possíveis são: • STANDARD para uma entrega padrão. • EXPRESS para uma entrega express. string (enum) shippingMethod Método de entrega utilizado. Os valores possíveis são: • RECLAIM_IN_SHOP para retirar a mercadoria na loja. • RELAY_POINT para a utilização de uma rede de pontos de entrega terceirizada (Kiala, Alveol, etc). • RECLAIM_IN_STATION para retirar num aeroporto, uma agência de viagens ou outros. • PACKAGE_DELIVERY_COMPANY para a entrega por transportadora (Colissimo, UPS, etc). • ETICKET para emitir de uma passagem eletrônica, baixar. string (enum) legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 139 : Objeto shippingDetails extraDetails Formato ipAddress O endereço IP do comprador. string ans40 Tabela 140 : Objeto extraDetails O objeto markResponse permite obter informações sobre a solicitação de autorização de 1 BRL. markResponse Formato amount Valor utilizado para verificar a validade do cartão, na menor unidade da moeda . currency Código da moeda utilizado para verificar a validade do cartão (conforme a norma ISO 4217). n..12 n3 date Data e hora da solicitação de autorização efetuada se o atributo mode do objetoauthorizationResponse vaut MARK. dateTime anos..40 number Número de autorização da solicitação de autorização se o atributo mode do objeto authorizationResponse vale MARK. dateTime anos..40 result Resultado da solicitação de autorização efetuada se o atributo mode do objeto authorizationResponse vale MARK. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. Tabela 141 : Objet markResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 150 / 237 n..2 O objeto threeDSResponse permite obter informações sobre a autenticação 3D Secure. Este objeto contém: • authenticationRequestData Descreve o resultado da solicitado de alistamento bem como a mensagem codificada que será transmitida pelo navegador para o ACS. • authenticationResultData Descreve os detalhes da autenticação 3D Secure. authenticationRequestData Formato threeDSAcctId Certificado reenviado pelo Directory Server. string threeDSAcsUrl Url de ACS que deve ser solicitado. string threeDSBrand Rede do cartão. string threeDSEncodedPareq Mensagem PAReq encodificada, pronto para enviar ao ACS. string threeDSEnrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. a1 threeDSRequestId Número de solicitação, para relembrar na chamada ENABLED_FINALIZE do atributo mode do objeto threeDSRequest. Tabela 142 : Objeto authenticationRequestData Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 151 / 237 string authenticationResultData Formato transactionCondition Status da autenticação 3D Secure. Os valores possíveis são: • COND_3D_SUCCESS Sucesso da autenticação. • • • • • string O vendedor e o portador do cartão estão inscritos ao programa 3D Secure e o portador autenticou-se corretamente. COND_3D_FAILURE Autenticação não sucedida. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não conseguiu autenticar-se (senha errada). COND_3D_ERROR Autenticação em falha. O vendedor participa ao programa 3D secure mas o servidor da plataforma de pagamento encontrou um problema técnico durante o processo de autenticação (quando verificou a inscrição do cartão ao programa 3D ou durante a autenticação do portador). COND_3D_NOTENROLLED Portador não alistado. O vendedor participa ao programa 3D Secure mas o cartão do portador não é alistado. COND_3D_ATTEMPT Tentativa de autenticação. O vendedor e o portador do cartão estão inscritos ao programa 3D Secure mas o comprador não teve que autenticar-se (o servidor de controle de acesso do banco que emitiu o cartão somente implementa a geração de um comprovante de tentativa de autenticação). COND_SSL 3D Secure não aplicável. O vendedor não é alistado ao 3D Secure ou o canal de venda não tem cobertura com esta garantia. enrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. string status Status da autenticação do portador. Os valores possíveis são: • Y para um status autenticado 3 DS. • N para um erro de autenticação. • U para uma autenticação impossível. • A para uma tentativa de autenticação. a1 eci Indicador de Comercio Eletrônico. O valor eci depende do status da autenticação 3DS e do tipo de cartão. Os valores possíveis são: status =Y status = A status = U status =N VISA - AMEX 5 6 7 - MasterCard 02 01 - - xid Número de transação 3DS. string string cavvAlgorithm Algoritmo de verificação da autenticação do portador (CAVV). Os valores possíveis são: • 0 para HMAC. • 1 para CVV. • 2 para CVV_ATN. • 3 para Mastercard SPA. n1 cavv Certificado do ACS. string signValid Assinatura da autenticação 3DS. string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 152 / 237 authenticationResultData Formato brand Rede do cartão. string Tabela 143 : Objeto authenticationResultData O objeto fraudManagementResponse permite obter os resultados dos controle de gerenciamento de riscos. A resposta contem as análises dos atributos: • riskControl Retorna o resultado do controle de gerenciamento de riscos realizado. • riskAnalysis Retorna o resultado da análise de gerenciamento de riscos efetuada por um sistema externo (ClearSale, CyberSource,...). • riskAssessment Retorna o resultado da análise de gerenciamento dos riscos avançados realizado pela plataforma de pagamento. O atributo riskControl O formato é o seguinte: name1=result1;name2=result2 Nome Formato Descrição name string Nome da regra de gerenciamento de risco. result string Resultado do controle. Valores possíveis para 'name' CARD Cartão presente na lista cinza. COUNTRY País do comprador na lista cinza. IPADDR Endereço IP do comprador presente na lista cinza. AMOUNT Valor máximo autorizado por pedido foi atingido. BIN O código BIN do cartão está presente na lista cinza. ECB Detecção de um e-carte bleue. CARD_COMMERCIAL_NATIONAL Detecção de um cartão comercial nacional. CARD_COMMERCIAL_FOREIGN Detecção de um cartão comercial estrangeiro. CAS Detecção de um cartão com autorização sistemática. COUNTRY_CONSISTENCY O país de origem do cartão, o país do endereço IP do comprador e o país do comprador não correspondem. NON_GUARANTEED_PAYMENT Detecção de um pagamento sem transferência de responsabilidade. IPADDR_COUNTRY O pais do endereço IP do comprador está presente na lista cinza. Tabela 144 : Valores possíveis para 'name' Valores possíveis para 'result' OK Indica que o controle é correto. KO Indica que o controle está em falha. Tabela 145 : Valores possíveis para 'result' O atributo riskAnalysis riskAnalysis Formato score Pontuação atribuída para toda transação para avaliar o risco associado a ela. string resultCode string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 153 / 237 riskAnalysis Código retornado por um analista de risco externo. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno retornados pelo analista de risco externo. Formato status Status da analise de risco Os valores possíveis são os seguintes: • P_SEND_OK, "Sent to clearsale and successfully processed" Sucesso • P_TO_SEND, "Transaction analysis is scheduled to be sent to risk analyzer" O envio está programado • P_TO_SEND_KO, "Problem when tried to send to risk analyzer" Erro de tratamento • P_PENDING_AT_ANALYZER, "Analysis result is still being processed by the risk analyzer. We should keep checking/waiting for the analysis result" Tratamento em andamento pelo analista • P_MANUAL, "Analysis should be requested through user request (not automatically)" A espera de envio manual • P_SKIPPED, "Analysis request discarded by current transaction status/problem" Descartado • P_SEND_EXPIRED, "Analysis request expired" Vencido string requestId Código da analise para o analista de risco. string extraInfo Sem valorização para ClearSale. Para CyberSource, este atributo retorna todos os códigos retornados pelo DecisionManager. • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). Exemplo : • COR-BA=Endereço de faturamento corrigido ou corrigível • A=Mudanças de endereços excessivos. O comprador mudou de endereço de faturamento pelo menos duas vezes durante os seis últimos meses. • etc. extInfo Tabela 146 : Atributo riskAnalysis O atributo riskAssessment Valores Descrição ENABLE_3DS 3D Secure ativado DISABLE_3DS 3D Secure desativado MANUAL_VALIDATION A transação foi criada em validação manual. A captura do pagamento esta bloqueada temporariamente para permitir ao vendedor efetuar todas as verificações desejadas. REFUSE A transação foi recusada. RUN_RISK_ANALYSIS Chamada para um analisador de riscos externos sob a condição que o vendedor possua um contrato Consultar a descrição do campo vads_risk_analysis_result para identificar a lista dos valores possíveis e a descrição deles. INFORM Uma alerta apareceu. O vendedor é avisado quando um risco é identificado. O vendedor é informado via uma ou mais regras do centro de notificação (URL de notificação, e-mail ou SMS). O objeto extraResponse permite obter informações adicionais sobre o pagamento. extraResponse Formato paymentOptionCode Reservado para um uso específico (Brasil). Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 154 / 237 n..2 extraResponse Define o código de opção utilizada para caracterizar a quantidade de prestações para uma transação). paymentOptionOccNumb Reservado para um uso específico. Define a quantidade de prestações para uma transação. Por exemplo, para um pagamento em 3 vezes, este atributo terá o valor 3. Tabela 147 : Objeto extraResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 155 / 237 Formato string 6.11. Verificar a autenticação 3D Secure. 'verifyThreeDSEnrollment' A operação verifyThreeDSEnrollement permite verificar que o cartão do comprador é compatível com a autenticação 3D Secure. Solicitação para enviar A solicitação verifyThreeDSEnrollement é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação verifyThreeDSEnrollement toma na entrada um objeto do tipo verifyThreeDSEnrollement. O tipo verifyThreeDSEnrollement é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest paymentRequest paymentRequest cardRequest cardRequest techRequest techRequest threeDSRequest threeDSRequest Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Possui os atributos seguintes: commonRequest Atributo Requisito contractNumber Número de contrato comerciante utilizado. Formato string Tabela 148 : Objeto commonRequest O objeto paymentRequest permite transmitir informações sobre o pagamento. Possui os atributos seguintes: paymentRequest Atributo Requisito amount Valor da transação expresso na menor unidade da moeda . Observação: Não deve ser enviado vazio ou com o valor 0. Se você não quiser modificar o status da transação, deve informar o atributo amount com o valor inicial. Se nenhuma informação for mofdificada, a solicitação sera rejeitada com um código de erro. currency Código da moeda da transação (norma ISO 4217). Exemplo: ;986;840 para o dollar americano. Tabela 149 : Objeto paymentRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 156 / 237 Formato n..12 n3 O objeto cardRequest permite transmitir informações sobre o cartão de pagamento. Duas possibilidades: • Verificação sem alias (código) Possui os atributos seguintes: cardRequest Atributo Requisito number Número do cartão. Formato string expiryMonth Mês de vencimento do cartão, entre 1 e 12. n..2 expiryYear Mês de vencimento do cartão de 4 dígitos Exemplo : 2016 n4 Tabela 150 : Objeto cardRequest • Verificação com alias (código) Possui o atributo seguinte: cardRequest Atributo Requisito paymentToken Código único (alias) associado a um meio de pagamento. • Ou este código foi gerado pela plataforma. • Ou este código foi gerado pelo site de e-commerce. Formato string ans..64 Tabela 151 : Objeto cardRequest O objeto techRequest permite transmitir informações técnicas a respeito do navegador do comprador. Este objeto deve obriagatoriamente ser enviado na solicitação. No entanto, os atributos dele são facultativos. techRequest Atributo Requisitado Formato browserUserAgent Header « User-Agent » do navegador do comprador (HTTP/1.1 - RFC. 2616). string browserAccept Header « Accept » do navegador do comprado (HTTP/1.1 - RFC. 2616). string Tabela 152 : Objeto techRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 157 / 237 O objeto threeDSRequest permite transmitir informações sobre o 3D Secure. Na operação verifyThreeDSEnrollment, threeDSRequest é específico à Índia. Na Índia, umas informações adicionais são requeridas para realizar a autentificação (exemplo: número de telefone do comprador). Para isso, um atributo deve ser enviado: threeDSRequest Atributo Formato mpiExtension Dados adicionais após à verificação realizada pelo MPI do vendedor. Composto de um subobjeto extensionData de tipo extInfo. Exemplo: extensionData.key, extensionData.value • key: nome do dado (o formato dele "string"). • value : valor do dado (o formato dele é "string"). Exemplo: <threeDSRequest> <mpiExtension> <extensionData> <key>extensionType</key> <value>npc356</value> </extensionData> <extensionData> <key>phoneid</key> <value>91000000000</value> </extensionData> </mpiExtension> </threeDSRequest> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 158 / 237 extensionData Resposta A resposta à operação verifyThreeDSEnrollement é feita pela plataforma de pagamento após verificar se o cartão do comprador está alistado ao 3D Secure. É constituída de um HEADER e de um BODY de tipo verifyThreeDSEnrollementResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem verifyThreeDSEnrollementResponse é a seguinte: Nome Tipo verifyThreeDSEnrollementResult verifyThreeDSEnrollementResult A estrutura da mensagem verifyThreeDSEnrollementResult é a seguinte: Objeto Tipo commonResponse commonResponse threeDSResponse threeDSResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. O objeto commonResponse permite obter informações gerais sobre uma operação. Os atributos que contém um valor na resposta são os seguintes: commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. n..2 string Tabela 153 : Objeto commonResponse Os atributos shopId, paymentSource, submissionDate, contractNumber e paymentToken não são informados nesta operação. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 159 / 237 O objeto threeDSResponse permite obter informações sobre a autenticação 3D Secure. • authenticationRequestData Décrit le résultat de la demande d’enrôlement ainsi que le message encodé qui sera transmis par le navigateur de l'acheteur à l’ACS. authenticationRequestData Formato threeDSAcctId Certificado reenviado pelo Directory Server. string threeDSAcsUrl Url de ACS que deve ser solicitado. string threeDSBrand Rede do cartão. string threeDSEncodedPareq Mensagem PAReq encodificada, pronto para enviar ao ACS. string threeDSEnrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. a1 threeDSRequestId Número de solicitação, para relembrar na chamada ENABLED_FINALIZE do atributo mode do objeto threeDSRequest. Tabela 154 : Objeto authenticationRequestData Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 160 / 237 string 6.12. Verificar o status da autenticação 3D Secure.'checkThreeDSAuthentication' A operação checkThreeDSAuthentication permite verificar o status da autenticação 3D Secure. Solicitação para enviar A solicitação checkThreeDSAuthentication é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação checkThreeDSAuthentication checkThreeDSAuthentication. toma na entrada um objeto do tipo O tipo checkThreeDSAuthentication é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest threeDSRequest threeDSRequest Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Possui os atributos seguintes: commonRequest Atributo Requisito contractNumber Número de contrato comerciante utilizado. Formato string Tabela 155 : Objeto commonRequest O objeto threeDSRequest permite transmitir informações sobre o 3D Secure. Dois atributos devem obrigatoriamente ser enviados: threeDSRequest Atributo Requisito Formato requestId Deve conter o valor retornado no atributothreeDSRequestId do objeto authenticationRequestData na operação verifyThreeDSEnrollment. string pares Mensagem PaRes (Payer Authentication Response) reenviada pelo ACS. string Tabela 156 : Objeto threeDSRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 161 / 237 Resposta A resposta à operação checkThreeDSAuthentication é feita pela plataforma de pagamento após verificar o status de autenticação 3D Secure. É constituída de um HEADER e de um BODY de tipo checkThreeDSAuthenticationResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem checkThreeDSAuthenticationResponse é a seguinte: Nome Tipo checkThreeDSAuthenticationResult checkThreeDSAuthenticationResult A estrutura da mensagem checkThreeDSAuthenticationResult é a seguinte: Objeto Tipo commonResponse commonResponse threeDSResponse threeDSResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso (não confundir com o status da transação). • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. Tabela 157 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 162 / 237 n..2 string O objeto threeDSResponse permite obter informações sobre a autenticação 3D Secure. • authenticationResultData Descreve os detalhes da autenticação 3D Secure. authenticationResultData Formato enrolled Status de alistamento do portador. Os valores possíveis são: • Y para um status alistado. • N para um status não alistado. • U para um status desconhecido. string status Status da autenticação do portador. Os valores possíveis são: • Y para um status autenticado 3 DS. • N para um erro de autenticação. • U para uma autenticação impossível. • A para uma tentativa de autenticação. a1 eci Indicador de Comercio Eletrônico. O valor eci depende do status da autenticação 3DS e do tipo de cartão. Os valores possíveis são: status =Y status = A status = U status =N VISA - AMEX 5 6 7 - MasterCard 02 01 - - xid Número de transação 3DS. string string cavvAlgorithm Algoritmo de verificação da autenticação do portador (CAVV). Os valores possíveis são: • 0 para HMAC. • 1 para CVV. • 2 para CVV_ATN. • 3 para Mastercard SPA. n1 cavv Certificado do ACS. string signValid Assinatura da autenticação 3DS. string brand Rede do cartão. string Tabela 158 : Objeto authenticationResultData Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 163 / 237 7. Efetuar operações específicas aos pagamento por código A opção pagamento por código permite realizar uma certa quantidade de operações tais como: Operação Nome da operação web service a ser usada Criar um alias (código) createToken Criar um Token Cartão (identificador) a partir de uma transação createTokenFromTransaction Realizar pagamentos recorrentes (assinaturas) createSubscription Modificar um alias (código) updateToken Modificar uma assinatura updateSubscription Recuperar os detalhes de um alias (código) getTokenDetails Resgatar o detalhe de uma assinatura getSubscriptionDetails Rescindir um alias (código) cancelToken Cancelar uma assinatura cancelSubscription Reativar um alias (código) reactivateToken Tabela 159 : Operações disponíveis com a opção pagamento por código Exemplos de codificação são apresentados em anexo a este documento. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 164 / 237 7.1. Criar um alias (código) 'createToken' A operação createToken permite ao site de e-commerce oferecer para seus compradores a opção de associar um alias (código) com um ou mais números de cartão bancário, com a finalidade de facilitar pagamentos posteriores. Esta opção permite: • Pagamentos rápidos e seguros (pagamento em um clic). • Efetuar pagamentos periódicos ou assinatura. Compartilhamento de códigos Pode-se compartilhar códigos (Token Cartão) entre diversas entidades jurídicas. Os códigos compartilhados entre diversas entidades jurídicas devem ser únicos e devem obrigatoriamente ser gerados pela plataforma de pagamento (ou seja o atributo paymentToken do objeto cardRequest não deve ser informado). No entanto, esta funcionalidade é submetida a condições particulares. Favor entrar em contato com a sua plataforma de pagamento para conhecê-las. Solicitação para enviar A solicitação createToken é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação createToken toma na entrada um objeto do tipo createToken. O tipo createToken é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest cardRequest cardRequest customerRequest customerRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 165 / 237 Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Possui os atributos seguintes: commonRequest Atributo Requisito paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. Parâmetro utilizado por padrão se nenhum valor estiver informado ou se for diferente dos valores possíveis. • MOTO para um pedido por correio ou telefone. • CC para um call center. • OTHER para um outro canal de venda. Somente o valor EC permite criar uma transação com 3D Secure. Os outros valores somente devem ser utilizados para a venda à distancia, pela qual o 3D Secure não é aplicável. submissionDate Data e hora UTC da transação apresentadas no formato ISO 8601 definido pelo W3C. Exemplo: 2016-07-16T19:20:00Z Se o valor deste atributo é distante demais da hora atual, a solicitação será rejeitada (código de erro 13). Formato string dateTime ans..40 contractNumber Número de contrato comerciante utilizado. Se este campo é informado, tomar cuidado em utilizar o contrato certo em relação à rede do cartão. Por exemplo, um contrato CB não pode ser utilizado para uma transação AMEX. string comment Comentário livre. string Tabela 160 : Objeto CommonRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 166 / 237 O objeto cardRequest permite transmitir informações sobre o cartão de pagamento. Para criar um alias, diferentes atributos são requisitados: cardRequest Atributo Requisito Formato number Número do cartão. string scheme Tipos de cartões. Os valores possíveis são: AMEX, CB, MASTERCARD, VISA, VISA_ELECTRON, MAESTRO, ECARTEBLEUE o JCB. string expiryMonth Mês de vencimento do cartão, entre 1 e 12. n..2 expiryYear Mês de vencimento do cartão de 4 dígitos Exemplo : 2016 n4 cardSecurityCode CVV de 3 números (ou 4 para Amex: Este campo é obrigatório quando o cartão possui um código criptograma visual. Se o CVV não é transmitido, o banco emissor recusará o pagamento. No entanto, este campo é facultativo quando a origem da transação for valorizada com MOTO. cardHolderBirthday Data de nascimento do portador no formato YYYY-MM-DD. Este campo é obrigatório para os meios de pagamento COFINOGA et CDGP, salvo se uma autenticação 3D Secure for realizada. paymentToken Código único (alias) associado a um meio de pagamento. • Ou este código será gerado pela plataforma. Neste caso, este parâmetro não deve ser informado. • Ou este código será gerado pelo site de e-commerce. Neste caso, este parâmetro deve ser informado com o valor do código desejado. Cuidado, cabe ao site de e-commerce garantir o caráter único dos códigos de usuários. Toda solicitação de registro contendo um código de usuário já existente será recusada e será exibido uma mensagem de erro. string Requerido em função dateTime do tipo de ans..64 pagamento string ans..64 Tabela 161 : Objeto cardRequest O objeto customerRequest permite transmitir informações a respeito da entrega, do faturamento e dos dados técnicos sobre o comprador Este objeto deve obriagatoriamente ser enviado na solicitação. É constituído dos sub objetos seguintes: Sub objeto Formato billingDetails Dados de faturamento do comprador. billingDetailsRequest shippingDetails Dados de entrega do comprador. shippingDetailsRequest extraDetails Dados técnicos sobre o comprador. extraDetailsRequest Tabela 162 : Sub objetos de customerRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 167 / 237 Requisito billingDetails possui os atributos seguintes: billingDetails Atributo Requisito Formato reference Referência do comprador. string n..80 title Estado civil do comprador. Exemplos de valores possíveis: • Senhora, etc.. string n..80 type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 email E-mail do comprador. Parâmetro obrigatório quando criar um alias. para a criação de um alias streetNumber Número de rua do comprador. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string ans..150 string an..5 address Endereço do comprador. string ans..255 district Bairro do comprador. string ans..127 zipCode CEP do comprador. string ans..64 city Cidade do comprador. string ans..128 state UF / Região do comprador. string ans..128 country País do comprador conforme à norma ISO 3166. Exemplos de valores possíveis: • DE para a Alemanha • IT para a Itália • PT para o Portugal • GB para o Reino-Unido • JA para o Japão • RU para a Rússia • ES para a Espanha • NL para a Holanda • SE para a Suécia • FR para a França • PL para a Polônia • CN para a China string - a2 language Idioma do comprador conforme à norma ISO 639-1. Exemplos de valores possíveis: • de para o alemão • it para o italiano • pt para o português • en para o inglês • ja para o japonês • ru para o russo • es para o espanhol • nl para o holandês • sv para o sueco • fr para o francês • pl para o polonês • zh para o chinês • tr para o turco cellPhoneNumber Número de telefone celular string - a2 string ans..32 Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 168 / 237 billingDetails Atributo Requisito identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). Formato string ans..255 Tabela 163 : Objeto billingDetails shippingDetails possui os atributos seguintes: shippingDetails Atributo Requisito Formato type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 streetNumber Número de rua para a entrega. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço de entrega. string ans..255 address2 Complemento de endereço de entrega. string ans..255 district Bairro de entrega. string ans..127 zipCode CEP de entrega. string ans..64 city Cidade de entrega. string ans..128 state UF / Região de entrega. string ans..128 country País de entrega. string - a2 deliveryCompanyName Informações sobre a transportadora. string ans..128 shippingSpeed Modo de entrega selecionado. Os valores possíveis são: • STANDARD para uma entrega padrão. • EXPRESS para uma entrega express. string (enum) shippingMethod Método de entrega utilizado. Os valores possíveis são: • RECLAIM_IN_SHOP para retirar a mercadoria na loja. • RELAY_POINT para a utilização de uma rede de pontos de entrega terceirizada (Kiala, Alveol, etc). • RECLAIM_IN_STATION para retirar num aeroporto, uma agência de viagens ou outros. • PACKAGE_DELIVERY_COMPANY para a entrega por transportadora (Colissimo, UPS, etc). • ETICKET para emitir de uma passagem eletrônica, baixar. string (enum) Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 169 / 237 shippingDetails Atributo Requisito Formato legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 164 : Objeto shippingDetails extraDetails possui os atributos seguintes: extraDetails Atributo Requisito Formato ipAddress O endereço IP do comprador. string ans40 fingerPrintId Identificador único de sessão. Específico ao Brasil e ao analisador de fraude ClearSale. Codificado a 128 octetos, pode conter maiúsculas ou minúsculas, números ou hífen ([A-Z] [a-z], 0-9, _, -). string ans128 Tabela 165 : Objeto extraDetails Exemplo de solicitação para ser enviada: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v5="http:// v5.ws.vads.lyra.com/"> <soap:Header xmlns:soapHeader="http://v5.ws.vads.lyra.com/Header"> <soapHeader:shopId>12345678</soapHeader:shopId> <soapHeader:requestId>78c944ce-511b-4e5a-b9cb-312e79666ed8</soapHeader:requestId> <soapHeader:timestamp>2015-04-01T12:24:56Z</soapHeader:timestamp> <soapHeader:mode>TEST</soapHeader:mode> <soapHeader:authToken>/a36O9j1fU765pBBPEmTmjtjawL08dNVmYd0zVevHtA=</soapHeader:authToken> </soap:Header> <soap:Body> <v5:createToken> <commonRequest> <submissionDate>2015-04-01T12:24:56Z</submissionDate> </commonRequest> <cardRequest> <number>4970100000000003</number> <scheme>VISA</scheme> <expiryMonth>12</expiryMonth> <expiryYear>2018</expiryYear> <cardSecurityCode>123</cardSecurityCode> </cardRequest> <customerRequest> <billingDetails> <title>Mr</title> <type>PRIVATE</type> <firstName>Jean</firstName> <lastName>Dupont</lastName> <phoneNumber>123456789</phoneNumber> <email>[email protected]</email> <streetNumber>15</streetNumber> <address>test address</address> <district>district</district> <zipCode>31000</zipCode> <city>TOULOUSE</city> <state>state</state> <country>France</country> <cellPhoneNumber>0612345678</cellPhoneNumber> <legalName>Jean Dupont</legalName> </billingDetails> <shippingDetails> <type>PRIVATE</type> <firstName>Jean</firstName> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 170 / 237 <lastName>Dupont</lastName> <phoneNumber>123456789</phoneNumber> <streetNumber>1234</streetNumber> <address>street</street> <address2>street2</street2> <district>district</district> <zipCode>1234</zipCode> <city>City</city> <state>State</state> <country>France</country> <deliveryCompanyName>DELIVERYCOMP</deliveryCompanyName> <shippingSpeed>STANDARD</shippingSpeed> <shippingMethod>PACKAGE_DELIVERY_COMPANY</shippingMethod> <legalName>Jean Dupont</legalName> </shippingDetails> </customerRequest> </v5:createToken> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 171 / 237 Resposta A resposta a operação createToken é feita pela plataforma de pagamento durante a criação de um alias (Código conta comprador) para efetuar pagamentos em um clic (pagamento por código). É constituída de um HEADER e de um BODY de tipo createTokenResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem createTokenResponse é a seguinte: Nome Tipo createTokenResult createTokenResult A estrutura da mensagem createTokenResult é a seguinte: Objeto Tipo commonResponse commonResponse authorizationResponsese a solicitação de autorização for recusada pelo banco. authorizationResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. Observação: Os objetos paymentResponse, orderResponse,cardResponse,captureResponse, customerResponse, markResponse, threeDSResponse, extraResponse,subscriptionResponse, shoppingCartResponse e fraudManagementResponse não são informados na resposta. Observação: Para obter os detalhes sobre o meio de pagamento utilizado, faça a operação getTokenDetails. O objeto cardResponse é retornado na resposta. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 172 / 237 O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string paymentToken Alias ou Código da conta comprador (pagamento por código). string Tabela 166 : Objeto commonResponse O objeto authorizationResponse permite obter informações sobre a solicitação de autorização. Somente um atributo é retornado na resposta: authorizationResponse Formato result Código retorno da solicitação de autorização retornado pelo banco emissor quando for recusado. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n2 Tabela 167 : Objeto authorizationResponse Exemplo de resposta: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <shopId xmlns="http://v5.ws.vads.lyra.com/Header/">12345678</shopId> <requestId xmlns="http://v5.ws.vads.lyra.com/Header/">78c944ce-511b-4e5a-b9cb-312e79666ed8</ requestId> <timestamp xmlns="http://v5.ws.vads.lyra.com/Header/">2015-04-01T12:24:56Z</timestamp> <mode xmlns="http://v5.ws.vads.lyra.com/Header/">TEST</mode> <authToken xmlns="http://v5.ws.vads.lyra.com/Header/">padDTG41Q1UEh560px +dwKl3bgtjkkv6d2c4ahoQPJs=</authToken> </env:Header> <soap:Body> <ns2:createTokenResponse xmlns:ns2="http://v5.ws.vads.lyra.com/"> <createTokenResult> <requestId>78c944ce-511b-4e5a-b9cb-312e79666ed8</requestId> <commonResponse> <responseCode>0</responseCode> <responseCodeDetail>Action successfully completed</responseCodeDetail> <paymentToken>cb059d56f8564674bc139a373a8daebb</paymentToken> </commonResponse> <authorizationResponse/> </createTokenResult> </ns2:createTokenResponse> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 173 / 237 7.2. Criar um Token Cartão (código) a partir de uma transação 'createTokenFromTransaction' A operação createTokenFromTransaction permite a um site de e-commerce criar um Token Cartão (código) a partir de uma transação existente. Para reduzir pagamentos pendentes, antes de criar o Token Cartão, a validade do meio de pagamento utilizado para a transação de origem é verificada a partir dos dados da última transação realizada com este mesmo meio de pagamento. Assim, pode-se que a partir de uma transação de pagamento válida, a operação createTokenFromTransaction não seja realizada com sucesso, devido a uma transação inválida mais recente. Solicitação para enviar A solicitação createTokenFromTransaction é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação createTokenFromTransaction createTokenFromTransaction. toma na entrada um objeto do tipo O tipo createTokenFromTransaction é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest queryRequest queryRequest Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Possui os atributos seguintes: commonRequest Atributo Requisito paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. Parâmetro utilizado por padrão se nenhum valor estiver informado ou se for diferente dos valores possíveis. • MOTO para um pedido por correio ou telefone. • CC para um call center. • OTHER para um outro canal de venda. Somente o valor EC permite criar uma transação com 3D Secure. Os outros valores somente devem ser utilizados para a venda à distancia, pela qual o 3D Secure não é aplicável. submissionDate Data e hora UTC da transação apresentadas no formato ISO 8601 definido pelo W3C. Exemplo: 2016-07-16T19:20:00Z Se o valor deste atributo é distante demais da hora atual, a solicitação será rejeitada (código de erro 13). contractNumber Número de contrato comerciante utilizado. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 174 / 237 Formato string dateTime ans..40 string commonRequest Atributo Se este campo é informado, tomar cuidado em utilizar o contrato certo em relação à rede do cartão. Por exemplo, um contrato CB não pode ser utilizado para uma transação AMEX. Requisito Formato comment Comentário livre. string Tabela 168 : Objeto CommonRequest O objeto queryRequest permite consultar um alias (código de conta) para saber quais são os diferentes atributos dele. Somente o atributo uuid é imprenscidível para esta operação. queryRequest Atributo Requisito Formato uuid Referência única da transação. string Tabela 169 : Objeto queryRequest Resposta A resposta à operação createTokenFromTransaction é realizada pela plataforma de pagamento quando criar um Token Cartão (Identificador) durante um pagamento. É constituída de um HEADER e de um BODY de tipo createTokenFromTransactionResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem createTokenFromTransactionResponse é a seguinte: Nome Tipo createTokenFromTransactionResult createTokenFromTransactionResult A estrutura da mensagem createTokenFromTransactionResult é a seguinte: Objeto Tipo commonResponse commonResponse authorizationResponse authorizationResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. Observação: Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 175 / 237 Os objetos paymentResponse, orderResponse,cardResponse,captureResponse, customerResponse, markResponse, threeDSResponse, extraResponse,subscriptionResponse, shoppingCartResponse e fraudManagementResponse não são informados na resposta. Observação: Para obter os detalhes sobre o meio de pagamento utilizado, faça a operação getTokenDetails. O objeto cardResponse é retornado na resposta. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 176 / 237 O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string paymentToken Alias ou Código da conta comprador (pagamento por código). string Tabela 170 : Objeto commonResponse O objeto authorizationResponse permite obter informações sobre a solicitação de autorização. Somente um atributo é retornado na resposta: authorizationResponse Formato result Código retorno da solicitação de autorização retornado pelo banco emissor quando for recusado. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. n2 Tabela 171 : Objeto authorizationResponse Para ajudar você a entender a razão da recusa, segue uma lista dos códigos frequentemente retornados: 0 : Ação efetuada com sucesso. 2 : Atributo inválido (o códigoa da loja deve ser o mesmo que o código da transação) 10 : Transação não encontrada 35 : Criação do Token Cartão recusada (a transação utilizada para criar o Token Cartão deve ser realizada com sucesso e autorizada pelo banco) 56 : PAN não encontrado (PAN da transação de origem não encontrado) Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 177 / 237 7.3. Modificar um alias (código) 'updateToken' A operação updateToken permite modificar todas as informações salvas sobre o comprador (dados bancários e pessoais). Solicitação para enviar A solicitação updateToken é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação updateToken toma na entrada um objeto do tipo updateToken. O tipo updateToken é constituído dos parâmetros seguintes: Modificação do meio de pagamento: Objeto Formato commonRequest commonRequest queryRequest queryRequest cardRequest cardRequest customerRequest customerRequest Requisito Modificação dos dados do comprador: Objeto Formato commonRequest commonRequest queryRequest queryRequest cardRequest cardRequest customerRequest customerRequest Requisito Modificação do meio de pagamento e dos dados do comprador: Objeto Formato commonRequest commonRequest queryRequest queryRequest cardRequest cardRequest customerRequest customerRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 178 / 237 Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Possui os atributos facultativos seguintes: commonRequest Atributo Requisito paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. Parâmetro utilizado por padrão se nenhum valor estiver informado ou se for diferente dos valores possíveis. • MOTO para um pedido por correio ou telefone. • CC para um call center. • OTHER para um outro canal de venda. Somente o valor EC permite criar uma transação com 3D Secure. Os outros valores somente devem ser utilizados para a venda à distancia, pela qual o 3D Secure não é aplicável. Formato string submissionDate Data e hora UTC da transação apresentadas no formato ISO 8601 definido pelo W3C. Exemplo: 2016-07-16T19:20:00Z Se o valor deste atributo é distante demais da hora atual, a solicitação será rejeitada (código de erro 13). dateTime ans..40 contractNumber Número de contrato comerciante utilizado. Se este campo é informado, tomar cuidado em utilizar o contrato certo em relação à rede do cartão. Por exemplo, um contrato CB não pode ser utilizado para uma transação AMEX. string comment Comentário livre. string Tabela 172 : Objeto CommonRequest O objeto queryRequest permite consultar um alias (código de conta) para saber quais são os diferentes atributos dele. Somente o atributo paymentToken é imprenscidível para esta operação. queryRequest Atributo Requisito paymentToken Alias (pagamento por código). Formato string ans..64 Tabela 173 : Objeto queryRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 179 / 237 O objeto cardRequest permite transmitir informações sobre o cartão de pagamento. Dependendo do tipo de pagamento (pagamento por alias ou pagamento com digitação dos dados bancários), um ou mais atributos são requisitados. cardRequest Atributo Requisito Formato number Número do cartão. string scheme Tipos de cartões. Os valores possíveis são: AMEX, CB, MASTERCARD, VISA, VISA_ELECTRON, MAESTRO, ECARTEBLEUE o JCB. string expiryMonth Mês de vencimento do cartão, entre 1 e 12. n..2 expiryYear Mês de vencimento do cartão de 4 dígitos Exemplo : 2016 n4 cardSecurityCode CVV de 3 números (ou 4 para Amex: Este campo é obrigatório quando o cartão possui um código criptograma visual. Se o CVV não é transmitido, o banco emissor recusará o pagamento. No entanto, este campo é facultativo quando a origem da transação for valorizada com MOTO. cardHolderBirthday Data de nascimento do portador no formato YYYY-MM-DD. Este campo é obrigatório para os meios de pagamento COFINOGA et CDGP, salvo se uma autenticação 3D Secure for realizada. Tabela 174 : Objeto cardRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 180 / 237 string Requerido em função dateTime do tipo de ans..64 pagamento. O objeto customerRequest permite transmitir informações a respeito da entrega, do faturamento e dos dados técnicos sobre o comprador Este objeto deve obriagatoriamente ser enviado na solicitação. É constituído dos sub objetos seguintes: Sub objeto Formato billingDetails Dados de faturamento do comprador. billingDetailsRequest shippingDetails Dados de entrega do comprador. shippingDetailsRequest extraDetails Dados técnicos sobre o comprador. extraDetailsRequest Requisito Tabela 175 : Sub objetos de customerRequest billingDetails possui os atributos seguintes: billingDetails Atributo Requisito Formato reference Referência do comprador. string n..80 title Estado civil do comprador. Exemplos de valores possíveis: • Senhora, etc.. string n..80 type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 email E-mail do comprador. Parâmetro obrigatório quando criar um alias. para a criação de um alias streetNumber Número de rua do comprador. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string ans..150 string an..5 address Endereço do comprador. string ans..255 district Bairro do comprador. string ans..127 zipCode CEP do comprador. string ans..64 city Cidade do comprador. string ans..128 state UF / Região do comprador. string ans..128 country País do comprador conforme à norma ISO 3166. Exemplos de valores possíveis: Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 181 / 237 string - a2 billingDetails Atributo Requisito • DE para a Alemanha • IT para a Itália • PT para o Portugal • GB para o Reino-Unido • JA para o Japão • RU para a Rússia • ES para a Espanha • NL para a Holanda • SE para a Suécia • FR para a França • PL para a Polônia • CN para a China Formato language Idioma do comprador conforme à norma ISO 639-1. Exemplos de valores possíveis: • de para o alemão • it para o italiano • pt para o português • en para o inglês • ja para o japonês • ru para o russo • es para o espanhol • nl para o holandês • sv para o sueco • fr para o francês • pl para o polonês • zh para o chinês • tr para o turco string - a2 cellPhoneNumber Número de telefone celular string ans..32 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 176 : Objeto billingDetails shippingDetails possui os atributos seguintes: shippingDetails Atributo Requisito Formato type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 streetNumber Número de rua para a entrega. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço de entrega. string ans..255 address2 Complemento de endereço de entrega. string ans..255 district Bairro de entrega. string ans..127 zipCode CEP de entrega. string ans..64 city Cidade de entrega. string ans..128 state UF / Região de entrega. string ans..128 Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 182 / 237 shippingDetails Atributo Requisito country País de entrega. Formato string - a2 deliveryCompanyName Informações sobre a transportadora. string ans..128 shippingSpeed Modo de entrega selecionado. Os valores possíveis são: • STANDARD para uma entrega padrão. • EXPRESS para uma entrega express. string (enum) shippingMethod Método de entrega utilizado. Os valores possíveis são: • RECLAIM_IN_SHOP para retirar a mercadoria na loja. • RELAY_POINT para a utilização de uma rede de pontos de entrega terceirizada (Kiala, Alveol, etc). • RECLAIM_IN_STATION para retirar num aeroporto, uma agência de viagens ou outros. • PACKAGE_DELIVERY_COMPANY para a entrega por transportadora (Colissimo, UPS, etc). • ETICKET para emitir de uma passagem eletrônica, baixar. string (enum) legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 177 : Objeto shippingDetails extraDetails possui os atributos seguintes: extraDetails Atributo Requisito Formato ipAddress O endereço IP do comprador. string ans40 fingerPrintId Identificador único de sessão. Específico ao Brasil e ao analisador de fraude ClearSale. Codificado a 128 octetos, pode conter maiúsculas ou minúsculas, números ou hífen ([A-Z] [a-z], 0-9, _, -). string ans128 Tabela 178 : Objeto extraDetails Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 183 / 237 Resposta A resposta à operação updateToken é feita pela plataforma de pagamento após uma solicitação de modificação de um alias/código conta comprador. É constituída de um HEADER e de um BODY de tipo updateTokenResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem updateTokenResponse é a seguinte: Nome Tipo updateTokenResult updateTokenResult A estrutura da mensagem updateTokenResult é a seguinte: Objeto Tipo commonResponse commonResponse authorizationResponse se modificações para o meio de pagamento forem realizadas. authorizationResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. Observação : os objetos paymentResponse,orderResponse, cardResponse, captureResponse, customerResponse, markResponse, threeDSResponse,extraResponse, subscriptionResponse e fraudManagementResponse não são informados na resposta. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 184 / 237 O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string paymentToken Alias ou Código da conta comprador (pagamento por código). string Tabela 179 : Objeto commonResponse O objeto authorizationResponse permite obter informações sobre a solicitação de autorização. authorizationResponse Formato mode Especifica de que maneira é realizada a solicitação de autorização. Dois valores possíveis: • MARK Uma autorização 1 BRL foi efetuada para verificar a validade do cartão. result Código retorno da solicitação de autorização retornado pelo banco emissor quando for recusado. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. Tabela 180 : Objeto authorizationResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 185 / 237 string n2 7.4. Recuperar os detalhes de um alias (código) 'getTokenDetails' A operação getTokenDetails permite recuperar certas informações vinculadas ao alias (código). Solicitação para enviar A solicitação getTokenDetails é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação getTokenDetails toma na entrada um objeto do tipo getTokenDetails. O tipo getTokenDetails é composto de um só objeto. Objeto Formato queryRequest queryRequest Requisito O objeto queryRequest permite consultar um alias (código de conta) para saber quais são os diferentes atributos dele. Somente o atributo paymentToken é imprenscidível para esta operação. queryRequest Atributo Requisito paymentToken Alias (pagamento por código). Formato string ans..64 Tabela 181 : Objeto queryRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 186 / 237 Resposta A resposta à operação getTokenDetails é feita pela plataforma de pagamento após uma solicitação de informação sobre um token. É constituída de um HEADER e de um BODY de tipo getTokenDetailsResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem getTokenDetailsResponse é a seguinte: Nome Tipo getTokenDetailsResult getTokenDetailsResult A estrutura da mensagem getTokenDetailsResult é a seguinte: Objeto Tipo commonResponse commonResponse cardResponse cardResponse customerResponse customerResponse authorizationResponse authorizationResponse tokenResponse tokenResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. Observação : os objetos paymentResponse, orderResponse, captureResponse, markResponse, subscriptionResponse, extraResponse etfraudManagementResponse não são levados em consideração na resposta. O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. Tabela 182 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 187 / 237 n..2 string O objeto cardResponse apresenta em detalhes as informações sobre o meio de pagamento utilizado. cardResponse Formato number • Número de cartão inválido. Contém os 6 primeiros dígitos do número, seguido por "XXXXXX" e finalmente os 4 últimos números. • IBAN e BIC usados para o pagamento, separados por um "_" no caso de um pagamento por débito no cartão de crédito. string scheme Tipo do cartão. string brand Marca do cartão. string country Código país do país emissor do cartão (Código numérico ISO 3166). productCode Código produto do cartão. ISO 3166 ano..3 bankCode Código banco do banco emissor. n..5 expiryMonth Mês de vencimento entre 1 e 12 (ex: 3 para março, 10 para outubro). n..2 expiryYear Ano de vencimento com 4 dígitos (ex: 2023). n4 Tabela 183 : Objeto cardResponse O objeto authorizationResponse permite obter informações sobre a solicitação de autorização. authorizationResponse Formato date Data e hora do pedido de autorização se mode vale FULL. dateTime anos..40 number Número do pedido de autorização se mode vaut FULL. result Código retorno da solicitação de autorização retornado pelo banco emissor quando for recusado. Os valores possíveis estão listados no capítulo Gerenciar os códigos de retorno de uma solicitação de autorização. Tabela 184 : Objeto authorizationResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 188 / 237 ano..6 n..2 O objeto customerResponse detalha as numerosas informações sobre o comprador. A resposta contém as análises de: • billingDetails Dados de faturamento do comprador. • shippingDetails Dados de entrega do comprador. • extraDetails Dados técnicos sobre o comprador. billingDetails Atributo Formato reference Referência do comprador. string n..80 title Estado civil do comprador. Exemplos de valores possíveis: • Senhora, etc.. string n..80 type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 email E-mail do comprador. Parâmetro obrigatório quando criar um alias. string ans..150 streetNumber Número de rua do comprador. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço do comprador. string ans..255 district Bairro do comprador. string ans..127 zipCode CEP do comprador. string ans..64 city Cidade do comprador. string ans..128 state UF / Região do comprador. string ans..128 country País do comprador conforme à norma ISO 3166. Exemplos de valores possíveis: • DE para a Alemanha • IT para a Itália • PT para o Portugal • GB para o Reino-Unido • JA para o Japão • RU para a Rússia • ES para a Espanha • NL para a Holanda • SE para a Suécia • FR para a França • PL para a Polônia • CN para a China Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 189 / 237 string - a2 billingDetails Atributo Formato language Idioma do comprador conforme à norma ISO 639-1. Exemplos de valores possíveis: • de para o alemão • it para o italiano • pt para o português • en para o inglês • ja para o japonês • ru para o russo • es para o espanhol • nl para o holandês • sv para o sueco • fr para o francês • pl para o polonês • zh para o chinês • tr para o turco cellPhoneNumber Número de telefone celular string - a2 string ans..32 legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 185 : Objeto billingDetails shippingDetails Atributo Formato type Tipo de comprador. Os valores possíveis são: • PRIVATE para uma pessoa física. • COMPANY para uma pessoa jurídica. string (enum) firstName Sobrenome do comprador. string ans..128 lastName Nome do comprador. string ans..128 phoneNumber Número de telefone do comprador. string ans..32 streetNumber Número de rua para a entrega. Observação: se este atributo está presente na solicitação, não pode ser enviado vazio. string an..5 address Endereço de entrega. string ans..255 address2 Complemento de endereço de entrega. string ans..255 district Bairro de entrega. string ans..127 zipCode CEP de entrega. string ans..64 city Cidade de entrega. string ans..128 state UF / Região de entrega. string ans..128 country País de entrega. string - a2 deliveryCompanyName Informações sobre a transportadora. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 190 / 237 string ans..128 shippingDetails Atributo Formato shippingSpeed Modo de entrega selecionado. Os valores possíveis são: • STANDARD para uma entrega padrão. • EXPRESS para uma entrega express. string (enum) shippingMethod Método de entrega utilizado. Os valores possíveis são: • RECLAIM_IN_SHOP para retirar a mercadoria na loja. • RELAY_POINT para a utilização de uma rede de pontos de entrega terceirizada (Kiala, Alveol, etc). • RECLAIM_IN_STATION para retirar num aeroporto, uma agência de viagens ou outros. • PACKAGE_DELIVERY_COMPANY para a entrega por transportadora (Colissimo, UPS, etc). • ETICKET para emitir de uma passagem eletrônica, baixar. string (enum) legalName Razão social da empresa. string ans..128 identityCode Permite identificar de maneira única cada cidadão dentro de um país. Por exemplo, ClearSale no Brasil exige que este campo seja valorizado com o CPF/CNPJ (formato numérico, tendo de 11 a 20 dígitos). string ans..255 Tabela 186 : Objeto shippingDetails extraDetails Formato ipAddress O endereço IP do comprador. string ans40 Tabela 187 : Objeto extraDetails O objeto tokenResponse permite obter informações sobre a data de criação e/ou de rescisão de um Token Cartão. tokenResponse Formato creationDate Data de criação do Token Cartão. dateTime ans..40 cancellationDate Data de rescisão do Token Cartão. dateTime ans..40 Tabela 188 : Objeto tokenResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 191 / 237 7.5. Rescindir um Token Cartão (código) 'cancelToken' A operação cancelToken permite desativar/rescindir um Token Cartão (código) que permite efetuar pagamentos. Observação: Um Token Cartão rescindido / desativado após esta operação rescinde todas as assinaturas vinculadas a este Token Cartão. Solicitação para enviar A solicitação cancelToken é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação cancelToken toma na entrada um objeto do tipo cancelToken. O tipo cancelToken é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest queryRequest queryRequest Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Somente o atributo submissionDate pode ser valorizado, se for preciso. Este atributo é facultativo. commonRequest Atributo Requisito submissionDate Data e hora UTC da rescisão apresentadas no formato ISO 8601 definido pelo W3C. Exemplo: 2016-07-16T19:20:00Z Se o valor deste atributo é distante demais da hora atual, a solicitação será rejeitada (código de erro 13). Formato dateTime ans..40 Tabela 189 : Objeto commonRequest Os atributos paymentSource,contractNumber ecomment não são hoje levados em consideração para esta operação. O objeto queryRequest permite consultar um alias (código de conta) para saber quais são os diferentes atributos dele. Somente o atributo paymentToken é imprenscidível para esta operação. queryRequest Atributo Requisito paymentToken Alias (pagamento por código). Formato string ans..64 Tabela 190 : Objeto queryRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 192 / 237 Resposta A resposta à operação cancelToken é feita pela plataforma de pagamento após uma solicitação de desativação de um código (token en inglês) que permite efetuar pagamentos. É constituída de um HEADER e de um BODY de tipo cancelTokenResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem cancelTokenResponse é a seguinte: Nome Tipo cancelTokenResult cancelTokenResult A estrutura da mensagem cancelTokenResult é a seguinte: Objeto Tipo commonResponse commonResponse O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. Tabela 191 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 193 / 237 n..2 string 7.6. Reativar um alias (código) 'reactivateToken' A operação reactivateToken permite reativar um alias (código). Solicitação para enviar A solicitação reactivateToken é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação reactivateToken toma na entrada um objeto do tipo reactivateToken. O tipo reactivateToken É composto do seguinte objeto: Objeto Formato queryRequest queryRequest Requisito O objeto queryRequest permite consultar um alias (código de conta) para saber quais são os diferentes atributos dele. Somente o atributo paymentToken é imprenscidível para esta operação. queryRequest Atributo Requisito paymentToken Alias (pagamento por código). Formato string ans..64 Tabela 192 : Objeto queryRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 194 / 237 Resposta A resposta à operação reactivateToken é feita pela plataforma de pagamento após uma reativação de um código/alias (token en inglês). É constituída de um HEADER e de um BODY de tipo reactivateTokenResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem reactivateTokenResponse é a seguinte: Nome Tipo reactivateTokenResult reactivateTokenResult A estrutura da mensagem reactivateTokenResult é a seguinte: Objeto Tipo commonResponse commonResponse O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. Tabela 193 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 195 / 237 n..2 string 7.7. Realizar pagamentos recorrentes (assinaturas) 'createSubscription' A operação createSubscription permite realizar pagamentos recorrentes (assinaturas). É preciso utilizar um alias já existente e válido. Este alias pode ser criado via: • a operação createToken, ou • pelo formulário (ver Guia de Implementação do formulário de pagamento). Quando a operação createSubscription for criada, a plataforma de pagamento processa automaticamente os pagamentos agendados para serem realizados. Para ser notificado sobre o resultado de um pagamento agendado, o vendedor deve configurar a regra URL de notificação para a criação de um pagamento recorrente pelo seu Back Office (ver capítulo Configurar as notificações do Guia de Implementação do formulário de pagamento...). Erros frequentes durante a criação de pagamentos recorrentes: • O alias (código) fornecido não existe, foi cancelado ou suspenso. • A data de efeito (atributo effectDate do objeto subscriptionRequest) venceu. Um código de erro será enviado. Solicitação para enviar A solicitação createSubscription é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação createSubscription toma na entrada um objeto do tipo createSubscription. O tipo createSubscription é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest orderRequest orderRequest subscriptionRequest subscriptionRequest cardRequest cardRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 196 / 237 Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Possui os atributos seguintes: commonRequest Atributo Requisito paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. Parâmetro utilizado por padrão se nenhum valor estiver informado ou se for diferente dos valores possíveis. • MOTO para um pedido por correio ou telefone. • CC para um call center. • OTHER para um outro canal de venda. Somente o valor EC permite criar uma transação com 3D Secure. Os outros valores somente devem ser utilizados para a venda à distancia, pela qual o 3D Secure não é aplicável. Formato string submissionDate Data e hora UTC da transação apresentadas no formato ISO 8601 definido pelo W3C. Exemplo: 2016-07-16T19:20:00Z Se o valor deste atributo é distante demais da hora atual, a solicitação será rejeitada (código de erro 13). dateTime ans..40 contractNumber Número de contrato comerciante utilizado. Se este campo é informado, tomar cuidado em utilizar o contrato certo em relação à rede do cartão. Por exemplo, um contrato CB não pode ser utilizado para uma transação AMEX. string comment Comentário livre. string Tabela 194 : Objeto CommonRequest O objeto orderRequest permite transmitir informações vinculadas ao pedido. É composto do atributo seguinte: orderRequest Atributo Requisito orderId Referência do pedido. Formato string an..64 Tabela 195 : Objeto orderRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 197 / 237 O objeto subscriptionRequest permite transmitir informações sobre a assinatura. Possui os atributos seguintes: subscriptionRequest Atributo Requisito effectDate Data de vigência no formato W3C. Exemplo : 2016-07-16T19:20Z A data não pode ser vencida. Formato dateTime ans..40 amount Valor da assinatura na sua menor unidade monetária. currency Código da moeda (Código moeda ISO 4217: 986 para o BRL). initialAmount Valor das parcelas da assinatura (na sua menor unidade monetária) para a ou as primeiras parcelas se estas últimas são diferentes do valor da assinatura amount. initialAmountNumber Quantidades de parcelas para as quais é preciso aplicar o valor initialAmount. Este atributo se torna obrigatório se initialAmount é valorizado. rrule Descrição da regra da assinatura. O valor esperado neste atributo é um string de dígitos conforme à especificação iCalendar, ou Internet Calendar, apresentado na RFC5545 (ver http://tools.ietf.org/html/rfc5545). Por razões técnicas. não é possível definir períodos de assinatura inferiores a um dia. As palavras chaves SECONDLY" / "MINUTELY" / "HOURLY não são levados em conta. Exemplos: • Para definir parcelas de pagamento que ocorrem o último dia de cada mês, durante 12 meses, a regra se escreve: RRULE:FREQ=MONTHLY;BYMONTHDAY=28,29,30,31;BYSETPOS=-1;COUNT=12 Esta regra significa que se o mês corrente não contém um dia 31, então o motor levará em conta o dia 30. Se o dia 30 não existe, então ele levará em conta o dia 29, e assim por diante até o dia 28. Outra versão desta regra é: RRULE:FREQ=MONTHLY;COUNT=5;BYMONTHDAY=-1 • Para definir parcelas de pagamento que ocorrem o dia 10 de cada mês, durante 12 meses, a regra de assinatura se escreve da seguinte forma: RRULE:FREQ=MONTHLY;COUNT=12;BYMONTHDAY=10 • Para definir parcelas de pagamento que ocorrem todo trimestre, até o 31/12/2016: RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=1,4,7,10;UNTIL=20161231 As parcelas ocorrerão todo dia 1° de janeiro, abril, julho e outubro. A quantidade total de parcelas depende da data de início da assinatura. Para maiores detalhes e exemplos, você pode consultar o site http:// recurrance.sourceforge.net/. subscriptionId Código da assinatura. n..12 n3 n..12 int string string description Descrição da assinatura. string Tabela 196 : Objeto subscriptionRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 198 / 237 O objeto cardRequest permite transmitir informações sobre o cartão de pagamento. Somente o atributo paymentToken deve ser valorizado. cardRequest Atributo Requisito paymentToken Código único (alias) associado a um meio de pagamento. • Ou este código foi gerado pela plataforma. • Ou este código foi gerado pelo site de e-commerce. para o pagamento por código Formato string ans..64 Tabela 197 : Objeto cardRequest Exemplo de solicitação para ser enviada A solicitação abaixo é um exemplo de assinatura com código. <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v5="http:// v5.ws.vads.lyra.com/"> <soap:Header xmlns:soapHeader="http://v5.ws.vads.lyra.com/Header"> <soapHeader:shopId>12345678</soapHeader:shopId> <soapHeader:requestId>4e977101-9551-4dd8-9296-a4fdad0b5fe4</soapHeader:requestId> <soapHeader:timestamp>2015-04-01T12:28:49Z</soapHeader:timestamp> <soapHeader:mode>TEST</soapHeader:mode> <soapHeader:authToken>rk/ufZhrnsq2yrJMhehRWu9UQ9jbU9RSt2MsP0czeIA=</soapHeader:authToken> </soap:Header> <soap:Body> <v5:createSubscription> <commonRequest> <paymentSource>EC</paymentSource> <submissionDate>2015-04-01T12:28:49Z</submissionDate> </commonRequest> <orderRequest> <orderId>TEST-ORDER</orderId> </orderRequest> <subscriptionRequest> <subscriptionId>TEST-SUBSCRIPTION-01</subscriptionId> <effectDate>2015-04-01T12:28:49Z</effectDate> <amount>10</amount> <currency>978</currency> <initialAmount>10</initialAmount> <initialAmountNumber>100</initialAmountNumber> <rrule>RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=10</rrule> </subscriptionRequest> <cardRequest> <paymentToken>cb059d56f8564674bc139a373a8daebb</paymentToken> </cardRequest> </v5:createSubscription> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 199 / 237 Resposta A resposta à operação createSubscription é feita pela plataforma de pagamento após uma solicitação de criação de uma assinatura. É constituída de um HEADER e de um BODY de tipo createSubscriptionResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem createSubscriptionResponse é a seguinte: Nome Tipo createSubscriptionResult createSubscriptionResult A estrutura da mensagem createSubscriptionResult é a seguinte: Objeto Tipo commonResponse commonResponse subscriptionResponse subscriptionResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. Observação : os objetos paymentResponse,orderResponse, cardResponse, captureResponse, authorizationResponse, customerResponse,markResponse,threeDSResponse, extraResponse e fraudManagementResponse não são levados em consideração na resposta. O objeto commonResponse permite obter informações gerais sobre uma operação. Os atributos que contém um valor na resposta são os seguintes: commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. n..2 string Tabela 198 : Objeto commonResponse Os atributos shopId, paymentSource, submissionDate, contractNumber e paymentToken não são informados nesta operação. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 200 / 237 O objeto subscriptionResponse detalha todas as informações que constituem uma assinatura. Nesta operação, somente o atributo subscriptionId é retornado se este último foi enviado na solicitação. subscriptionResponse Formato subscriptionId Código da assinatura. string Tabela 199 : Objeto subscriptionResponse Exemplo de resposta: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <shopId xmlns="http://v5.ws.vads.lyra.com/Header/">12345678</shopId> <requestId xmlns="http://v5.ws.vads.lyra.com/Header/">4e977101-9551-4dd8-9296a4fdad0b5fe4</requestId> <timestamp xmlns="http://v5.ws.vads.lyra.com/Header/">2015-04-01T12:28:49Z</timestamp> <mode xmlns="http://v5.ws.vads.lyra.com/Header/">TEST</mode> <authToken xmlns="http://v5.ws.vads.lyra.com/ Header/">cOS5ykWUf7lerOaIrAmkfmNFD7ZbqvEWHiqUEmlngUU=</authToken> </env:Header> <soap:Body> <ns2:createSubscriptionResponse xmlns:ns2="http://v5.ws.vads.lyra.com/"> <createSubscriptionResult> <requestId>4e977101-9551-4dd8-9296-a4fdad0b5fe4</requestId> <commonResponse> <responseCode>0</responseCode> <responseCodeDetail>Action successfully completed</responseCodeDetail> </commonResponse> <authorizationResponse/> </createSubscriptionResult> </ns2:createSubscriptionResponse> </soap:Body> </soap:Envelope> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 201 / 237 7.8. Modificar uma assinatura 'updateSubscription' A operação updateSubscription permite modificar: • Os dados sobre o comprador. • Os pagamentos: um valor, uma moeda, uma data de vencimento, um status, etc. Esta operação não pode ser pedida se a data de vigência for atingida. Solicitação para enviar A solicitação updateSubscription é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação updateSubscription toma na entrada um objeto do tipo updateSubscription. O tipo updateSubscription é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest queryRequest queryRequest subscriptionRequest subscriptionRequest paymentRequest paymentRequest Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Diversos atributos, facultativos, podem ser especificados na solicitação. commonRequest Atributo Requisito Formato paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. Parâmetro utilizado por padrão se nenhum valor estiver informado ou se for diferente dos valores possíveis. • MOTO para um pedido por correio ou telefone. • CC para um call center. • OTHER para um outro canal de venda. Somente o valor EC permite criar uma transação com 3D Secure. Os outros valores somente devem ser utilizados para a venda à distancia, pela qual o 3D Secure não é aplicável. string contractNumber Número de contrato comerciante utilizado. Se este campo é informado, tomar cuidado em utilizar o contrato certo em relação à rede do cartão. Por exemplo, um contrato CB não pode ser utilizado para uma transação AMEX. string Tabela 200 : Objeto commonRequest O atributo comment não é levado em consideração para esta operação, nos dias de hoje. O objeto queryRequest permite consultar uma transação para saber quais são os diferentes atributos dela. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 202 / 237 Possui os atributos seguintes: queryRequest Atributo Requisito paymentToken Alias (pagamento por código). Formato string ans..64 subscriptionId Código da assinatura. string Tabela 201 : Objeto queryRequest O objeto subscriptionRequest permite transmitir informações sobre a assinatura. Possui os atributos seguintes: subscriptionRequest Atributo Requisito effectDate Data de vigência no formato W3C. Exemplo : 2016-07-16T19:20Z A data não pode ser vencida. Formato dateTime ans..40 amount Valor da assinatura na sua menor unidade monetária. currency Código da moeda (Código moeda ISO 4217: 986 para o BRL). initialAmount Valor das parcelas da assinatura (na sua menor unidade monetária) para a ou as primeiras parcelas se estas últimas são diferentes do valor da assinatura amount. initialAmountNumber Quantidades de parcelas para as quais é preciso aplicar o valor initialAmount. Este atributo se torna obrigatório se initialAmount é valorizado. rrule Descrição da regra da assinatura. O valor esperado neste atributo é um string de dígitos conforme à especificação iCalendar, ou Internet Calendar, apresentado na RFC5545 (ver http://tools.ietf.org/html/rfc5545). Por razões técnicas. não é possível definir períodos de assinatura inferiores a um dia. As palavras chaves SECONDLY" / "MINUTELY" / "HOURLY não são levados em conta. Exemplos: • Para definir parcelas de pagamento que ocorrem o último dia de cada mês, durante 12 meses, a regra se escreve: RRULE:FREQ=MONTHLY;BYMONTHDAY=28,29,30,31;BYSETPOS=-1;COUNT=12 Esta regra significa que se o mês corrente não contém um dia 31, então o motor levará em conta o dia 30. Se o dia 30 não existe, então ele levará em conta o dia 29, e assim por diante até o dia 28. Outra versão desta regra é: RRULE:FREQ=MONTHLY;COUNT=5;BYMONTHDAY=-1 • Para definir parcelas de pagamento que ocorrem o dia 10 de cada mês, durante 12 meses, a regra de assinatura se escreve da seguinte forma: RRULE:FREQ=MONTHLY;COUNT=12;BYMONTHDAY=10 • Para definir parcelas de pagamento que ocorrem todo trimestre, até o 31/12/2016: RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=1,4,7,10;UNTIL=20161231 As parcelas ocorrerão todo dia 1° de janeiro, abril, julho e outubro. A quantidade total de parcelas depende da data de início da assinatura. Para maiores detalhes e exemplos, você pode consultar o site http:// recurrance.sourceforge.net/. subscriptionId Código da assinatura. n..12 n3 n..12 int string string description Descrição da assinatura. string Tabela 202 : Objeto subscriptionRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 203 / 237 O objeto paymentRequest permite transmitir informações sobre o pagamento. Pode ser valorizado com o atributo seguinte: paymentRequest Atributo Requisito manualValidation Permite validar manualmente uma transação enquanto a data de entrega desejada não for vencida. Para isso, este atributo deve ser valorizado a 1 (validação manual). Com o valor 0, a validação será automática. Tabela 203 : Objeto paymentRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 204 / 237 Formato n..12 Resposta A resposta à operação updateSubscription é feita pela plataforma de pagamento após uma solicitação de modificação de uma assinatura. É constituída de um HEADER e de um BODY de tipo updateSubscriptionResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem updateSubscriptionResponse é a seguinte: Nome Tipo updateSubscriptionResult updateSubscriptionResult A estrutura da mensagem updateSubscriptionResult é a seguinte: Objeto Tipo commonResponse commonResponse Observação : los objetos paymentResponse,orderResponse, cardResponse, authorizationResponse, captureResponse, customerResponse,markResponse,threeDSResponse, extraResponse, subscriptionResponse e fraudManagementResponse não são levados em consideração na resposta. O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. n..2 responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. string paymentToken Alias ou Código da conta comprador (pagamento por código). string Tabela 204 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 205 / 237 7.9. Recuperar os detalhes de uma assinatura 'getSubscriptionDetails' A operação getSubscriptionDetails permite procurar uma assinatura para saber quais são os diferentes atributos dela. Solicitação para enviar A solicitação getSubscriptionDetails é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação getSubscriptionDetails toma na entrada um objeto do tipo getSubscriptionDetails. O tipo getSubscriptionDetails É composto do seguinte objeto: Objeto Formato queryRequest queryRequest Requisito O objeto queryRequest permite consultar uma transação para saber quais são os diferentes atributos dela. Possui os atributos seguintes: queryRequest Atributo paymentToken Alias (pagamento por código). Requisito Formato string ans..64 subscriptionId Código da assinatura. string Tabela 205 : Objeto queryRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 206 / 237 Resposta A resposta à operação getSubscriptionDetails é feita pela plataforma de pagamento após uma solicitação de informação sobre uma assinatura.. É constituída de um HEADER e de um BODY de tipo getSubscriptionDetailsResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem getSubscriptionDetailsResponse é a seguinte: Nome Tipo getSubscriptionDetailsResult getSubscriptionDetailsResult A estrutura da mensagem getSubscriptionDetailsResult é a seguinte: Objeto Tipo commonResponse commonResponse orderResponse orderResponse subscriptionResponse subscriptionResponse Os dados retornados na resposta dependem dos objetos e dos atributos enviados na solicitação. No entanto, seja qual for a operação, o atributo responseCode do objeto CommonResponse deve ser analisado previamente: • O valor 0 indica que a operação foi realizada com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último indica a origem do erro. Observação : os objetos paymentResponse,cardResponse,authorizationResponse, captureResponse, customerResponse, markResponse, extraResponse,fraudManagementResponse et tokenResponse não são levados em consideração na resposta. O objeto commonResponse permite obter informações gerais sobre uma operação. Os atributos que contém um valor na resposta são os seguintes: commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. shopId Código da loja. n..2 string n8 paymentSource Origem da transação Os valores possíveis são: • EC para o comércio eletrônico. • MOTO para um pedido por e-mail ou telefone. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 207 / 237 string (enum) commonResponse • CC para um call center. • OTHER para um outro canal de venda. Formato submissionDate Data e hora UTC da transação apresentadas em formato W3C (exemplo: 2016-07-16T19:20:00Z). dateTime ans..40 contractNumber Número de contrato comerciante utilizado. string paymentToken Alias ou Código da conta comprador (pagamento por código). string Tabela 206 : Objeto commonResponse O atributo transactionStatusLabel, não é informado nesta operação. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 208 / 237 O objeto orderResponse detalha o pedido. orderResponse Formato orderId Referência do pedido. string an..64 extInfo Dados personalizados retornados em função das necessidades. Exemplo : extInfo.key, extInfo.value • key : nome do dado (o formato dele é "string"). • value : valor do dado (o formato dele é "string"). extInfo Tabela 207 : Objeto orderResponse O objeto subscriptionResponse detalha todas as informações que constituem uma assinatura. subscriptionResponse Formato subscriptionId Código da assinatura. string effectDate Data de vigência no formato W3C. Exemplo : 2016-07-16T19:20Z A data não pode ser vencida. dateTime anos..40 cancelDate Data de cancelamento de uma prestação de pagamento. dateTime anos..40 initialAmountNumber Número da parcela do valor inicial da assinatura. Este atributo se torna obrigatório se initialAmount é valorizado. int rrule Descrição da regra da assinatura. Exemplo: • RRULE:FREQ=MONTHLY;COUNT=12;BYMONTHDAY=10 Parcelas de pagamento no dia 10 de todo mês, durante 12 meses. string description Descrição da assinatura. string pastPaymentsNumber Quantidade de pagamentos anteriores. int totalPaymentsNumber Quantidade total de pagamentos. int Tabela 208 : Objeto subscriptionResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 209 / 237 7.10. Cancelar uma assinatura 'cancelSubscription' A operação cancelSubscription permite desativar uma assinatura numa data precisa. Solicitação para enviar A solicitação cancelSubscription é constituída de um HEADER e de um BODY. • HEADER Informe o HEADER para transmitir o valor dos atributos shopId, requestId, timestamp, mode et authToken (ver capítulo O Cabeçalho). • BODY A operação cancelSubscription toma na entrada um objeto do tipo cancelSubscription. O tipo cancelSubscription é constituído dos parâmetros seguintes: Objeto Formato commonRequest commonRequest queryRequest queryRequest Requisito O objeto commonRequest permite transmitir informações gerais sobre uma operação. Somente o atributo submissionDate pode ser valorizado, se for preciso. Este atributo é facultativo. commonRequest Atributo Requisito submissionDate Data e hora UTC da rescisão apresentadas no formato ISO 8601 definido pelo W3C. Exemplo: 2016-07-16T19:20:00Z Se o valor deste atributo é distante demais da hora atual, a solicitação será rejeitada (código de erro 13). Formato dateTime ans..40 Tabela 209 : Objeto commonRequest Os atributos paymentSource,contractNumber ecomment não são hoje levados em consideração para esta operação. O objeto queryRequest permite consultar uma transação para saber quais são os diferentes atributos dela. Possui os atributos seguintes: queryRequest Atributo paymentToken Alias (pagamento por código). Requisito Formato string ans..64 subscriptionId Código da assinatura. string Tabela 210 : Objeto queryRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 210 / 237 Resposta A resposta à operação cancelSubscription é feita pela plataforma de pagamento após uma solicitação de desativação de uma assinatura. É constituída de um HEADER e de um BODY de tipo cancelSubscriptionResponse. • HEADER O HEADER é transmitido pela plataforma de pagamento Conferir o valor da ficha de autenticação (ver capítulo Verificar o cabeçalho SOAP na resposta). • BODY A estrutura da mensagem cancelSubscriptionResponse é a seguinte: Nome Tipo cancelSubscriptionResult cancelSubscriptionResult A estrutura da mensagem cancelSubscriptionResult é a seguinte: Objeto Tipo commonResponse commonResponse O objeto commonResponse permite obter informações gerais sobre uma operação. commonResponse Formato responseCode Consultar o capítulo Gerenciar os erros aplicativos. Primeiro atributo para ser analisado seja qual for a operação. • O valor 0 indica que a operação ocorreu com sucesso. • Um valor diferente de 0 requer uma análise do atributo responseCodeDetails. Este último menciona a origem do erro. responseCodeDetail Detalhe do erro se o atributo responseCode é diferente de 0. Consultar o capítulo Gerenciar os erros aplicativos para maiores informações. Tabela 211 : Objeto commonResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 211 / 237 n..2 string 8. Anexo Exemplo completos de codificação em PHP são apresentados neste capítulo. 8.1. Exemplos em PHP Para todos os exemplos em PHP apresentados em anexos, dois arquivos devem ser criados anteriormente para ser utilizados nas solicitações. São os mesmos para todas as operações. • Um arquivo "v5.php" para a definição dos objetos: <?php class commonRequest { public $paymentSource; // string public $submissionDate; // dateTime public $contractNumber; // string public $comment; // string } class commonResponse { public $responseCode; // int public $responseCodeDetail; // string public $transactionStatusLabel; // string public $shopId; // string public $paymentSource; // string public $submissionDate; // dateTime public $contractNumber; // string public $paymentToken; // string } class cardRequest { public $number; // string public $scheme; // string public $expiryMonth; // int public $expiryYear; // int public $cardSecurityCode; // string public $cardHolderBirthDay; // dateTime public $paymentToken; // string } class customerRequest { public $billingDetails; // billingDetailsRequest public $shippingDetails; // shippingDetailsRequest public $extraDetails; // extraDetailsRequest } class billingDetailsRequest { public $reference; // string public $title; // string public $type; // custStatus public $firstName; // string public $lastName; // string public $phoneNumber; // string public $email; // string public $streetNumber; // string public $address; // string public $district; // string public $zipCode; // string public $city; // string public $state; // string public $country; // string public $language; // string public $cellPhoneNumber; // string public $legalName; // string public $identityCode; // string } class shippingDetailsRequest { public $type; // custStatus public $firstName; // string public $lastName; // string public $phoneNumber; // string public $streetNumber; // string public $address; // string public $address2; // string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 212 / 237 } public public public public public public public public public public $district; // string $zipCode; // string $city; // string $state; // string $country; // string $deliveryCompanyName; // string $shippingSpeed; // deliverySpeed $shippingMethod; // deliveryType $legalName; // string $identityCode; // string class extraDetailsRequest { public $ipAddress; // string public $fingerPrintId; // string } class shoppintCartRequest { public $insuranceNumber; // long public $shippingAmount; // long public $taxAmount; // long public $cartItemInfo; // cartItemInfo } class cartItemInfo { public $productLabel; // string public $productType; // productType public $productRef; // string public $productQty ; // int public $productAmount; // string public $productVat; // string } class paymentRequest { public $transactionId; // string public $amount; // long public $currency; // int public $expectedCaptureDate; // dateTime public $manualValidation; // int public $paymentOptionCode; // string } class paymentResponse { public $transactionId; // string public $amount; // long public $currency; // int public $effectiveAmount; // long public $effectiveCurrency; // int public $expectedCaptureDate; // dateTime public $manualValidation; // int public $operationType; // int public $creationDate; // dateTime public $externalTransactionId; // string public $liabilityShift; // string public $sequenceNumber; // int public $paymentType; // paymentType public $paymentError; // int } class orderResponse { public $orderId; // string public $extInfo; // extInfo } class extInfo { public $key; // string public $value; // string } class cardResponse { public $number; // string public $scheme; // string public $brand; // string public $country; // string public $productCode; // string public $bankCode; // string public $expiryMonth; // int public $expiryYear; // int } class authorizationResponse { public $mode; // string public $amount; // long public $currency; // int public $date; // dateTime public $number; // string public $result; // int Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 213 / 237 } class captureResponse { public $date; // dateTime public $number; // int public $reconciliationStatus; // int public $refundAmount; // long public $refundCurrency; // int public $chargeback; // boolean } class customerResponse { public $billingDetails; // billingDetailsResponse public $shippingDetails; // shippingDetailsResponse public $extraDetails; // extraDetailsResponse } class billingDetailsResponse { public $reference; // string public $title; // string public $type; // custStatus public $firstName; // string public $lastName; // string public $phoneNumber; // string public $email; // string public $streetNumber; // string public $address; // string public $district; // string public $zipCode; // string public $city; // string public $state; // string public $country; // string public $language; // string public $cellPhoneNumber; // string public $legalName; // string } class shippingDetailsResponse { public $type; // custStatus public $firstName; // string public $lastName; // string public $phoneNumber; // string public $streetNumber; // string public $address; // string public $address2; // string public $district; // string public $zipCode; // string public $city; // string public $state; // string public $country; // string public $deliveryCompanyName; // string public $shippingSpeed; // deliverySpeed public $shippingMethod; // deliveryType public $legalName; // string } class extraDetailsResponse { public $ipAddress; // string } class markResponse { public $amount; // long public $currency; // int public $date; // dateTime public $number; // string public $result; // int } class threeDSResponse { public $authenticationRequestData; // authenticationRequestData public $authenticationResultData; // authenticationResultData } class authenticationRequestData { public $threeDSAcctId; // string public $threeDSAcsUrl; // string public $threeDSBrand; // string public $threeDSEncodedPareq; // string public $threeDSEnrolled; // string public $threeDSRequestId; // string } class authenticationResultData { public $brand; // string public $enrolled; // string public $status; // string public $eci; // string Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 214 / 237 } public public public public public $xid; // string $cavv; // string $cavvAlgorithm; // string $signValid; // string $transactionCondition; // string class extraResponse { public $paymentOptionCode; // string public $paymentOptionOccNumber; // int } class fraudManagementResponse { public $riskControl; // riskControl public $riskAnalysis; // riskAnalysis public $riskAssessments; // riskAssessments } class shoppingCartResponse { public $cartItemInfo; // cartItemInfo } class riskControl { public $name; // string public $result; // string } class riskAnalysis { public $score; // string public $resultCode; // string public $status; // vadRiskAnalysisProcessingStatus public $requestId; // string public $extraInfo; // extInfo } class riskAssessments { public $results; // string } class techRequest { public $browserUserAgent; // string public $browserAccept; // string } class orderRequest { public $orderId; // string public $extInfo; // extInfo } class createPayment { public $commonRequest; // commonRequest public $threeDSRequest; // threeDSRequest public $paymentRequest; // paymentRequest public $orderRequest; // orderRequest public $cardRequest; // cardRequest public $customerRequest; // customerRequest public $techRequest; // techRequest public $shoppingCartRequest; // shoppingCartRequest } class threeDSRequest { public $mode; // threeDSMode public $requestId; // string public $pares; // string public $brand; // string public $enrolled; // string public $status; // string public $eci; // string public $xid; // string public $cavv; // string public $algorithm; // string } class createPaymentResponse { public $createPaymentResult; // createPaymentResult } class createPaymentResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse public $orderResponse; // orderResponse public $cardResponse; // cardResponse public $authorizationResponse; // authorizationResponse public $captureResponse; // captureResponse public $customerResponse; // customerResponse public $markResponse; // markResponse public $threeDSResponse; // threeDSResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 215 / 237 } public public public public $extraResponse; // extraResponse $subscriptionResponse; // subscriptionResponse $fraudManagementResponse; // fraudManagementResponse $shoppingCartResponse; // shoppingCartResponse class cancelToken { public $commonRequest; // commonRequest public $queryRequest; // queryRequest } class cancelTokenResponse { public $cancelTokenResult; // cancelTokenResult } class cancelTokenResult { public $commonResponse; // commonResponse } class queryRequest { public $uuid; // string public $orderId; // string public $subscriptionId; // string public $paymentToken; // string } class wsResponse { public $requestId; // string } class createToken { public $commonRequest; // commonRequest public $cardRequest; // cardRequest public $customerRequest; // customerRequest } class createTokenResponse { public $createTokenResult; // createTokenResult } class createTokenResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse public $orderResponse; // orderResponse public $cardResponse; // cardResponse public $authorizationResponse; // authorizationResponse public $captureResponse; // captureResponse public $customerResponse; // customerResponse public $markResponse; // markResponse public $threeDSResponse; // threeDSResponse public $extraResponse; // extraResponse public $subscriptionResponse; // subscriptionResponse public $fraudManagementResponse; // fraudManagementResponse public $shoppingCartResponse; // shoppingCartResponse } class subscriptionResponse { public $subscriptionId; // string public $effectDate; // dateTime public $cancelDate; // dateTime public $initialAmount; // long public $rrule; // string public $description; // string public $initialAmountNumber; // int public $pastPaymentNumber; // int public $totalPaymentNumber; // int public $amount; // long public $currency; // int } class getTokenDetails { public $queryRequest; // queryRequest } class getTokenDetailsResponse { public $getTokenDetailsResult; // getTokenDetailsResult } class getTokenDetailsResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse public $orderResponse; // orderResponse public $cardResponse; // cardResponse public $authorizationResponse; // authorizationResponse public $captureResponse; // captureResponse public $customerResponse; // customerResponse public $markResponse; // markResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 216 / 237 } public public public public public $subscriptionResponse; // subscriptionResponse $extraResponse; // extraResponse $fraudManagementResponse; // fraudManagementResponse $threeDSResponse; // threeDSResponse $tokenResponse; // tokenResponse class updateSubscription { public $commonRequest; // commonRequest public $queryRequest; // queryRequest public $subscriptionRequest; // subscriptionRequest } class subscriptionRequest { public $subscriptionId; // string public $effectDate; // dateTime public $amount; // long public $currency; // int public $initialAmount; // long public $initialAmountNumber; // int public $rrule; // string public $description; // string } class updateSubscriptionResponse { public $updateSubscriptionResult; // updateSubscriptionResult } class updateSubscriptionResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse public $orderResponse; // orderResponse public $cardResponse; // cardResponse public $authorizationResponse; // authorizationResponse public $captureResponse; // captureResponse public $customerResponse; // customerResponse public $markResponse; // markResponse public $threeDSResponse; // threeDSResponse public $extraResponse; // extraResponse public $subscriptionResponse; // subscriptionResponse public $fraudManagementResponse; // fraudManagementResponse } class capturePayment { public $settlementRequest; // settlementRequest } class settlementRequest { public $transactionUuids; // string public $commission; // double public $date; // dateTime } class capturePaymentResponse { public $capturePaymentResult; // capturePaymentResult } class capturePaymentResult { public $commonResponse; // commonResponse } class findPayments { public $queryRequest; // queryRequest } class findPaymentsResponse { public $findPaymentsResult; // findPaymentsResult } class findPaymentsResult { public $commonResponse; // commonResponse public $orderResponse; // orderResponse public $transactionItem; // transactionItem } class transactionItem { public $transactionUuid; // string public $transactionStatusLabel; // string public $amount; // long public $currency; // int public $expectedCaptureDate; // dateTime } class refundPayment { public $commonRequest; // commonRequest public $paymentRequest; // paymentRequest public $queryRequest; // queryRequest Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 217 / 237 } class refundPaymentResponse { public $refundPaymentResult; // refundPaymentResult } class refundPaymentResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse public $orderResponse; // orderResponse public $cardResponse; // cardResponse public $authorizationResponse; // authorizationResponse public $captureResponse; // captureResponse public $customerResponse; // customerResponse public $markResponse; // markResponse public $threeDSResponse; // threeDSResponse public $extraResponse; // extraResponse public $fraudManagementResponse; // fraudManagementResponse } class verifyThreeDSEnrollment { public $commonRequest; // commonRequest public $paymentRequest; // paymentRequest public $cardRequest; // cardRequest public $techRequest; // techRequest } class verifyThreeDSEnrollmentResponse { public $verifyThreeDSEnrollmentResult; // verifyThreeDSEnrollmentResult } class verifyThreeDSEnrollmentResult { public $commonResponse; // commonResponse public $threeDSResponse; // threeDSResponse } class reactivateToken { public $queryRequest; // queryRequest } class reactivateTokenResponse { public $reactivateTokenResult; // reactivateTokenResult } class reactivateTokenResult { public $commonResponse; // commonResponse } class createSubscription { public $commonRequest; // commonRequest public $orderRequest; // orderRequest public $subscriptionRequest; // subscriptionRequest public $cardRequest; // cardRequest } class createSubscriptionResponse { public $createSubscriptionResult; // createSubscriptionResult } class createSubscriptionResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse public $orderResponse; // orderResponse public $cardResponse; // cardResponse public $authorizationResponse; // authorizationResponse public $captureResponse; // captureResponse public $customerResponse; // customerResponse public $markResponse; // markResponse public $threeDSResponse; // threeDSResponse public $extraResponse; // extraResponse public $subscriptionResponse; // subscriptionResponse public $fraudManagementResponse; // fraudManagementResponse public $shoppingCartResponse; // shoppingCartResponse } class cancelSubscription { public $commonRequest; // commonRequest public $queryRequest; // queryRequest } class cancelSubscriptionResponse { public $cancelSubscriptionResult; // cancelSubscriptionResult } class cancelSubscriptionResult { public $commonResponse; // commonResponse } Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 218 / 237 class updatePayment { public $commonRequest; // commonRequest public $queryRequest; // queryRequest public $paymentRequest; // paymentRequest } class updatePaymentResponse { public $updatePaymentResult; // updatePaymentResult } class updatePaymentResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse public $orderResponse; // orderResponse public $cardResponse; // cardResponse public $authorizationResponse; // authorizationResponse public $captureResponse; // captureResponse public $customerResponse; // customerResponse public $markResponse; // markResponse public $threeDSResponse; // threeDSResponse public $extraResponse; // extraResponse public $subscriptionResponse; // subscriptionResponse public $fraudManagementResponse; // fraudManagementResponse } class validatePayment { public $commonRequest; // commonRequest public $queryRequest; // queryRequest } class validatePaymentResponse { public $validatePaymentResult; // validatePaymentResult } class validatePaymentResult { public $commonResponse; // commonResponse } class cancelPayment { public $commonRequest; // commonRequest public $queryRequest; // queryRequest } class cancelPaymentResponse { public $cancelPaymentResult; // cancelPaymentResult } class cancelPaymentResult { public $commonResponse; // commonResponse } class checkThreeDSAuthentication { public $commonRequest; // commonRequest public $threeDSRequest; // threeDSRequest } class checkThreeDSAuthenticationResponse { public $checkThreeDSAuthenticationResult; // checkThreeDSAuthenticationResult } class checkThreeDSAuthenticationResult { public $commonResponse; // commonResponse public $threeDSResponse; // threeDSResponse } class getPaymentDetails { public $queryRequest; // queryRequest } class getPaymentDetailsResponse { public $getPaymentDetailsResult; // getPaymentDetailsResult } class getPaymentDetailsResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse public $orderResponse; // orderResponse public $cardResponse; // cardResponse public $authorizationResponse; // authorizationResponse public $captureResponse; // captureResponse public $customerResponse; // customerResponse public $markResponse; // markResponse public $subscriptionResponse; // subscriptionResponse public $extraResponse; // extraResponse public $fraudManagementResponse; // fraudManagementResponse public $threeDSResponse; // threeDSResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 219 / 237 } public $tokenResponse; // tokenResponse class duplicatePayment { public $commonRequest; // commonRequest public $paymentRequest; // paymentRequest public $orderRequest; // orderRequest public $queryRequest; // queryRequest } class duplicatePaymentResponse { public $duplicatePaymentResult; // duplicatePaymentResult } class duplicatePaymentResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse public $orderResponse; // orderResponse public $cardResponse; // cardResponse public $authorizationResponse; // authorizationResponse public $captureResponse; // captureResponse public $customerResponse; // customerResponse public $markResponse; // markResponse public $threeDSResponse; // threeDSResponse public $extraResponse; // extraResponse public $fraudManagementResponse; // fraudManagementResponse } class updateToken { public $commonRequest; // commonRequest public $queryRequest; // queryRequest public $cardRequest; // cardRequest public $customerRequest; // customerRequest } class updateTokenResponse { public $updateTokenResult; // updateTokenResult } class updateTokenResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse public $orderResponse; // orderResponse public $cardResponse; // cardResponse public $authorizationResponse; // authorizationResponse public $captureResponse; // captureResponse public $customerResponse; // customerResponse public $markResponse; // markResponse public $threeDSResponse; // threeDSResponse public $extraResponse; // extraResponse public $subscriptionResponse; // subscriptionResponse public $fraudManagementResponse; // fraudManagementResponse } class getPaymentUuid { public $legacyTransactionKeyRequest; // legacyTransactionKeyRequest } class legacyTransactionKeyRequest { public $transactionId; // string public $sequenceNumber; // int public $creationDate; // dateTime } class getPaymentUuidResponse { public $legacyTransactionKeyResult; // legacyTransactionKeyResult } class legacyTransactionKeyResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse } class getSubscriptionDetails { public $queryRequest; // queryRequest } class getSubscriptionDetailsResponse { public $getSubscriptionDetailsResult; // getSubscriptionDetailsResult } class getSubscriptionDetailsResult { public $commonResponse; // commonResponse public $paymentResponse; // paymentResponse public $orderResponse; // orderResponse public $cardResponse; // cardResponse public $authorizationResponse; // authorizationResponse Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 220 / 237 } public public public public public public public public $captureResponse; // captureResponse $customerResponse; // customerResponse $markResponse; // markResponse $subscriptionResponse; // subscriptionResponse $extraResponse; // extraResponse $fraudManagementResponse; // fraudManagementResponse $threeDSResponse; // threeDSResponse $tokenResponse; // tokenResponse class paymentType { const SINGLE = 'SINGLE'; const INSTALLMENT = 'INSTALLMENT'; const SPLIT = 'SPLIT'; const SUBSCRIPTION = 'SUBSCRIPTION'; const RETRY = 'RETRY'; } class custStatus { const _PRIVATE = 'PRIVATE'; const COMPANY = 'COMPANY'; } class deliverySpeed { const STANDARD = 'STANDARD'; const EXPRESS = 'EXPRESS'; } class deliveryType { const RECLAIM_IN_SHOP = 'RECLAIM_IN_SHOP'; const RELAY_POINT = 'RELAY_POINT'; const RECLAIM_IN_STATION = 'RECLAIM_IN_STATION'; const PACKAGE_DELIVERY_COMPANY = 'PACKAGE_DELIVERY_COMPANY'; const ETICKET = 'ETICKET'; } class vadRiskAnalysisProcessingStatus { const P_TO_SEND = 'P_TO_SEND'; const P_SEND_KO = 'P_SEND_KO'; const P_PENDING_AT_ANALYZER = 'P_PENDING_AT_ANALYZER'; const P_SEND_OK = 'P_SEND_OK'; const P_MANUAL = 'P_MANUAL'; const P_SKIPPED = 'P_SKIPPED'; const P_SEND_EXPIRED = 'P_SEND_EXPIRED'; } class threeDSMode { const DISABLED = 'DISABLED'; const ENABLED_CREATE = 'ENABLED_CREATE'; const ENABLED_FINALIZE = 'ENABLED_FINALIZE'; const MERCHANT_3DS = 'MERCHANT_3DS'; } class productType { const FOOD_AND_GROCERY = 'FOOD_AND_GROCERY'; const AUTOMOTIVE = 'AUTOMOTIVE'; const ENTERTAINMENT = 'ENTERTAINMENT'; const HOME_AND_GARDEN = 'HOME_AND_GARDEN'; const HOME_APPLIANCE = 'HOME_APPLIANCE'; const AUCTION_AND_GROUP_BUYING = 'AUCTION_AND_GROUP_BUYING'; const FLOWERS_AND_GIFTS = 'FLOWERS_AND_GIFTS'; const COMPUTER_AND_SOFTWARE = 'COMPUTER_AND_SOFTWARE'; const HEALTH_AND_BEAUTY = 'HEALTH_AND_BEAUTY'; const SERVICE_FOR_INDIVIDUAL = 'SERVICE_FOR_INDIVIDUAL'; const SERVICE_FOR_BUSINESS = 'SERVICE_FOR_BUSINESS'; const SPORTS = 'SPORTS'; const CLOTHING_AND_ACCESSORIES = 'CLOTHING_AND_ACCESSORIES'; const TRAVEL = 'TRAVEL'; const HOME_AUDIO_PHOTO_VIDEO = 'HOME_AUDIO_PHOTO_VIDEO'; const TELEPHONY = 'TELEPHONY'; } ?> • Um arquivo "function.php" para as funções : <?php function getAuthToken ($requestId , $timestamp, $key) { $data = ""; $data = $requestId.$timestamp; $authToken = hash_hmac("sha256", $data, $key, true); $authToken = base64_encode ($authToken); //var_dump($authToken); return $authToken; } Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 221 / 237 function gen_uuid() { return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0x0fff ) | 0x4000, mt_rand( 0, 0x3fff ) | 0x8000, mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) ); } function setHeaders ($shopId, $requestId, $timestamp, $mode, $authToken, $key, $client) { //Criação dos cabeçalhos shopId, requestId, timestamp, mode et authToken $ns = 'http://v5.ws.vads.lyra.com/Header/'; $headerShopId = new SOAPHeader ( $ns, 'shopId', $shopId ); $headerRequestId = new SOAPHeader ( $ns, 'requestId', $requestId); $headerTimestamp = new SOAPHeader ( $ns, 'timestamp', $timestamp ); $headerMode = new SOAPHeader ( $ns, 'mode', $mode ); $authToken = getAuthToken ($requestId, $timestamp, $key); $headerAuthToken = new SOAPHeader ( $ns, 'authToken', $authToken ); //Acrescentar cabeçalhos no SOAP Header $headers = array ( $headerShopId, $headerRequestId, $headerTimestamp, $headerMode, $headerAuthToken ); $client->__setSoapHeaders ( $headers ); } function setJsessionId($client){ $cookie=$_SESSION['JSESSIONID']; $client->__setCookie('JSESSIONID', $cookie); return $cookie; } /** * * * @param $client * @return string $JSESSIONID */ function getJsessionId($client){ //resgate do cabeçalho da resposta $header=($client->__getLastResponseHeaders()); if(!preg_match("#JSESSIONID=([A-Za-z0-9\._]+)#",$header, $matches)){ return "Nenhum ID de Sessão Retornado." ; //Este caso nunca deverá acontecer; die; } $JSESSIONID = $matches[1]; $_SESSION['JSESSIONID'] = $JSESSIONID; //print_r($JSESSIONID); return $JSESSIONID; } function formConstructor ($threeDsAcsUrl,$threeDSrequestId,$threeDsEncodedPareq, $threeDsServerResponseUrl){ $msg= (' <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> <title>3DS</title> <script type="text/javascript"> <!-function submitForm(){ document.redirectForm.submit(); } --> </script> </head> <body id="lyra" onLoad="setTimeout(\'submitForm()'.'\',500);"> <div id="container"> <div id="paymentSolutionInfo"> <div id="title"> </div> </div> <hr class="ensureDivHeight"/> <br/> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 222 / 237 <br/> <br/> <br/> <br/> <form name="redirectForm" action="'.$threeDsAcsUrl.'" method="POST"> <input type="hidden" name="PaReq" value="'.$threeDsEncodedPareq.'"/> <input type="hidden" name="TermUrl" value="'.$threeDsServerResponseUrl.'"/> <input type="hidden" name="MD" value="'.$threeDSrequestId.'"/> <noscript><input type="submit" name="Go" value="Click to continue"/></noscript> </form> <div id="backToBoutiqueBlock"> </div> <div id="footer"> </div> </div> </body> </html>' ); echo $msg; } ?> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 223 / 237 createPayment Criação de uma transação de pagamento com autenticação 3D Secure Quatro arquivos são requeridos para criar uma transação de pagamento com autenticação 3D Secure: • um arquivo para as funções "function.php" (conteúdo disponível no capítulo Anexo). • um arquivo para a definição dos objetos "v5.php" (conteúdo disponível no capítulo Anexo). • um arquivo para a operação createPayment: <?php include_once 'v5.php'; // Arquivo contendo a definição dos diferentes objetos include_once 'function.php';// Arquivo contendo todas as funções úteis (geração do uuid, etc...) //Inicialização das variáveis $shopId = "123456789"; $key = "123456789123456"; $mode = "TEST"; $wsdl = "https://secure.payzen.com.br/vads-ws/v5?wsdl"; //Exemplo de inicialização de um cliente SOAP com gerenciamento do SNI /* $client = new soapClient($wsdl, $options = array('trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8','soapaction' => '', 'uri' => 'http://v5.ws.vads.lyra.com/', 'cache_wsdl' => WSDL_CACHE_NONE, //Proxy parameters 'proxy_host' => 'my.proxy.host', 'proxy_port' => 3128, 'stream_context' => stream_context_create (array('ssl' => array( 'SNI_enabled' => true, 'SNI_server_name' => 'secure.payzen.eu'))) )); */ //Exemplo de inicialização de um cliente SOAP sem proxy $client = new soapClient($wsdl, $options = array( 'trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8', 'soapaction' => '') ); //Geração do header $requestId = gen_uuid (); $timestamp = gmdate ( "Y-m-d\TH:i:s\Z" ); $authToken = base64_encode(hash_hmac('sha256',$requestId.$timestamp, $key, true)); setHeaders ($shopId, $requestId, $timestamp, $mode, $authToken, $key, $client); //Geração do body $commonRequest = new commonRequest; $commonRequest->paymentSource = 'EC'; $commonRequest->submissionDate = new DateTime('now',new DateTimeZone('UTC')); $threeDSRequest = new threeDSRequest; $threeDSRequest->mode = "ENABLED_CREATE"; $paymentRequest = new paymentRequest; $paymentRequest->amount = "2990"; $paymentRequest->currency = "978"; $paymentRequest->manualValidation = '0'; $orderRequest = new orderRequest; $orderRequest->orderId = "myOrder"; $cardRequest = new cardRequest; $cardRequest->number = "4970100000000000"; $cardRequest->scheme = "VISA"; $cardRequest->expiryMonth = "12"; $cardRequest->expiryYear = "2023"; $cardRequest->cardSecurityCode = "123"; $cardRequest->cardHolderBirthDay = "2008-12-31"; $customerRequest = new customerRequest; $customerRequest->billingDetails = new billingDetailsRequest; $customerRequest->billingDetails->email="[email protected]"; $customerRequest->extraDetails = new extraDetailsRequest; Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 224 / 237 $techRequest = new techRequest; //Chamada da operação createPayment try { $createPaymentRequest = new createPayment; $createPaymentRequest->commonRequest = $commonRequest; $createPaymentRequest->threeDSRequest = $threeDSRequest; $createPaymentRequest->paymentRequest = $paymentRequest; $createPaymentRequest->orderRequest = $orderRequest; $createPaymentRequest->cardRequest = $cardRequest; $createPaymentRequest->customerRequest = $customerRequest; $createPaymentRequest->techRequest = $techRequest; $createPaymentRequest->commonRequest->submissionDate = $createPaymentRequest>commonRequest->submissionDate->format(dateTime::W3C); $createPaymentResponse= new createPaymentResponse(); $createPaymentResponse = $client->createPayment($createPaymentRequest); } catch (SoapFault $fault) { //Gerenciamento das exceções trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault>faultstring})", E_USER_ERROR); } /* Exibição dos logs XML para substituir por uma escritura em um arquivo de log. * * CUIDADO VOCÊ NÃO DEVE SALVAR OS NÚMEROS DE CARTÃO NOS SEUS LOGS */ echo "<hr> [Request Header] <br/>", htmlspecialchars($client->__getLastRequestHeaders()), "<br/>"; echo "<hr> [Request] <br/>", htmlspecialchars($client->__getLastRequest()), "<br/>"; echo "<hr> [Response Header]<br/>", htmlspecialchars($client->__getLastResponseHeaders()), "<br/>"; echo "<hr> [Response]<br/>", htmlspecialchars($client->__getLastResponse()), "<br/>"; echo '<hr>'; echo "<hr> [Response SOAP Headers]<br/>"; //Analise da resposta //Resgate do SOAP Header da resposta para armazenar os cabeçalhos em um quadro (aqui $responseHeader) $dom = new DOMDocument; $dom->loadXML($client->__getLastResponse(), LIBXML_NOWARNING); $path = new DOMXPath($dom); $headers = $path->query('//*[local-name()="Header"]/*'); $responseHeader = array(); foreach($headers as $headerItem) { $responseHeader[$headerItem->nodeName] = $headerItem->nodeValue; } //Cálculo da ficha de autenticação da resposta $authTokenResponse = base64_encode(hash_hmac('sha256',$responseHeader['timestamp']. $responseHeader['requestId'], $key, true)); if ($authTokenResponse !== $responseHeader['authToken']){ //Erro de cálculo ou tentativa de fraude echo 'Erro interno encontrado'; } else{ //Analise da resposta if ($createPaymentResponse->createPaymentResult->commonResponse->responseCode != "0"){ //process error } else{ //Processo finalizado com sucesso //Teste da presença do du transactionStatusLabel: if (isset ($createPaymentResponse->createPaymentResult->commonResponse>transactionStatusLabel)){ //O cartão não é alistado ou 3DS Desativado // O pagamento foi aceito // O código abaixo deve ser modificado para integrar as atualizações de base de dados etc.. switch ($createPaymentResponse->createPaymentResult->commonResponse>transactionStatusLabel) { case "AUTHORISED": echo "pagamento aceito"; break; case "WAITING_AUTHORISATION": echo "pagamento aceito"; break; case "AUTHORISED_TO_VALIDATE": echo "pagamento aceito"; break; case "WAITING_AUTHORISATION_TO_VALIDATE": echo "pagamento aceito"; break; // O pagamento foi recusado default: echo "pagamento recusado"; break; Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 225 / 237 } } else{ // se ausente = a transação não é criada, portanto o cartão não é alistado // segue então a geração do formulário de redirecionamento 3DS //Deve-se resgatar o código de sessão para manter a sessão durante a análise da resposta do acs $cookie = getJsessionId($client); // Guardar o código de sessão no campo MD. Este campo será retornado idêntico pelo ACS $MD=setJsessionId($client)."+".$createPaymentResponse->createPaymentResult>threeDSResponse->authenticationRequestData->threeDSRequestId; //Inicializar os outros campos necessários ao redirecionamento para o ACS $threeDsAcsUrl = $createPaymentResponse->createPaymentResult->threeDSResponse>authenticationRequestData->threeDSAcsUrl; $threeDsEncodedPareq = $createPaymentResponse->createPaymentResult->threeDSResponse>authenticationRequestData->threeDSEncodedPareq; $threeDsServerResponseUrl = "http://127.0.0.1/webservices/ws-v5/retour3DS.php"; //CUIDADO em modo TESTE, o código de sessão deve ser acrescentado à URL do ACS para manter a sessão HTTP $JSESSIONID=setJsessionId($client); if ($mode == "TEST"){ $threeDsAcsUrl = $threeDsAcsUrl.";jsessionid=".$JSESSIONID; } formConstructor ($threeDsAcsUrl,$MD,$threeDsEncodedPareq,$threeDsServerResponseUrl); } } } ?> • um arquivo para tratar o retorno da autenticação 3D Secure "retour3DS.php" <?php include_once 'v5.php'; // Arquivo contendo a definição dos diferentes objetos include_once 'function.php';// Arquivo contendo todas as funções úteis (geração do uuid, etc...) //Inicialização das variáveis $shopId = "12345678"; $key = "123456789123456"; $mode = "TEST"; $wsdl = "https://secure.payzen.com.br/vads-ws/v5?wsdl"; //Resgate da resposta do ACS //Encontramos o código de sessão no campo MD para manter a sessão HTTP if (isset ($_POST['MD']) AND (isset ($_POST['PaRes']))){ list($JSESSIONID, $threeDSRequestId) = explode("+",$_POST['MD']); //Deletar os espaços e os Enters da mensagemPaRes $pares = str_replace("\r\n","",$_POST['PaRes'],$count);; //Exemplo de inicialização de um cliente SOAP com gerenciamento do SNI /* $client = new soapClient($wsdl, $options = array('trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8','soapaction' => '', 'uri' => 'http://v5.ws.vads.lyra.com/', 'cache_wsdl' => WSDL_CACHE_NONE, //Proxy parameters 'proxy_host' => 'my.proxy.host', 'proxy_port' => 3128, 'stream_context' => stream_context_create (array('ssl' => array( 'SNI_enabled' => true, 'SNI_server_name' => 'secure.payzen.eu'))) )); */ //Exemplo de inicialização de um cliente SOAP sem proxy $client = new soapClient($wsdl, $options = array( 'trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8', 'soapaction' => '') ); //Geração do header $requestId = gen_uuid (); $timestamp = gmdate ( "Y-m-d\TH:i:s\Z" ); $authToken = base64_encode(hash_hmac('sha256',$requestId.$timestamp, $key, true)); setHeaders ($shopId, $requestId, $timestamp, $mode, $authToken, $key, $client); //Geração do body $commonRequest = new commonRequest; Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 226 / 237 $commonRequest->submissionDate = new DateTime('now',new DateTimeZone('UTC')); $threeDSRequest = new threeDSRequest; $threeDSRequest->mode = "ENABLED_FINALIZE"; $threeDSRequest->requestId = $threeDSRequestId; $threeDSRequest->pares = $pares; $createPaymentRequest = new createPayment; $createPaymentRequest->commonRequest = $commonRequest; $createPaymentRequest->threeDSRequest = $threeDSRequest; $createPaymentRequest->commonRequest->submissionDate = $createPaymentRequest>commonRequest->submissionDate->format(dateTime::W3C); try { //Manter a sessão HTTP $client->__setCookie('JSESSIONID', $JSESSIONID); //Chamada da operação createPayment $createPaymentResponse= new createPaymentResponse(); $createPaymentResponse = $client->createPayment($createPaymentRequest); } catch (SoapFault $fault) { //gerenciamento das exceções trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault>faultstring})", E_USER_ERROR); } /* * Exibição dos logs XML para substituir por uma escritura em um arquivo de log. */ echo "<hr> [Request Header] <br/>", htmlspecialchars($client->__getLastRequestHeaders()), "<br/>"; echo "<hr> [Request] <br/>", htmlspecialchars($client->__getLastRequest()), "<br/>"; echo "<hr> [Response Header]<br/>", htmlspecialchars($client>__getLastResponseHeaders()), "<br/>"; echo "<hr> [Response]<br/>", htmlspecialchars($client->__getLastResponse()), "<br/>"; echo '<hr>'; //Analise da resposta //Resgate do SOAP Header da resposta para armazenar os cabeçalhos em um quadro (aqui $responseHeader) $dom = new DOMDocument; $dom->loadXML($client->__getLastResponse(), LIBXML_NOWARNING); $path = new DOMXPath($dom); $headers = $path->query('//*[local-name()="Header"]/*'); $responseHeader = array(); foreach($headers as $headerItem) { $responseHeader[$headerItem->nodeName] = $headerItem->nodeValue; } //Cálculo da ficha de autenticação da resposta. $authTokenResponse = base64_encode(hash_hmac('sha256',$responseHeader['timestamp']. $responseHeader['requestId'], $key, true)); if ($authTokenResponse !== $responseHeader['authToken']){ //Erro de cálculo ou tentativa de fraude echo 'Erro interno encontrado'; } else{ //Análise da resposta //Verificação do responseCode if ($createPaymentResponse->createPaymentResult->commonResponse->responseCode != "0"){ //process error echo 'erro interno'; } else{ //Processo finalizado com sucesso //teste da presença do du transactionStatusLabel: if (isset ($createPaymentResponse->createPaymentResult->commonResponse>transactionStatusLabel)){ // O pagamento foi aceito // O código abaixo deve ser modificado para integrar as atualizações de base de dados etc.. switch ($createPaymentResponse->createPaymentResult->commonResponse>transactionStatusLabel) { case "AUTHORISED": echo "pagamento aceito"; break; case "WAITING_AUTHORISATION": echo "pagamento aceito"; break; case "AUTHORISED_TO_VALIDATE": echo "pagamento aceito"; Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 227 / 237 break; case "WAITING_AUTHORISATION_TO_VALIDATE": echo "pagamento aceito"; break; // O pagamento foi recusado default: echo "pagamento recusado"; break; } } else{ echo 'erro interno'; } } } } else{ //retorno do 3DS sem parâmetro ou acesso direto à página de retorno 3DS echo 'error'; } ?> Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 228 / 237 findPayments Procurar um pagamento Três arquivos são necessários para procurar um pagamento: • um arquivo para as funções "function.php" (conteúdo disponível no capítulo Anexo). • um arquivo para a definição dos objetos "v5.php" (conteúdo disponível no capítulo Anexo). • um arquivo para a operação findPayments <?php include_once 'v5.php'; // Arquivo contendo a definição dos diferentes objetos include_once 'function.php';// Arquivo contendo todas as funções úteis (geração do uuid, etc...) //Inicialização das variáveis $shopId = "12345678"; $key = "1234567891234567"; $mode = "TEST"; $wsdl = "https://secure.payzen.com.br/vads-ws/v5?wsdl"; //Exemplo de Inicialização de um cliente SOAP com gerenciamento do SNI /* $client = new soapClient($wsdl, $options = array('trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8','soapaction' => '', 'uri' => 'http://v5.ws.vads.lyra.com/', 'cache_wsdl' => WSDL_CACHE_NONE, //Proxy parameters 'proxy_host' => 'my.proxy.host', 'proxy_port' => 3128, 'stream_context' => stream_context_create (array('ssl' => array( 'SNI_enabled' => true, 'SNI_server_name' => 'secure.payzen.eu'))) */ )); //Exemplo de Inicialização de um cliente SOAP sem proxy $client = new soapClient($wsdl, $options = array( 'trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8', 'soapaction' => '') ); //Geração do header $requestId = gen_uuid (); $timestamp = gmdate ( "Y-m-d\TH:i:s\Z" ); $authToken = base64_encode(hash_hmac('sha256',$requestId.$timestamp, $key, true)); setHeaders ($shopId, $requestId, $timestamp, $mode, $authToken, $key, $client); //Geração do body $queryRequest = new queryRequest; $queryRequest->orderId ="myOrder"; try { $findPaymentsRequest = new findPayments; $findPaymentsRequest->queryRequest = $queryRequest; $findPaymentsResponse = $client->findPayments($findPaymentsRequest); } catch (SoapFault $fault) { //Gerenciamento das exeções trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault>faultstring})", E_USER_ERROR); } /* Exibição dos logs XML para substituir por uma escritura em um arquivo de log. * * CUIDADO VOCÊ NÃO DEVE SALVAR OS NÚMEROS DE CARTÃO NOS SEUS LOGS */ echo "<hr> [Request Header] <br/>", htmlspecialchars($client->__getLastRequestHeaders()), "<br/>"; echo "<hr> [Request] <br/>", htmlspecialchars($client->__getLastRequest()), "<br/>"; Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 229 / 237 echo "<hr> [Response Header]<br/>", htmlspecialchars($client>__getLastResponseHeaders()), "<br/>"; echo "<hr> [Response]<br/>", htmlspecialchars($client->__getLastResponse()), "<br/>"; echo '<hr>'; echo "<hr> [Response SOAP Headers]<br/>"; //Analise da resposta //Resgate do SOAP Header da resposta para armazenar os cabeçalhos em um quadro (aqui $responseHeader) $dom = new DOMDocument; $dom->loadXML($client->__getLastResponse(), LIBXML_NOWARNING); $path = new DOMXPath($dom); $headers = $path->query('//*[local-name()="Header"]/*'); $responseHeader = array(); foreach($headers as $headerItem) { $responseHeader[$headerItem->nodeName] = $headerItem->nodeValue; } //Cálculo da ficha de autenticação da resposta $authTokenResponse = base64_encode(hash_hmac('sha256',$responseHeader['timestamp']. $responseHeader['requestId'], $key, true)); if ($authTokenResponse !== $responseHeader['authToken']){ //Erro de cálculo ou tentativa de fraude echo 'Erro interno encontrado'; } else{ //Analise da resposta if ($findPaymentsResponse->findPaymentsResult->commonResponse->responseCode != "0"){ //process error } else{ //Processo finalizado com sucesso //Teste da presença do du transactionStatusLabel: if (isset ($findPaymentsResponse->findPaymentsResult->commonResponse>transactionStatusLabel)){ //o cartão não é alistado ou 3DS Desativado // O pagamento é aceito switch ($findPaymentsResponse->findPaymentsResult->commonResponse>transactionStatusLabel) { case "AUTHORISED": echo "pagamento aceito"; break; case "WAITING_AUTHORISATION": echo "pagamento aceito"; break; case "AUTHORISED_TO_VALIDATE": echo "pagamento aceito"; break; case "WAITING_AUTHORISATION_TO_VALIDATE": echo "pagamento aceito"; break; // O pagamento foi recusado default: echo "pagamento recusado"; break; } } else{ // se ausente = a transação não é criada, portanto o cartão não é alistado // segue então a geração do formulário de redirecionamento 3DS //Deve-se resgatar o código de sessão para manter a sessão durante a análise da resposta do acs $cookie = getJsessionId($client); // Guardar o código de sessão no campo MD. Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 230 / 237 createToken Criação de um Token Cartão Três arquivos são necessários para criar um Token Cartão: • um arquivo para as funções "function.php" (conteúdo disponível no capítulo Anexo). • um arquivo para a definição dos objetos "v5.php" (conteúdo disponível no capítulo Anexo). • um arquivo para a operação createToken <?php include_once 'v5.php'; // Arquivo contendo a definição dos diferentes objetos include_once 'function.php';// Arquivo contendo todas as funções úteis (geração do uuid, etc...) //Inicializações das variáveis $shopId = "12345678"; $key = "1234567891234567"; $mode = "TEST"; $wsdl = "https://secure.payzen.com.br/vads-ws/v5?wsdl"; //Exemplo de inicialização de um cliente SOAP com gerenciamento do SNI /* $client = new soapClient($wsdl, $options = array('trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8','soapaction' => '', 'uri' => 'http://v5.ws.vads.lyra.com/', 'cache_wsdl' => WSDL_CACHE_NONE, //Proxy parameters 'proxy_host' => 'my.proxy.host', 'proxy_port' => 3128, 'stream_context' => stream_context_create (array('ssl' => array( 'SNI_enabled' => true, 'SNI_server_name' => 'secure.payzen.eu'))) )); */ //Exemplo de inicialização de um cliente SOAP sem proxy $client = new soapClient($wsdl, $options = array( 'trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8', 'soapaction' => '') ); //Geração do header $requestId = gen_uuid (); $timestamp = gmdate ( "Y-m-d\TH:i:s\Z" ); $authToken = base64_encode(hash_hmac('sha256',$requestId.$timestamp, $key, true)); setHeaders ($shopId, $requestId, $timestamp, $mode, $authToken, $key, $client); //Geração do body $commonRequest = new commonRequest; $commonRequest->submissionDate = new DateTime('now',new DateTimeZone('UTC')); $cardRequest = new cardRequest; $cardRequest->number = "4970100000000003"; $cardRequest->scheme = "VISA"; $cardRequest->expiryMonth = "12"; $cardRequest->expiryYear = "2023"; $cardRequest->cardSecurityCode = "123"; $customerRequest = new customerRequest; $customerRequest->billingDetails = new billingDetailsRequest; $customerRequest->billingDetails->email="[email protected]"; $customerRequest->extraDetails = new extraDetailsRequest; $customerRequest->extraDetails->sendMail ="1"; $customerRequest->extraDetails->ipAddress ="127.0.0.1"; //Chamada da operação createToken try { $createTokenRequest = new createToken; $createTokenRequest->commonRequest = $commonRequest; $createTokenRequest->cardRequest = $cardRequest; $createTokenRequest->customerRequest = $customerRequest; $createTokenRequest->commonRequest->submissionDate = $createTokenRequest->commonRequest>submissionDate->format(dateTime::W3C); Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 231 / 237 $createTokenResponse = $client->createToken($createTokenRequest); } catch (SoapFault $fault) { //Gerenciamento das exceções trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault>faultstring})", E_USER_ERROR); } /* Exibição dos logs XML para substituir por uma escritura em um arquivo de log. * * CUIDADO VOCÊ NÃO DEVE SALVAR OS NÚMEROS DE CARTÃO NOS SEUS LOGS */ echo "<hr> [Request Header] <br/>", htmlspecialchars($client->__getLastRequestHeaders()), "<br/>"; echo "<hr> [Request] <br/>", htmlspecialchars($client->__getLastRequest()), "<br/>"; echo "<hr> [Response Header]<br/>", htmlspecialchars($client>__getLastResponseHeaders()), "<br/>"; echo "<hr> [Response]<br/>", htmlspecialchars($client->__getLastResponse()), "<br/>"; echo '<hr>'; echo "<hr> [Response SOAP Headers]<br/>"; //Analise da resposta //Resgate do SOAP Header da resposta para armazenar os cabeçalhos em um quadro (aqui $responseHeader) $dom = new DOMDocument; $dom->loadXML($client->__getLastResponse(), LIBXML_NOWARNING); $path = new DOMXPath($dom); $headers = $path->query('//*[local-name()="Header"]/*'); $responseHeader = array(); foreach($headers as $headerItem) { $responseHeader[$headerItem->nodeName] = $headerItem->nodeValue; } //Cálculo da ficha de autenticação da resposta $authTokenResponse = base64_encode(hash_hmac('sha256',$responseHeader['timestamp']. $responseHeader['requestId'], $key, true)); if ($authTokenResponse !== $responseHeader['authToken']){ //Erro de cálculo ou tentativa de fraude echo 'Erro interno encontrado'; } else{ //Analise da resposta if ($createTokenResponse->createTokenResult->commonResponse->responseCode != "0"){ //process error } else{ //Processo finalizado com sucesso //Teste da presença do du transactionStatusLabel: if (isset if (isset ($createTokenResponse->createTokenResult->commonResponse>transactionStatusLabel)){ //O cartão não é alistado ou 3DS Desativado // O pagamento foi aceito // O código abaixo deve ser modificado para integrar as atualizações de base de dados etc.. switch ($createTokenResponse->createTokenResult->commonResponse>transactionStatusLabel) { case "AUTHORISED": echo "pagamento aceito"; break; case "WAITING_AUTHORISATION": echo "pagamento aceito"; break; case "AUTHORISED_TO_VALIDATE": echo "pagamento aceito"; break; case "WAITING_AUTHORISATION_TO_VALIDATE": echo "pagamento aceito"; break; // O pagamento foi recusado default: echo "pagamento recusado"; break; } } ?> } } Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 232 / 237 createSubscription A operação createSubscription permite realizar pagamentos recorrentes (assinaturas). É preciso utilizar um alias já existente e válido. Este alias pode ser criado via: • a operação createToken, ou • pelo formulário (ver Guia de Implementação do formulário de pagamento). Três arquivos são necessários para cancelar uma assinatura: • um arquivo para as funções "function.php" (conteúdo disponível no capítulo Anexo). • um arquivo para a definição dos objetos "v5.php" (conteúdo disponível no capítulo Anexo). • um arquivo para a operação createSubscription <?php include_once 'v5.php'; // Arquivo contendo a definição dos diferentes objetos include_once 'function.php';// Arquivo contendo todas as funções úteis (geração do uuid, etc...) //Inicialização das variáveis $shopId = "12345678"; $key = "1234567891234567"; $mode = "TEST"; $wsdl = "https://secure.payzen.com.br/vads-ws/v5?wsdl"; //Exemplo de inicialização de um cliente SOAP com gerenciamento do SNI /* $client = new soapClient($wsdl, $options = array('trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8','soapaction' => '', 'uri' => 'http://v5.ws.vads.lyra.com/', 'cache_wsdl' => WSDL_CACHE_NONE, //Proxy parameters 'proxy_host' => 'my.proxy.host', 'proxy_port' => 3128, 'stream_context' => stream_context_create (array('ssl' => array( 'SNI_enabled' => true, 'SNI_server_name' => 'secure.payzen.eu'))) */ )); //Exemplo de inicialização de um cliente SOAP sem proxy $client = new soapClient($wsdl, $options = array( 'trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8', 'soapaction' => '') ); //Geração do header $requestId = gen_uuid (); $timestamp = gmdate ( "Y-m-d\TH:i:s\Z" ); $authToken = base64_encode(hash_hmac('sha256',$requestId.$timestamp, $key, true)); setHeaders ($shopId, $requestId, $timestamp, $mode, $authToken, $key, $client); //Geração do body $commonRequest = new commonRequest; $commonRequest->submissionDate = new DateTime('now',new DateTimeZone('UTC')); $orderRequest = new orderRequest; $orderRequest->orderId = "myFirstSubscription"; $subscriptionRequest = new subscriptionRequest; $subscriptionRequest->effectDate = "2016-07-10T18:00:00Z"; $subscriptionRequest->amount = "30000"; $subscriptionRequest->currency = "978"; $subscriptionRequest->initialAmount = "1000"; $subscriptionRequest->initialAmountNumber = "1"; $subscriptionRequest->rrule = "RRULE:FREQ=MONTHLY;COUNT=12;BYMONTHDAY=10"; Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 233 / 237 $cardRequest = new cardRequest; $cardRequest->paymentToken = "MyToken"; //Chamada da operação createSubscription try { $createSubscriptionRequest = new createSubscription; $createSubscriptionRequest->commonRequest = $commonRequest; $createSubscriptionRequest->orderRequest = $orderRequest; $createSubscriptionRequest->cardRequest = $cardRequest; $createSubscriptionRequest->subscriptionRequest = $subscriptionRequest; $createSubscriptionRequest->commonRequest->submissionDate = $createSubscriptionRequest>commonRequest->submissionDate->format(dateTime::W3C); $createSubscriptionResponse = $client->createSubscription($createSubscriptionRequest); } catch (SoapFault $fault) { //Gestão das exceções trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault>faultstring})", E_USER_ERROR); } /* Exibição dos logs XML para substituir por uma escritura em um arquivo de log. * * CUIDADO VOCÊ NÃO DEVE SALVAR OS NÚMEROS DE CARTÃO NOS SEUS LOGS */ echo "<hr> [Request Header] <br/>", htmlspecialchars($client->__getLastRequestHeaders()), "<br/>"; echo "<hr> [Request] <br/>", htmlspecialchars($client->__getLastRequest()), "<br/>"; echo "<hr> [Response Header]<br/>", htmlspecialchars($client>__getLastResponseHeaders()), "<br/>"; echo "<hr> [Response]<br/>", htmlspecialchars($client->__getLastResponse()), "<br/>"; echo '<hr>'; echo "<hr> [Response SOAP Headers]<br/>"; //Analise da resposta //Resgate do SOAP Header da resposta para armazenar os cabeçalhos em um quadro (aqui $responseHeader) $dom = new DOMDocument; $dom->loadXML($client->__getLastResponse(), LIBXML_NOWARNING); $path = new DOMXPath($dom); $headers = $path->query('//*[local-name()="Header"]/*'); $responseHeader = array(); foreach($headers as $headerItem) { $responseHeader[$headerItem->nodeName] = $headerItem->nodeValue; } //Cálculo da ficha de autenticação da resposta $authTokenResponse = base64_encode(hash_hmac('sha256',$responseHeader['timestamp']. $responseHeader['requestId'], $key, true)); if ($authTokenResponse !== $responseHeader['authToken']){ //Erro de cálculo ou tentativa de fraude echo 'Erro interno encontrado'; } else{ //Analise da resposta if ($createSubscriptionResponse->createSubscriptionResult->commonResponse>responseCode != "0"){ //process error } else{ //Processo finalizado com sucesso //Teste da presença do du transactionStatusLabel: if (isset ($createSubscriptionResponse->createSubscriptionResult->commonResponse>transactionStatusLabel)){ //O cartão não é alistado ou 3DS Desativado // O pagamento foi aceito // O código abaixo deve ser modificado para integrar as atualizações de base de dados etc... switch ($createPaymentResponse->createPaymentResult->commonResponse>transactionStatusLabel) { case "AUTHORISED": echo "pagamento aceito"; break; case "WAITING_AUTHORISATION": echo "pagamento aceito"; break; case "AUTHORISED_TO_VALIDATE": echo "pagamento aceito"; break; case "WAITING_AUTHORISATION_TO_VALIDATE": echo "pagamento aceito"; break; // O pagamento foi recusado Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 234 / 237 } ?> } default: echo "pagamento recusado"; break; } } Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 235 / 237 cancelSubscription Três arquivos são necessários para cancelar uma assinatura: • um arquivo para as funções "function.php" (conteúdo disponível no capítulo Anexo). • um arquivo para a definição dos objetos "v5.php" (conteúdo disponível no capítulo Anexo). • um arquivo para a operação cancelSubscription <?php include_once 'v5.php'; // Arquivo contendo a definição dos diferentes objetos include_once 'function.php';// Arquivo contendo todas as funções úteis (geração do uuid, etc...) //Inicialização das variáveis $shopId = "12345678"; $key = "1234567891234567"; $mode = "TEST"; $wsdl = "https://secure.payzen.com.br/vads-ws/v5?wsdl"; //Exemplo de inicialização de um cliente SOAP sem proxy $client = new soapClient($wsdl, $options = array( 'trace'=>1, 'exceptions'=> 0, 'encoding' => 'UTF-8', 'soapaction' => '') ); //Geração do header $requestId = gen_uuid (); $timestamp = gmdate ( "Y-m-d\TH:i:s\Z" ); $authToken = base64_encode(hash_hmac('sha256',$requestId.$timestamp, $key, true)); setHeaders ($shopId, $requestId, $timestamp, $mode, $authToken, $key, $client); //Geração do body $commonRequest = new commonRequest; $queryRequest = new queryRequest; $queryRequest->paymentToken = "c975d6af1d5e478da3570d43494d86d2"; $queryRequest->submissionDate = "2015-08-28T09:21:34+00:00"; $queryRequest->subscriptionId = "20150828i6VFSA"; // Chamada da operação cancelSubscription try { $cancelSubscriptionRequest = new cancelSubscription; $cancelSubscriptionRequest->commonRequest = $commonRequest; $cancelSubscriptionRequest->queryRequest = $queryRequest; $cancelSubscriptionResponse = $client->cancelSubscription($cancelSubscriptionRequest); } catch (SoapFault $fault) { //Gestão das exceções trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault>faultstring})", E_USER_ERROR); } /* Exibição dos logs XML para substituir por uma escritura em um arquivo de log. * * CUIDADO VOCÊ NÃO DEVE SALVAR OS NÚMEROS DE CARTÃO NOS SEUS LOGS */ echo "<hr> [Request Header] <br/>", htmlspecialchars($client->__getLastRequestHeaders()), "<br/>"; echo "<hr> [Request] <br/>", htmlspecialchars($client->__getLastRequest()), "<br/>"; echo "<hr> [Response Header]<br/>", htmlspecialchars($client>__getLastResponseHeaders()), "<br/>"; echo "<hr> [Response]<br/>", htmlspecialchars($client->__getLastResponse()), "<br/>"; echo '<hr>'; echo "<hr> [Response SOAP Headers]<br/>"; //Analise da resposta //Resgate do SOAP Header da resposta para armazenar os cabeçalhos em um quadro (aqui $responseHeader) $dom = new DOMDocument; $dom->loadXML($client->__getLastResponse(), LIBXML_NOWARNING); $path = new DOMXPath($dom); $headers = $path->query('//*[local-name()="Header"]/*'); $responseHeader = array(); foreach($headers as $headerItem) { $responseHeader[$headerItem->nodeName] = $headerItem->nodeValue; Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 236 / 237 } //Cálculo da ficha de autenticação da resposta $authTokenResponse = base64_encode(hash_hmac('sha256',$responseHeader['timestamp']. $responseHeader['requestId'], $key, true)); if ($authTokenResponse !== $responseHeader['authToken']){ //Erro de cálculo ou tentativa de fraude echo 'Erro interno encontrado'; } else{ //Analise da resposta if ($cancelSubscriptionResponse->cancelSubscriptionResult->commonResponse>responseCode != "0"){ //process error } else{ //Processo finalizado com sucesso //Teste da presença do du transactionStatusLabel: if (isset ($cancelSubscriptionResponse->cancelSubscriptionResult->commonResponse>transactionStatusLabel)){ //O cartão não é alistado ou 3DS Desativado // O pagamento foi aceito // O código abaixo deve ser modificado para integrar as atualizações de base de dados etc... switch ($cancelSubscriptionResponse->cancelSubscriptionResult->commonResponse>transactionStatusLabel){ case "AUTHORISED": echo "pagamento aceito"; break; case "WAITING_AUTHORISATION": echo "pagamento aceito"; break; case "AUTHORISED_TO_VALIDATE": echo "pagamento aceito"; break; case "WAITING_AUTHORISATION_TO_VALIDATE": echo "pagamento aceito"; break; // O pagamento foi recusado default: echo "pagamento recusado"; break; } } ?> } } Manual de integração via Web services V5 - Versão do documento 1.7.2 Direito de propriedade intelectual - 237 / 237