Oito motivos para mudar para a nova API do Yandex.

Em outubro de 2017, o Yandex.Kassi possui um novo protocolo de pagamento e uma terceira versão da API. Já falamos sobre como e por que chegamos a isso, e agora lembramos os principais motivos para mudar para aqueles que ainda não o fizeram.

1. Conectar pagamentos tornou-se muito rápido


Na nova API, isso acontece de 5 a 10 vezes mais rápido do que antes, e agora o desenvolvedor médio pode conectar pagamentos ao seu site ou aplicativo (bom, ou não exatamente) em um dia útil, e não em cinco, como era antes. Obviamente, trata-se da parte do trabalho em que tudo é acordado, os pedidos são aprovados e as chaves de acesso são recebidas. Mas um dia é suficiente para isso também.

E para quem vende em redes sociais, o faturamento funciona por correio, SMS ou apenas um link que pode ser enviado em mensagens privadas.

2. Economize o poder de desenvolvedores e administradores


Para manter a versão antiga, você precisa cuidar de várias pequenas coisas - aloque um endereço IP estático para trabalhar com a API, altere os certificados uma vez por ano. E na versão antiga não há suporte para o modo HTTPS SNI, que agora está incluído gratuitamente (ou quase de graça) no serviço "hospedagem com HTTPS" de muitos provedores de hospedagem

Para reembolsos, confirmação, cancelamento ou nova tentativa de pagamento com cartão, é utilizado o protocolo MWS (Merchant Web Services). Com a ajuda do MWS, uma loja pode fazer reembolsos , confirmar e cancelar pagamentos diferidos, além de repetir pagamentos com cartão de crédito (se o pagador concordar com isso). Na versão antiga da API para trabalhar com o MWS, a loja precisava receber um certificado X.509 do centro de certificação Yandex.Money, com o qual a loja gerava solicitações para Yandex.Cash. Agora tudo isso sai da caixa - você apenas obtém as chaves de acesso e implementa os métodos de pagamento necessários.

Em geral, muitas coisas desnecessárias desapareceram do processo de integração, com as quais tivemos que lidar sozinhas e gastar tempo com desenvolvedores e administradores.

3. Apenas REST e nada mais


Reescrevemos tudo no estilo REST - agora o protocolo é claramente construído e se comporta de maneira previsível. Para o tesouro das dificuldades passadas - quase todos os métodos de pagamento tinham sua própria sintaxe, script e processo pelos quais tivemos que passar ao instalar, configurar e efetuar pagamentos. O novo protocolo se livrou das "doenças da infância", atende aos padrões - que, entre outros, são estabelecidos pelos líderes internacionais em pagamentos.

Para comparação, vejamos os métodos antigos e novos de reembolso.

Anteriormente, era necessário formar um documento de pedido para executar a operação de acordo com o padrão XML 1.0, para criar um pacote criptográfico PKCS # 7 com assinatura digital, mas sem cadeias de certificação, compactação e criptografia de dados. Depois disso, uma solicitação POST foi gerada por HTTP / 1.1 com o corpo do pacote criptográfico ou em um anexo por meio do tipo MIME application / pkcs-mime. Então é a pequena empresa - passar oito parâmetros de entrada e, em princípio, tudo está pronto.

Pedido HTTP total:
POST /webservice/mws/api/returnPayment HTTP/1.1 Content-Type: application/pkcs7-mime Content-Length: 906 ——-BEGIN PKCS7——- MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAaCA JIAEgbE8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KPG1h a2VEZXBvc2l0aW9uUmVzcG9uc2UgY2xpZW50T3JkZXJJZD0iMTI5MTExNjIzNDUy OCIgc3RhdHVzPSIwIi6789Jvcj0iMCIgcHJvY2Vzc2VkRFQ9IjIwMTAtMTEtMzBU MTE6MjM6NTQuNjI0WiIgYmFsYW5jZT0iNTQxNDYuNzMiIC8+DQoAAAAAAAAxggF8 MIIBeAIBATB3MGoxCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZSdXNzaWExFjAUBgNV BAcTDVN0LlBldGVyc2J1cmcxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5 IEx0ZDEPMA0GA1UEAxMGc2VydmVyAgkAy2xbdQckXjIwCQYFKw4DAhoFAKBdMBgG CSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEwMTEzMDEx MjM1NVowIwYJKoZIhvcNAQkEMRYEFEYNh8glwqIXGR/n6oYrApa8DaO5MA0GCSqG SIb3DQEBAQUABIGAHlgGsYK30RXWBvuQao0V73KIPQE1A6BCg7Y6Iag/xlmZ3rBB kFpszF/O2fB+t84pCHfV15ErZQEkAqIotkEYEgA3hAddEW5+RWUzp+3npHpW5OY7 h3niP5Pj+r0P8EDgHe2j0Zb3dzj2mbwOshZD+FP1IcR8AmiTV3u35C6KAEsAAAAA AAA= ——-END PKCS7——- 


E o pedido de reembolso em si:
 <returnPaymentRequest clientOrderId="46890" requestDT="2011-07-02T20:38:00.000Z" invoiceId="2000000433" shopId="6689" amount="10.00" currency="643" cause="   " /> 

Na nova versão da API, um reembolso no Python se parece com o seguinte:
 refund = Refund.create({   "amount": {       "value": "2.00",       "currency": "RUB"   },   "payment_id": "21741269-000d-50be-b000-0486ffbf45b0" }) 

Um JSON claro retornará, que pode ser analisado com qualquer coisa no período mínimo de tempo:
 {   "id": "216742f7-0016-50be-b000-078a43a63ae4",   "status": "succeeded",   "amount": {     "value": "2.00",     "currency": "RUB"   },   "created_at": "2017-10-04T19:27:51.407Z",   "payment_id": "21746789-000f-50be-b000-0486ffbf45b0" } 

Beleza

4. Suporte para diferentes idiomas e tecnologias


A nova API também possui um SDK para dispositivos móveis , PHP, Python e Node.js. O que quer que seus funcionários de back-end façam (bem, exceto em casos muito exóticos), os pagamentos através do Caixa são conectados rapidamente. Se uma pessoa estiver escrevendo ativamente em Python por mais de alguns meses, ela lidará com a integração.

No ano passado, lançamos uma biblioteca para aplicativos móveis no iOS e Android. Com sua ajuda, as formas de pagamento são incorporadas ao aplicativo e parecem parte dele (e não o WebView). Os usuários poderão pagar pelo pedido com cartão de crédito, de uma carteira Yandex.Money, através do Google Pay, Apple Pay ou Sberbank Online.

Também é implementado de forma simples - dê as instruções ao seu desenvolvedor e em breve você verá como ele se tornou maravilhoso. Já escrevemos com mais detalhes sobre como o SDK móvel aumenta o nível de felicidade para você e os usuários de seus aplicativos móveis em nosso blog central .

5. Pagamentos regulares sem xamanismo


Imediatamente após a instalação e configuração, os pagamentos com cartão com pré-autorização dos fundos serão gerados - eles são incorporados à API por padrão.
Existem pagamentos recorrentes (com cartão e da carteira): você precisa coordená-los com o serviço de segurança, mas esse também foi o caso no protocolo antigo. Se um pagamento recorrente usar um cartão com 3D-Secure obrigatório, a nova API retornará primeiro um link para ele.
Em geral, tudo se tornou mais simples - aqui também não é necessário realizar longos rituais com o MWS, obtendo certificados e todas as outras criptomoedas.

6. Notificações automáticas de alterações no status do pagamento


Antes, era necessário verificar manualmente o status de cada pagamento e, agora, se ele foi alterado, o desenvolvedor receberá automaticamente uma notificação.
Existem quatro tipos de notificação automática de status de pagamento incorporados à API v3:
  1. "Aguardando confirmação pelo comerciante após o pagamento",
  2. "Pago"
  3. "Cancelado ou ocorreu um erro durante o pagamento",
  4. "Pagamento devolvido."

No protocolo antigo, tivemos que escrever uma lista complexa do método MWS, que mostrasse a lista e as propriedades dos pedidos. 12 parâmetros, lógica complexa de envio de uma solicitação e uma oportunidade intrigante de receber uma resposta no formato CSV:

 status=0;error=0;processedDT=2011-08-02T14:46:58.096+03:00;orderCount=2 shopId;shopName;articleId;articleName;invoiceId;orderNumber;paymentSystemOrderNumber;customerNumber;createdDatetime;paid;orderSumAmount; orderSumCurrencyPaycash;orderSumBankPaycash;paidSumAmount;paidSumCurrencyPaycash;paidSumBankPaycash;receivedSumAmount;receivedSumCurrencyPaycash; receivedSumBankPaycash;shopSumAmount;shopSumCurrencyPaycash;shopSumBankPaycash;paymentDatetime;paymentAuthorizationTime;payerCode;payerAddress;payeeCode; paymentSystemDatetime;avisoReceivedDatetime;avisoStatus;paymentType;agentId;uniLabel;environment 1;" ";2;"-";2000024717776;"2011.08.02 09:07:32";483512879684006008;97881;2011-08-02T08:07:59.148+03:00;true;10.15;643;1003;10.15;643; 1003;10.15;643;1003;10.15;643;1003;2011-08-02T08:07:59.684+03:00;483512879684006008;41003476047679;192.168.1.127;41003131475668;2011-08-02T08:07:59.684+03:00; 2011-08-02T08:07:59.660+03:00;1000;AC;200002;1cd12967-0001-5000-8000-000000034fd8;Live 1;" ";2;"-";2000024717780;2000024717780;483512937773006008;770367;2011-08-02T08:08:57.175+03:00;true;10.00;643;1003;10.00;643; 1003;10.00;643;1003;10.00;643;1003;2011-08-02T08:08:57.773+03:00;483512937773006008;41003494819180;192.168.1.127;41003131475668;2011-08-02T08:08:57.773+03:00; 2011-08-02T08:08:57.730+03:00;1000;AC;200002;1cd129a4-0001-5000-8000-000000034fe1;Live 

Na nova versão assim. Pedido:
 curl https://payment.yandex.net/api/v3/payments/{payment_id} \ -u < >:< > : { "id": "22312f66-000f-5100-8000-18db351245c7", "status": "waiting_for_capture", "paid": true, "amount": {   "value": "2.00",   "currency": "RUB" }, "created_at": "2018-07-18T10:51:18.139Z", "description": " №72", "expires_at": "2018-07-25T10:52:00.233Z", "metadata": {}, "payment_method": {   "type": "bank_card",   "id": "22ebbf66-000f-5000-8000-18db351245c7",   "saved": false,   "card": {     "first6": "555555",     "last4": "4444",     "card_type": "MasterCard"   },   "title": "Bank card *4444" }, "test": false } 

7. É imediatamente claro em que ponto o erro ocorreu


Se o pagamento falhar, em vez de "algo deu errado", a nova API deixará claro por que aconteceu - por exemplo, o cartão ficou sem dinheiro ou o usuário queria pagar via Sberbank Online, mas não estava conectado.
Ocasionalmente, pode haver "algo deu errado" a curto prazo - é claro que brigamos com eles (o editor principal Natasha acena para mim e mostra meu polegar), mas para prever diferenças no mapeamento de erros entre bancos diferentes ou comportamento inesperado de software às vezes impossível. Até para nós.
Em geral, se o pagamento for cancelado, a resposta da API será imediatamente clara, pelo que:
 { "id": "22379b7b-000f-5000-9030-1a603a795739", "status": "canceled", "paid": false, "amount": {   "value": "2.00",   "currency": "RUB" }, "created_at": "2018-05-23T15:24:43.812Z", "metadata": {}, "payment_method": {   "type": "bank_card",   "id": "22977a7b-000f-5000-9000-1a603a795129",   "saved": false }, "recipient": {   "account_id": "100001",   "gateway_id": "1000001" }, "test": false, "cancellation_details": {   "party": "payment_network",   "reason": "payment_method_restricted" } } 

8. Tudo pode ser verificado antes de começar


Para obter chaves de teste e ver como tudo funciona, você precisa se registrar na sua conta Yandex.Cash - para isso, é necessário um nome de usuário no Yandex e na empresa TIN. No questionário, escolha o auto-registro - em um minuto, um circuito de teste será criado e você poderá verificar como vão os pagamentos.

Antes de iniciarmos esse recurso, estava disponível um ambiente de teste no qual você pode tentar a API v3 usando o cliente REST Insomnia. Existem exemplos de pagamento com cartão de crédito, que mostram claramente qual solicitação é enviada, qual resposta é retornada e o que acontece em todas as etapas do processo de troca de dados.



Para todas as etapas de integração e manutenção, temos um guia passo a passo em russo e inglês , além de uma referência API ainda mais detalhada.

Em geral, mude para a nova API, se ainda não estiver, ou conecte-se ao Yandex.Checkout - tudo está pronto para sua visita lá.

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


All Articles