Möglichkeiten zur Abwicklung von PayPal-Rückerstattungen in Rails

PayPal Checkout umfasst Zahlungslösungen von einfach bis robust, die es Händlern und Entwicklern ermöglichen, eine Integrationsoption auszuwählen, die für ihre Website und Kunden am besten geeignet ist.

Um Paypal Payment Gateway zu integrieren, müssen wir Folgendes tun:

1. Besitzen Sie ein PayPal-Geschäfts- oder Premier-Konto.
2. Erstellen Sie eine PayPal-App und erhalten Sie ein Zugriffstoken. Wenn wir eine PayPal-App erstellen, generiert PayPal einen Satz OAuth-Client-ID und geheime Schlüssel für die Anwendung. PayPal generiert diese Schlüssel sowohl für die PayPal-Sandbox als auch für die Live-Umgebung. Um ein Zugriffstoken zu erhalten, übergeben Sie die client-id:secret-Anmeldeinformationen im Authorization-Header. Wir verwenden das Zugriffstoken zur Authentifizierung, wenn wir REST-API-Anfragen stellen.
3. Um einen End-to-End-Test unseres Express Checkout mit In-Context-Integration durchzuführen, erstellen Sie sowohl Händler- als auch Käuferkonten im PayPal-Sandbox Umfeld.
https://www.sandbox.paypal.com/in/webapps/mpp/home
Händler: Wählen Sie den Kontotyp „Geschäft“ und geben Sie eine E-Mail-Adresse und ein Passwort ein.
Käufer: Wählen Sie den Kontotyp „Persönlich“ und geben Sie einen hohen PayPal-Saldo ein, z. B. 5000.

Sobald wir ein Paypal-Sandbox-Konto erstellt haben, klicken Sie auf den Link „Profil“ für dieses Konto und sehen Sie unter der Registerkarte „API-Anmeldeinformationen“ nach. Wir werden die folgenden Informationen haben;

  • Paypal-API-Benutzername
  • Paypal-API-Signatur
  • Paypal-API-Passwort

Hinweis: Wenn wir bereit sind, live zu gehen, verwenden wir einfach die Anmeldeinformationen unseres echten PayPal-Kontos anstelle der Anmeldeinformationen unseres Sandbox-Kontos. Die Zugangsdaten finden Sie im Bereich „Mein Profil“ unter der linken Registerkarte „Meine Verkaufstools“ unter der Option „API-Zugriff“.

So handhaben Sie Paypal-Rückerstattungen in Rails:

Methode 1:

Paypal Rest API;

Für komplexere Händlerseiten sind direkte Aufrufe von PayPal-APIs für eine Express-Checkout-Integration möglicherweise eine geeignetere Integration.
REST-APIs — Wir können eine Express Checkout-Integration mithilfe von PayPal-REST-APIs entwickeln.

Um den Express Checkout mit dem In-Context-Flow zu integrieren;
https://developer.paypal.com/docs/api/
ODER
PayPal REST API Ruby SDK (paypal-sdk-rest gem):
Das PayPal REST SDK stellt Ruby-APIs zum Erstellen, Verarbeiten und Verwalten von Zahlungen bereit.

Installation:
Fügen Sie den Edelstein unserer Anwendung in Gemfile hinzu:

gem 'paypal-sdk-rest'

Und dann ausführen:

$-Bundle-Installation

Aufbau:

Schienen g paypal:sdk:install

Erstattet eine Transaktion:
Bei jeder Transaktion können wir eine Rückerstattung veranlassen (sowohl direkte als auch erfasste Zahlungen):

  • Rückerstattung einer abgeschlossenen Direktzahlung (Verkauf)
  • Eine autorisierte und erfasste Zahlung zurückerstatten (Erfassung)

Rückerstattung einer abgeschlossenen Zahlung (Verkauf):
Wenn wir eine abgeschlossene Zahlung oder einen Verkauf zurückerstatten müssen, geben Sie die Verkaufs-ID, die uns als Reaktion auf eine abgeschlossene Zahlung gegeben wurde, zusammen mit einer leeren JSON-Nutzlast für eine vollständige Rückerstattung und für Teilrückerstattungen an. Stattdessen können wir ein Betragsobjekt in die JSON-Nutzlast aufnehmen .

curl -v https://api.sandbox.paypal.com/v1/paids/sale/CARMAXYZC6136044L/refund -H "Content-Type:application/json" -H "Authorization: Bearer Access-Token" -d '{} '

Hinweis: Wir sollten alle anrufspezifischen Parameter, wie Token und IDs, durch unsere eigenen ersetzen.
Antwortstatus der Rückerstattung:

  • ausstehend- Die Rückerstattung steht noch aus.
  • vollendet- Die Rückerstattung wurde erfolgreich abgeschlossen.
  • fehlgeschlagen- Die Rückerstattung ist fehlgeschlagen.

Eine erfasste Zahlung zurückerstatten;
Wir können eine eingezogene Zahlung auch zurückerstatten:

API: https://api.paypal.com/v1/zahlungen/capture/{capture_id}/refund

 

Hinweis: Wir müssen sowohl für vollständige als auch für teilweise Rückerstattungen ein Betragsobjekt angeben.

curl -v https://api.sandbox.paypal.com/v1/zahlungen/capture/CARMAXYZC6136044L/refund -H "Content-Type:application/json" -H "Authorization: Bearer Access-Token" -d '{ " amount": { "currency": "USD", "total": "50.54" }, "description": "Dies ist die Beschreibung der Erfassungsrückerstattung." }'

Referenz: https://developer.paypal.com

Methode 2:

Paypal-Rückerstattung über Active Merchant Gem:

ActiveMerchant-Integration: http://railscasts.com/episodes/145-integrating-active-merchant

In unserer Bewerbung;

config/environment/development.rb config.after_initialize do ActiveMerchant::Billing::Base.mode = :test ::GATEWAY = ActiveMerchant::Billing::PaypalGateway.new( :login => "seller_1229899173_biz_api1.xyz.com", : Passwort => „FXWU58S7KXFC6HBE“, :signature => „AGjv6SW.mTiKxtkm6L9DcSUCUgePAUDQ3L-kTdszkPG8mRfjaRZDYtSu“ ) Ende

Erstattet eine Transaktion:
Werfen Sie einen Blick hinein paypal_common_api.rb Datei in Active Merchant Gem;
https://github.com/activemerchant/active_merchant/blob/master/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb

1. Für eine vollständige Rückerstattung gilt kein Betrag für den Betrag:

Gateway.refund nil, 'CARMAXYZC6136044L'

Dadurch wird :refund_type automatisch auf „Full“ gesetzt.
2. Für eine teilweise Rückerstattung überweisen Sie einfach den Betrag wie gewohnt:

Gateway.refund 100, „CARMAXYZC6136044L“
def Rückerstattung(Geld, Identifikation, Optionen = {}) Commit 'RefundTransaction', build_refund_request(Geld, Identifikation, Optionen) Ende

Ex:

Gateway.refund(nil,'CARMAXYZC6136044L') => Vollständige Rückerstattung.
Gateway.refund(798,'CARMAXYZC6136044L') => Teilweise Rückerstattung.

Referenz: http://www.rubydoc.info/github/Shopify/active_merchant/ActiveMerchant/Billing/PaypalCommonAPI


Methode 3:

Verwendung von Braintree Gem;

Braintree-Integration:

Anforderungen:

  • Der Transaktionsstatus muss „abgerechnet“ oder „abgerechnet“ sein.
  • Der Rückerstattungsbetrag darf nicht höher sein als der verbleibende, nicht erstattete Betrag der ursprünglichen Transaktion.
  • Die Transaktion kann nach vollständiger Rückerstattung nicht erneut erstattet werden.

Erstattet eine Transaktion:
Um eine Rückerstattung mit der API zu veranlassen, müssen wir nur eine Transaction.refund()-API-Anfrage ausführen und benötigen für die Rückerstattung lediglich eine Transaktions-ID. Optional können wir einen Rückerstattungsbetrag übergeben, wenn eine teilweise Rückerstattung erforderlich ist, und wir können eine order_id übergeben, wenn diese von der ursprünglichen Bestell-ID abweicht.

result = Braintree::Transaction.refund("the_transaction_id")

Komplette Rückerstattung:

result = Braintree::Transaction.refund("CARMAXYZC6136044L", nil)

Teilerstattung:

result = Braintree::Transaction.refund("CARMAXYZC6136044L", "40.00")

Ergebnis.Erfolg?
#=> wahr
result.transaction.amount.to_f
#=> 40,00

Hinweis: Für Transaktionen, die auf einem Treuhandkonto gehalten werden, sind nur vollständige Rückerstattungen zulässig (behalten Sie die Transaktionsgelder eines Unterhändlers, bis wir einen weiteren Anruf zur Freigabe tätigen). Eine teilweise Rückerstattung einer Treuhandtransaktion führt zu einem Validierungsfehler.
https://developers.braintreepayments.com/guides/braintree-marketplace/create/ruby#holding-funds-in-escrow

LUBAIB CEEJEY
Senior Ruby on Rails-Entwickler

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman