2015-10-08 20 views
9

Ich war auf der Suche nach einer Zahlungslösung für meine Web-App. Ich habe gesehen, dass es APIs wie Stripe (für Kreditkarten) oder PayPal-Plugins gibt, die mit bestimmten Zahlungsmethoden umgehen können.Unterschied zwischen Omnipay und Payum

Dann sah ich, dass es Bibliotheken gibt, die mit allen Arten von Zahlungsmethoden wie Payum (https://github.com/Payum/Payum) oder Omnipay (https://github.com/thephpleague/omnipay) umgehen können.

Wenn ich es richtig verstanden habe, sind sie beide die gleiche Art von Bibliothek: Sie beide verarbeiten Zahlungen verschiedener Methoden in einer standardisierten Weise. Ich habe jedoch keinen Vergleich zwischen den beiden gefunden, sondern Lösungen, wie Payum OmniPay einbeziehen kann. Also war ich verwirrt. Also meine Frage:

Bedeckt Omnipay die gleichen Zwecke wie Payum. Wenn ja, welche hat welche Vorteile. Wenn nein, welche Teile des Zahlungsprozesses werden genau ausgeführt?

Antwort

27

Payum vs Omnipay

Die kurze Antwort ist Payum gleiche Funktionalität wie Omnipay sowie einige zusätzliche Funktionen zur Verfügung stellt.

Payum funktioniert am besten, wenn Sie ein Zahlungsmodell mit einer Conversion-Aktion kombinieren. Das Modell darf nicht nur eine Payum’s one sein, ich ermutige Sie, Ihre eigene oder eine aus einer ecommerce platform zu verwenden. Die Idee ist einfach: Sie senden eine Anfrage an Payum, um Ihr Modell zu erfassen. In der Aktion Sie convert the payment model to a gateway specific format, höchstwahrscheinlich ein Array. Die Schönheit dieses Ansatzes ist, dass der Code nicht mehr geändert wird, und sieht wie folgt aus:

$gateway->execute(new Capture($payment)); 

alle Unterschiede des Gateways sind in einem Gateway versteckt. Natürlich unterstützt Payum ein Gateway-spezifisches Format oder auch ein Payum-Zahlungsmodell. Im Falle von Omnipay können Sie ein Stripe Gateway nicht einfach gegen ein Paypal austauschen, da sie sich anders verhalten und, was noch wichtiger ist, sie benötigen andere Daten. Stripe verlangt, dass eine Kreditkarte zur Verfügung gestellt wird, bei der Paypal sich nicht darum kümmert, sondern stattdessen die Rückgabe und die Stornierung der URLs wünscht. Sie müssen diese Unterschiede in Ihrem Code widerspiegeln, ist das eine Abstraktion? Übrigens generieren Payum URLs für Sie und sie sind sicher (wir sprechen später darüber).

Manchmal müssen Sie mehr Details über den Zahlungsvorgang oder einen Zahler oder mehr Informationen über einen Fehler erhalten. Payum bietet Ihnen Zugriff auf alle Daten, die an einer Kommunikation zwischen Ihrem Code und einem Payment-Gateway beteiligt sind. Das Datenformat ist eine Zahlungsmethode. Wenn Sie also mit Paypal protocol (for example) vertraut sind, können Sie leicht verstehen, was dort vor sich geht. Ein weiteres gutes Beispiel ist Klarna Checkout. Es gibt Versandadresse, Rechnungsadresse, Geschlecht und Geburtsdatum zurück. Mit Payum können Sie diese einfach bezahlen und für Ihre Bedürfnisse nutzen.

Payum gibt Ihnen eine bessere Statusbehandlung. Omnipay bietet nur zwei Statuserfolge und ist fehlgeschlagen, aber es ist nicht genug. Zum Beispiel gibt Paypal manchmal anstehenden Status wegen multi currency issue zurück. In diesem Fall sagt Omnipay, dass die Zahlung fehlgeschlagen ist, aber in der Tat ist es nicht. Oder Benutzer können die Zahlung auf Paypal-Seite stornieren, Omnipay wird Ihnen sagen, dass es fehlgeschlagen ist, aber es ist nicht wirklich wahr. Wenn Sie einen Status benötigen, der standardmäßig nicht von Payum bereitgestellt wird, können Sie ihn einfach hinzufügen. Haben Sie bereits Zahlungsstatus, vielleicht Ihre ecommerce platform provide sie und Sie möchten wiederverwenden, kein Problem könnte Payum anpassen, um sie zu verwenden.

Manchmal möchten Benutzer Sie betrügen oder weniger für das Zeug bezahlen. Als Entwickler müssen Sie darüber nachdenken und sich um Ihre Daten kümmern. Was stellen Sie einem Benutzer zur Verfügung? Könnte es falsch verwendet werden? Sie können sich nicht auf einen in der URL angegebenen Betrag verlassen, bis Sie ihn validieren. Zum Beispiel sendet Paypal eine Push-Benachrichtigung an die Benachrichtigungs-URL, die Sie zuvor an sie gesendet haben.Payum generiert für Sie eine solche URL und wenn die Benachrichtigung zurückkommt, validiert sie diese. Sie erhalten einzigartige, sichere URLs aus der Box. Die Zahlung, die intern mit dieser URL verknüpft ist, und nach dem Entfernen \ entwerten den URL-Benutzer, der nicht auf die Zahlung dahinter zugreifen kann. Omnipay bietet keine Unterstützung bei der Lösung von Sicherheitsproblemen. Es gibt eine gute Nebenwirkung mit diesen gesicherten URLs. Die gesicherten URLs werden ungültig, wenn sie nicht benötigt werden. Das ist gut, zum Beispiel klickt der Benutzer auf "Zurück" in einem Browser. Er könnte keine zweite Zahlung vornehmen, weil die Kauf-URL nicht mehr existiert, stattdessen wird ein Fehler 404 angezeigt.

Es ist nicht ratsam, Kreditkarten an Ihrer Seite zu lagern, oder? Es gibt keine Entschuldigung, es versehentlich oder nur für einige Sekunden zu speichern. Payum hat ein sensitive value Objekt, das dafür sorgt, dass nichts versehentlich gespeichert wird. Sie können es immer noch speichern, aber dabei sind Sie allein.

Omnipay unterstützt nur Gateways, die zur Gateway-Seite umleiten oder eine Kreditkarte benötigen. Aber es gibt eine Menge anderer Gateways, und sie verhalten sich anders. Zum Beispiel Klarna Checkout require a snippet (iframe) to be rendered, Stripe.Js requires their javascript to be executed auf einer Kaufseite. Stripe Checkout renders its own popup. Payum supports them all, und wie wir am Anfang gesprochen haben, können Sie ohne Änderungen in Ihrem Code von einem Gateway zu einem anderen wechseln. Payum unterstützt nativ kein Gateway, das Sie benötigen? Ich denke nicht, jedes Gateway im Haus neu zu implementieren, ist eine gute Idee. Deshalb ein bridge for Omnipay gateways exists. Es ermöglicht Ihnen, Omnipay-Gateways den Payum-Weg zu nutzen.

Payum versucht standardise the payment flow. Es gibt drei Schritte vorbereiten, erfassen \ autorisieren und fertig. Die erste heißt "vorbereiten" und bei diesem Schritt müssen Sie die Zahlung vorbereiten, Gesamtpreise berechnen, Steuern, Benutzer- oder Versandinformationen erhalten und so weiter. Sobald Sie fertig sind, können Sie den Benutzer zu einem Capture \ Authorize-Schritt weiterleiten. Von hier aus könnte der Benutzer zu einer Gateway-Seite umgeleitet werden oder nach einer Kreditkarte oder etwas anderem gefragt werden. Es hängt davon ab, welches Gateway Sie gewählt haben. Bei "fertig" müssen Sie den Zahlungsstatus erhalten und entsprechend handeln. Omnipay löst diese Aufgabe nur teilweise.

Mit einem Gateway-Fabriken können Sie einfach überschreiben/ersetzen alle Teile des Gateway funktional, oder fügen Sie eine benutzerdefinierte Aktionen, Erweiterungen oder Apis.

Payum hat offizielle Erweiterungen für die meisten modernen Frameworks wie Symfony. Laravel, Silex, Yii, Zend.

Am Ende vergleichen Sie die Eckstein-Schnittstellen von Payum und Omnipay.

Haftungsausschluss: Ich bin der Autor des Payum

+0

Wie kann ich die Kreditkarte Gateway von Offsite abweichen? - https://github.com/thephpleague/omnipay/issues/309 –

+0

Gut geschriebene Antwort – Baig

+0

@MaksimKotlyar Ist Ihre Antwort nach zwei Jahren noch gültig oder hat Omnipay einen besseren Zahlungsfluss implementiert? – riotera