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:
- "Warten auf Bestätigung durch den Händler nach Zahlungseingang",
- "Bezahlt"
- "Storniert oder Fehler während der Zahlung aufgetreten",
- "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.