2015-10-08 11 views
9

Stavo cercando una soluzione di pagamento per la mia web-app. Ho visto che ci sono API come stripe (per carte di credito) o plug-in PayPal che possono gestire determinati metodi di pagamento.Differenza tra Omnipay e Payum

Poi ho visto che ci sono liberia che possono gestire tutti i tipi di metodi di pagamento come Payum (https://github.com/Payum/Payum) o Omnipay (https://github.com/thephpleague/omnipay).

Se ho capito bene sono entrambi lo stesso tipo di libreria: entrambi elaborano i pagamenti di vari metodi in modo standardizzato. Tuttavia non ho trovato alcun confronto tra i due, ma le soluzioni su come Payum può includere OmniPay. Quindi mi sono confuso. Quindi la mia domanda:

Omnipay copre gli stessi scopi di Payum. Se sì, quale ha i vantaggi. Se no, quali parti del processo di pagamento stanno implementando esattamente.

risposta

27

Payum vs Omnipay

La risposta breve è Payum fornisce stessa funzionalità Omnipay più alcune caratteristiche extra.

Payum funziona meglio quando si combina un modello di pagamento con un'azione di conversione. Il modello non deve essere solo un Payum’s one, ti incoraggio a utilizzare il tuo o uno da uno ecommerce platform. L'idea è semplice: invii una richiesta a Payum per acquisire il tuo modello. Nell'azione si convert the payment model to a gateway specific format, molto probabilmente un array. La bellezza di questo approccio è che il codice non è mai cambiato, e si presenta così: differenze

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

Tutto del gateway sono nascosti all'interno di un gateway. Ovviamente Payum supporta anche un formato specifico per il gateway o un modello di pagamento di Payum. Nel caso di Omnipay non si può semplicemente sostituire un gateway stripe a uno paypal, perché si comportano in modo diverso e ciò che è più importante richiedono dati diversi. Le strisce richiedono che venga fornita una carta di credito in cui a Paypal non interessa, ma preferisce che vengano restituiti e annullati gli URL. Devi riflettere queste differenze nel tuo codice, è questa astrazione? Tra l'altro Payum genera annulla e restituisce gli URL per te e sono sicuri (ne parliamo dopo).

A volte è necessario ottenere maggiori dettagli sulla transazione di pagamento o un pagatore o ulteriori informazioni su un errore. Payum ti offre l'accesso a tutti i dati che partecipano a una comunicazione tra il tuo codice e un gateway di pagamento. Il formato dei dati è un pagamento specifico, quindi se hai familiarità con Paypal protocol (for example) sarà facile per te capire cosa sta succedendo lì. Un altro buon esempio è Klarna Checkout. Restituisce spedizione \ indirizzi di fatturazione, sesso e data di nascita. Con Payum puoi facilmente ottenerli fuori pagamento e utilizzarli per le tue esigenze.

Payum offre una gestione dello stato migliore. Omnipay fornisce solo due stati di successo e non è riuscito, ma non è sufficiente. Ad esempio, Paypal a volte restituisce lo stato in sospeso a causa di multi currency issue. In questo caso, omnipay dice che il pagamento è fallito, ma in realtà non lo è. O l'utente può annullare il pagamento sul lato Paypal, Omnipay ti dirà che è fallito, ma non è proprio vero. Se hai bisogno di uno stato che non è fornito da Payum per impostazione predefinita, puoi aggiungerlo facilmente. Hai già uno stato di pagamento, forse il tuo ecommerce platform provide e vuoi riutilizzarlo, nessun problema che Payum potrebbe regolare per usarli.

A volte gli utenti vogliono imbrogliarti o pagare meno per il materiale. Come sviluppatore devi pensarci e prendersi cura dei tuoi dati. Cosa esponi a un utente? Potrebbe essere usato nel modo sbagliato? Non puoi fare affidamento su un importo indicato nell'URL, finché non lo convalidi. Ad esempio, Paypal ti invia una notifica push all'URL di notifica che hai precedentemente inviato a loro.Payum genera per te un tale URL e quando la notifica ritorna, lo conferma. Ottieni url esclusivi e protetti dalla scatola. Il pagamento internamente associato a quell'URL e una volta rimosso \ invalidate l'utente url non in grado di accedere al pagamento dietro di esso. Omnipay non fornisce nulla per aiutarti a risolvere i problemi di sicurezza. C'è un buon effetto collaterale con questi URL protetti. Gli URL protetti sono stati invalidati \ cancellati quando non erano necessari. Questo è buono, ad esempio l'utente fa clic sul pulsante "Indietro" in un browser. Non sarebbe in grado di effettuare un secondo pagamento perché l'url di acquisto non esiste più, invece vedrà un errore 404.

Non è una buona pratica conservare le carte di credito al tuo fianco, non è vero? Non ci sono scuse per la memorizzazione accidentale, o solo per pochi secondi. Payum ha un oggetto sensitive value che garantisce che nulla venga salvato accidentalmente. Puoi ancora conservarlo, ma mentre lo fai sei da solo.

Omnipay supporta solo gateway, che eseguono un reindirizzamento verso il gateway o richiedono una carta di credito. Ma ci sono molti altri gateway e si comportano diversamente. Per esempio Klarna Checkout require a snippet (iframe) to be rendered, Stripe.Js requires their javascript to be executed su una pagina di acquisto. Stripe Checkout renders its own popup. Payum supports them all, e come abbiamo parlato all'inizio è possibile passare da un gateway a un altro senza modifiche nel codice. Payum non supporta in modo nativo un gateway di cui hai bisogno? Non penso che il reimplementing di ogni gateway in casa sia una buona idea. Ecco perché uno bridge for Omnipay gateways exists. Ti permette di usare i gateway Omnipay come Payum.

Payum tenta di standardise the payment flow. Ci sono tre passaggi per preparare, acquisire \ autorizzare e terminare. Il primo si chiama "prepara" e in questa fase devi preparare il pagamento, calcolare i prezzi totali, le tasse, ottenere informazioni sull'utente o sulla spedizione e così via. Una volta terminato, è possibile reindirizzare l'utente a un passo acquisizione/autorizzazione, da qui l'utente può essere reindirizzato a un gateway o richiesto una carta di credito o qualcos'altro. Dipende da quale gateway hai scelto. Al passaggio "fatto" devi ottenere lo stato del pagamento e agire in base ad esso. Omnipay risolve solo parzialmente questo compito.

Con le fabbriche di gateway è possibile sovrascrivere facilmente \ sostituire qualsiasi parte del gateway funzionalmente o aggiungere azioni personalizzate, estensioni o apis.

Payum ha estensioni ufficiali per la maggior parte delle strutture moderne come Symfony. Laravel, Silex, Yii, Zend.

Alla fine consente di confrontare le interfacce di pietra angolare di Payum e Omnipay.

Diniego: Io sono l'autore di Payum

+0

Come posso differire la porta d'ingresso della carta di credito da un fuori sede? - https://github.com/thephpleague/omnipay/issues/309 –

+0

Risposta ben scritta – Baig

+0

@MaksimKotlyar La tua risposta è ancora valida dopo due anni o Omnipay ha implementato un flusso di pagamento migliore? – riotera