Autorização no Apple Pay pelo menor

Autorização no Apple Pay pelo menor


Será prestada atenção a um ponto específico - isso está recebendo um criptograma da Apple depois que o comprador passou pelo TouchID ou pelo FaceID. A linguagem de back-end será PHP.


Meu nome é Alexander, sou programador júnior de PHP em Moguta e tive que enfrentar a integração do Apple Pay em nosso Moguta.CMS no meu caminho. Hoje, vou lhe dizer como se autorizar através do Apple Pay a fazer pagamentos sem se aprofundar no material de conexões e certificados seguros, já que eu não tinha o suficiente desse material no início da minha jornada.


1. Introdução


Não vou pintar aqui a folha inteira para introduzir o Apple Pay no meu site. As instruções sobre como registrar uma conta de desenvolvedor da Apple, para onde fazer um certificado de Processamento de pagamento, para onde enviar a resposta recebida, estão completas no RuNet, basta solicitar ao Google “integração com o Apple Pay no site” e selecionar o agregador de pagamento que você desejar, que detalhará todas as etapas necessárias para você ação.


Breve revisão


O requisito mínimo para esta instrução será a presença do MacOS para trabalhar com chaves, pois trabalhar com certificados em outros sistemas operacionais já é um material separado, do qual não prestarei atenção aqui.


Vamos primeiro descobrir onde será o local de nossas hostilidades. O algoritmo é o seguinte:


  1. O usuário inicia o processo de pagamento através do Apple Pay na loja online;
  2. A loja online envia informações de pagamento para a Apple;
  3. A Apple responde com um link para os dados do vendedor;
  4. A loja online envia os dados do vendedor através de um link através do TLS de duas vias;
  5. A Apple envia dados contendo PaymentData;
  6. A loja online redireciona PaymentData para o gateway de pagamento e processa a resposta;

Estamos interessados ​​no quarto ponto, pois a solicitação cURL usual não é suficiente.


Recebemos certificados


Para que a Apple acredite que lida pessoalmente conosco, primeiro você precisa obter um certificado de identificação do comerciante (para não confundir com o processamento de pagamento, ele é necessário para um gateway de pagamento). Para começar, formularemos uma solicitação de certificado de acordo com as instruções oficiais . O arquivo resultante é anexado ao certificado de identidade do Apple Pay Merchant do seu ID do comerciante.


Criar certificado


Em resposta, obtemos merchant_id.cer, que adicionamos ao grupo. Com base em sua chave privada, geramos um arquivo .p12. Para fazer isso, chame o menu de contexto da chave privada e selecione "Exportar ..."


Exportar para p12


Retiramos a chave com o seguinte comando (a senha solicitada pelo terminal será a senha da chave, precisamos dela ao conectar à Apple)


openssl pkcs12 -in <  >.p12 -out ApplePay.key.pem -nocerts -nodes 

e ultrapassar nosso certificado em pem


  openssl x509 -inform der -in merchant_id.cer -out merchant_id.pem 

Agora, temos todos os arquivos necessários com os quais provaremos ao servidor da Apple quem somos quem afirmamos ser.


Enviar um pedido


Omitimos o momento de receber o link para a validação ( leia mais em outro artigo sobre Habr ), passamos para o momento em que o script em JS no Safari enviou ao nosso servidor um pedido de autorização na Apple.


Para isso, usamos PHP com cURL. Exemplo de código:


 $ch = curl_init(); $data = '{"merchantIdentifier":"<,      Merchan ID>", "domainName":"< ->", "displayName":"< -,       TouchID/FaceID>"}'; curl_setopt($ch, CURLOPT_URL, '<  Apple,   validationURL>'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_CERTINFO, true); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); curl_setopt($ch, CURLOPT_SSLCERT, '<  >.pem'); curl_setopt($ch, CURLOPT_SSLKEY, '<  >.pem'>); curl_setopt($ch, CURLOPT_SSLKEYPASSWD, '<  >'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($ch); curl_close($ch); echo json_encode($res); 

Retiramos o paymentData da resposta recebida e o enviamos para o nosso gateway de pagamento. Parabéns, a autorização foi aprovada, você pode remar dinheiro.


Nota


O destino não me deixou alegrar-me pela conexão estabelecida por um longo tempo, e a Apple me deu a seguinte resposta:


 Payment Services Exception merchantId=< > unauthorized to service on behalf of merchantId=<  > reason=\"The latter is not registered for Apple Pay on the web\"" 

O texto da mensagem não é suficientemente óbvio, como gostaríamos. Informações na rede, novamente, não. Como se viu, provavelmente isso significa que você simplesmente inseriu o valor incorreto no campo merchantIdentifier.


Sumário


Ficarei feliz em ouvir sugestões, dicas ou críticas nos comentários.


Espero que o artigo beneficie as mesmas almas perdidas que eu.

Source: https://habr.com/ru/post/pt460273/


All Articles