En octubre de 2017, Yandex.Kassa tiene un nuevo protocolo de pago y una tercera versión de la API. Ya hemos
hablado sobre cómo y por qué llegamos a esto, y ahora recordamos las razones clave para cambiarlo para aquellos que aún no lo han hecho.
1. Conectar pagos se ha vuelto realmente rápido
En la nueva API, ocurre entre 5 y 10 veces más rápido que antes, y ahora el desarrollador promedio puede conectar los pagos a su sitio web o aplicación (bueno, o no del todo) en un día hábil, y no en cinco, como era antes. Esto, por supuesto, se trata de esa parte del trabajo cuando todo está acordado, las solicitudes se aprueban y se reciben las claves de acceso. Pero un día es suficiente para eso también.
Y para aquellos que venden en las redes sociales, la facturación funciona por correo, SMS o simplemente un enlace que se puede enviar en mensajes privados.
2. Ahorre el poder de los desarrolladores y administradores
Para mantener la versión anterior, debe ocuparse de varias cosas pequeñas: asignar una dirección IP estática para trabajar con la API, cambiar los certificados una vez al año. Y en la versión anterior no hay soporte para el modo SNT HTTPS, que ahora se incluye de forma gratuita (o casi gratis) en el servicio de "hosting con HTTPS" de muchos proveedores de hosting.
Para reembolsos, confirmación, cancelación o reintentos de pagos con tarjeta, se utiliza el protocolo MWS (Merchant Web Services). Con la ayuda de MWS, una tienda puede
hacer reembolsos ,
confirmar y
cancelar pagos diferidos, así como también
repetir pagos con tarjeta de crédito (si el pagador ha aceptado esto). En la versión anterior de la API para trabajar con MWS, la tienda necesitaba recibir un certificado X.509 del centro de certificación Yandex.Money, con el cual la tienda generaba solicitudes a Yandex.Cash. Ahora todo esto sale de la caja: solo obtiene claves de acceso e implementa los métodos de pago necesarios.
En general, muchas cosas innecesarias desaparecieron del proceso de integración, que tuvimos que enfrentar por nuestra cuenta y dedicar tiempo a los desarrolladores y administradores.
3. Solo DESCANSO y nada más
Reescribimos todo en un estilo REST: ahora el protocolo está claramente construido y se comporta de manera predecible. Para el tesoro de las dificultades pasadas, casi todos los métodos de pago tenían su propia sintaxis, secuencia de comandos y
proceso que tuvimos que pasar al instalar, configurar y realizar pagos. El nuevo protocolo eliminó las "enfermedades infantiles", cumple con los estándares, que, entre otras cosas, establecen los líderes internacionales de pagos.
A modo de comparación, veamos los métodos
antiguos y
nuevos de reembolso.
Anteriormente, era necesario formar un documento de pedido para ejecutar una operación de acuerdo con el estándar XML 1.0, para crear un paquete criptográfico de formato PKCS # 7 con una firma digital, pero sin cadenas de certificación, compresión de datos y cifrado. Después de eso, se generó una solicitud POST a través de HTTP / 1.1 con el cuerpo del paquete criptográfico o en un archivo adjunto a través del tipo MIME application / pkcs-mime. Entonces es la pequeña empresa: pasar ocho parámetros de entrada y, en principio, todo está listo.
Solicitud 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——-
Y la solicitud de reembolso en sí:
<returnPaymentRequest clientOrderId="46890" requestDT="2011-07-02T20:38:00.000Z" invoiceId="2000000433" shopId="6689" amount="10.00" currency="643" cause=" " />
En la nueva versión de la API, un reembolso en Python se ve así:
refund = Refund.create({ "amount": { "value": "2.00", "currency": "RUB" }, "payment_id": "21741269-000d-50be-b000-0486ffbf45b0" })
Volverá un JSON claro, que se puede analizar con cualquier cosa en el tiempo mínimo:
{ "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" }
Belleza
4. Soporte para diferentes idiomas y tecnologías.
La nueva API también tiene un
SDK para dispositivos móviles , PHP, Python y Node.js. Independientemente de lo que hagan sus chicos de back-end (bueno, excepto en casos muy exóticos), los pagos a través del Cajero se conectan rápidamente. Si una persona ha estado escribiendo activamente en Python durante más de un par de meses, hará frente a la integración.
El año pasado, lanzamos una biblioteca para aplicaciones móviles en iOS y Android. Con su ayuda, los formularios de pago están integrados en la aplicación y parecen parte de ella (y no WebView). Los usuarios podrán pagar el pedido con una tarjeta de crédito, desde una billetera Yandex.Money, a través de Google Pay, Apple Pay o Sberbank Online.
También se implementa de manera simple: dé las instrucciones a su desarrollador y pronto verá lo maravilloso que se ha vuelto. Ya hemos escrito con más detalle sobre cómo el SDK móvil aumenta el nivel de felicidad para usted y los usuarios de sus aplicaciones móviles en nuestro
blog central .
5. Pagos regulares sin chamanismo
Inmediatamente después de la instalación y configuración, los pagos con tarjeta con preautorización de fondos ganarán: están integrados en la API de forma predeterminada.
Hay pagos recurrentes (tanto con una tarjeta como desde la billetera): debe coordinarlos con el servicio de seguridad, pero era lo mismo en el protocolo anterior. Si un pago recurrente utiliza una tarjeta con 3D-Secure obligatorio, la nueva API primero le devolverá un enlace.
En general, todo se ha vuelto más simple: aquí, también, no es necesario realizar largos rituales con MWS, obtener certificados y todas las demás criptomonedas.
6. Notificaciones automáticas de cambios en el estado de pago
Anteriormente, tenía que verificar manualmente el estado de cada pago, y ahora, si ha cambiado, el desarrollador recibirá automáticamente una notificación.
Existen cuatro tipos de notificación automática del estado de pago integrado en API v3:
- "A la espera de la confirmación por parte del comerciante después del pago",
- "Pagado"
- "Cancelado o se produjo un error durante el pago",
- "Pago devuelto".
En el antiguo protocolo, tuvimos que escribir una lista compleja de órdenes de método MWS, que mostraba la lista y las propiedades de las órdenes. 12 parámetros, lógica compleja de enviar una solicitud y una oportunidad intrigante para recibir una respuesta en 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
En la nueva versión así. Solicitud:
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. Está inmediatamente claro en qué punto ocurrió el error
Si el pago falló, en lugar de "algo salió mal", la nueva API dejará en claro por qué sucedió; por ejemplo, la tarjeta se quedó sin dinero o el usuario quería pagar a través de Sberbank Online, pero no estaba conectada.
Ocasionalmente puede haber "algo salió mal" a corto plazo: nosotros, por supuesto, luchamos con ellos (el editor principal Natasha me saluda y me muestra el pulgar), pero a veces podemos predecir diferencias en el mapeo de errores entre diferentes bancos o un comportamiento inesperado del software imposible Incluso para nosotros
En general, si se cancela el pago, la respuesta de la API será clara de inmediato, por lo 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. Todo se puede verificar antes de comenzar
Para obtener claves de prueba y ver cómo funciona todo, debe registrarse en su cuenta de Yandex.Cash, para esto necesita un nombre de usuario en Yandex y el TIN de la compañía. En el cuestionario, elija la autoinscripción: en un minuto se creará un circuito de prueba y podrá verificar cómo van los pagos.
Antes de comenzar esta función, había un
entorno de prueba disponible en el que puede probar la API v3 utilizando el cliente Insomnia REST. Allí se presentan ejemplos para el pago con tarjeta de crédito, mientras que muestra claramente qué solicitud se envía, qué respuesta se devuelve y qué sucede en todas las etapas del proceso de intercambio de datos.

Para todas las etapas de integración y mantenimiento, tenemos una guía paso a paso en
ruso e
inglés , así como una
referencia API aún más detallada.
En general, cambie a la nueva API, si aún no lo hizo, o
conéctese a Yandex.Checkout : todo está listo para su visita allí.