Acht Gründe für den Wechsel zur neuen Yandex. Cashier API

Im Oktober 2017 verfügt Yandex.Kassa über ein neues Zahlungsprotokoll und eine dritte Version der API. Wir haben bereits darüber gesprochen, wie und warum wir dazu gekommen sind, und jetzt erinnern wir uns an die Hauptgründe, für diejenigen, die dies noch nicht getan haben, darauf umzusteigen.

1. Das Verbinden von Zahlungen ist sehr schnell geworden


Auf der neuen API geschieht dies fünf- bis zehnmal schneller als zuvor, und jetzt kann der durchschnittliche Entwickler Zahlungen an einem Arbeitstag mit seiner (gut oder nicht ganz) Website oder Anwendung verbinden und nicht wie zuvor in fünf Tagen. Hier geht es natürlich um den Teil der Arbeit, bei dem alles vereinbart, Anträge genehmigt und Zugangsschlüssel empfangen werden. Aber auch dafür reicht ein Tag.

Und für diejenigen, die in sozialen Netzwerken verkaufen, funktioniert die Rechnungsstellung per Post, SMS oder einfach über einen Link, der in privaten Nachrichten gesendet werden kann.

2. Speichern Sie die Leistung von Entwicklern und Administratoren


Um die alte Version beizubehalten, müssen Sie sich um verschiedene Kleinigkeiten kümmern - weisen Sie eine statische IP-Adresse für die Arbeit mit der API zu und ändern Sie die Zertifikate einmal im Jahr. Und in der alten Version gibt es keine Unterstützung für den HTTPS-SNI-Modus, der jetzt kostenlos (oder fast kostenlos) im Dienst „Hosting mit HTTPS“ vieler Hosting-Anbieter enthalten ist

Für Rückerstattungen, Bestätigung, Stornierung oder Wiederholung von Kartenzahlungen wird das Protokoll MWS (Merchant Web Services) verwendet. Mit Hilfe von MWS kann ein Geschäft Rückerstattungen vornehmen , Zahlungsaufschübe bestätigen und stornieren sowie Zahlungen per Kreditkarte wiederholen (sofern der Zahler dem zugestimmt hat). In der alten Version der API für die Arbeit mit MWS musste der Store ein X.509-Zertifikat von der Yandex.Money-Zertifizierungsstelle erhalten, mit dem der Store Anforderungen an Yandex.Money generiert hat. Jetzt ist alles sofort einsatzbereit - Sie erhalten nur noch Zugangsschlüssel und implementieren die erforderlichen Zahlungsmethoden.

Im Allgemeinen verschwanden viele unnötige Dinge aus dem Integrationsprozess, mit dem wir uns selbst befassen und Zeit für Entwickler und Administratoren verbringen mussten.

3. Nur REST und nichts mehr


Wir haben alles im REST-Stil umgeschrieben - jetzt ist das Protokoll klar aufgebaut und verhält sich vorhersehbar. Zum Schatz vergangener Schwierigkeiten - fast jede Zahlungsmethode hatte ihre eigene Syntax, ihr eigenes Skript und ihren eigenen Prozess , die wir bei der Installation, Konfiguration und Ausführung von Zahlungen durchlaufen mussten. Das neue Protokoll beseitigt "Kinderkrankheiten" und erfüllt die Standards, die unter anderem von internationalen Zahlungsführern festgelegt werden.

Schauen wir uns zum Vergleich die alten und neuen Rückerstattungsmethoden an.

Zuvor war es erforderlich, ein Auftragsdokument für die Ausführung eines Vorgangs gemäß dem XML 1.0-Standard zu erstellen, um ein kryptografisches Paket im PKCS # 7-Format mit einer digitalen Signatur zu erstellen, jedoch ohne Ketten von Zertifizierung, Datenkomprimierung und Verschlüsselung. Danach wurde eine POST-Anforderung über HTTP / 1.1 mit dem Hauptteil des kryptografischen Pakets oder im Anhang über den MIME-Typ application / pkcs-mime generiert. Dann ist es das kleine Unternehmen - acht Eingabeparameter zu übergeben und im Prinzip ist alles bereit.

Gesamt-HTTP-Anfrage:
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——- 


Und der Antrag auf Rückerstattung selbst:
 <returnPaymentRequest clientOrderId="46890" requestDT="2011-07-02T20:38:00.000Z" invoiceId="2000000433" shopId="6689" amount="10.00" currency="643" cause="   " /> 

In der neuen Version der API sieht eine Rückerstattung in Python folgendermaßen aus:
 refund = Refund.create({   "amount": {       "value": "2.00",       "currency": "RUB"   },   "payment_id": "21741269-000d-50be-b000-0486ffbf45b0" }) 

Es wird ein klarer JSON zurückgegeben, der in kürzester Zeit mit allem analysiert werden kann:
 {   "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" } 

Schönheit

4. Unterstützung für verschiedene Sprachen und Technologien


Die neue API verfügt außerdem über ein SDK für mobile Geräte , PHP, Python und Node.js. Was auch immer Ihre Backend-Leute tun (außer in sehr exotischen Fällen), Zahlungen über die Kasse sind schnell verbunden. Wenn eine Person länger als ein paar Monate aktiv in Python geschrieben hat, wird sie mit der Integration fertig.

Letztes Jahr haben wir eine Bibliothek für mobile Anwendungen auf iOS und Android veröffentlicht. Mit seiner Hilfe werden Zahlungsformulare in die Anwendung eingebettet und sehen aus wie ein Teil davon (und kein WebView). Benutzer können mit Kreditkarte von einer Yandex.Money-Brieftasche über Google Pay, Apple Pay oder Sberbank Online bezahlen.

Es ist auch einfach zu implementieren - geben Sie die Anweisung an Ihren Entwickler und bald werden Sie sehen, wie wunderbar es geworden ist. In unserem Hub-Blog haben wir bereits ausführlicher beschrieben, wie das mobile SDK die Zufriedenheit für Sie und die Benutzer Ihrer mobilen Anwendungen erhöht.

5. Regelmäßige Zahlungen ohne Schamanismus


Unmittelbar nach der Installation und Konfiguration werden Kartenzahlungen mit Vorautorisierung von Geldern verdient - sie sind standardmäßig in die API integriert.
Es gibt wiederkehrende Zahlungen (sowohl mit einer Karte als auch aus der Brieftasche): Sie müssen diese mit dem Sicherheitsdienst abstimmen, dies war jedoch auch im alten Protokoll der Fall. Wenn für eine wiederkehrende Zahlung eine Karte mit obligatorischem 3D-Secure verwendet wird, gibt die neue API zunächst einen Link dazu zurück.
Im Allgemeinen ist alles einfacher geworden - auch hier müssen Sie keine langen Rituale mit MWS durchführen, um Zertifikate und alle anderen Kryptowährungen zu erhalten.

6. Automatische Benachrichtigungen über Änderungen des Zahlungsstatus


Früher mussten Sie den Status jeder Zahlung manuell überprüfen. Wenn sich diese nun geändert hat, erhält der Entwickler automatisch eine Benachrichtigung.
In API v3 sind vier Arten der automatischen Benachrichtigung über den Zahlungsstatus integriert:
  1. "Warten auf Bestätigung durch den Händler nach Zahlungseingang",
  2. "Bezahlt"
  3. "Storniert oder Fehler während der Zahlung aufgetreten",
  4. "Zahlung zurückgegeben."

Auf dem alten Protokoll mussten wir eine komplexe MWS-Methode listOrders schreiben, die die Liste und Eigenschaften von Aufträgen zeigte. 12 Parameter, komplexe Logik zum Senden einer Anfrage und eine interessante Gelegenheit, eine Antwort im CSV-Format zu erhalten:

 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 

In der neuen Version also. Anfrage:
 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. Es ist sofort klar, an welchem ​​Punkt der Fehler aufgetreten ist


Wenn die Zahlung fehlgeschlagen ist, macht die neue API anstelle von „etwas ist schief gelaufen“ klar, warum dies passiert ist. Beispielsweise hat die Karte kein Geld mehr oder der Benutzer wollte über Sberbank Online bezahlen, war jedoch nicht verbunden.
Gelegentlich kann es kurzfristig vorkommen, dass „etwas schief gelaufen ist“ - wir kämpfen natürlich mit ihnen (die leitende Redakteurin Natasha nickt mir zu und zeigt mit dem Daumen), aber manchmal, um Unterschiede in der Fehlerzuordnung zwischen verschiedenen Banken oder unerwartetes Softwareverhalten vorherzusagen unmöglich. Auch für uns.
Wenn die Zahlung storniert wird, ist die Antwort von der API im Allgemeinen sofort klar. Aus folgenden Gründen:
 { "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. Alles kann überprüft werden, bevor Sie beginnen


Um Testschlüssel zu erhalten und zu sehen, wie alles funktioniert, müssen Sie sich in Ihrem Yandex.Cash-Konto registrieren. Dazu benötigen Sie einen Benutzernamen bei Yandex und die Firmen-TIN. Wählen Sie im Fragebogen die Selbstregistrierung - in einer Minute wird eine Testschaltung erstellt und Sie können überprüfen, wie die Zahlungen verlaufen.

Bevor wir diese Funktion gestartet haben, war eine Testumgebung verfügbar, in der Sie die API v3 mit dem Insomnia REST-Client testen können. Es gibt Beispiele für die Zahlung per Kreditkarte, die deutlich zeigen, welche Anfrage gesendet wird, welche Antwort zurückgegeben wird und was in allen Phasen des Datenaustauschprozesses geschieht.



Für alle Phasen der Integration und Wartung haben wir eine Schritt-für-Schritt-Anleitung in Russisch und Englisch sowie eine noch detailliertere API-Referenz .

Wechseln Sie im Allgemeinen zur neuen API, falls noch nicht geschehen , oder stellen Sie eine Verbindung zu Yandex.Checkout her - alles ist bereit für Ihren Besuch dort.

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


All Articles