Sätt att hantera PayPal-återbetalningar i Rails

PayPal Checkout inkluderar betalningslösningar som sträcker sig från enkla till robusta som låter handlarna såväl som utvecklare välja ett integrationsalternativ som kan vara bäst lämpat för deras webbplats och kunder.

För att integrera Paypal Payment Gateway måste vi göra följande:

1. Har ett PayPal-företag eller ett Premier-konto.
2. Skapa en PayPal-app och få en åtkomsttoken. När vi skapar en PayPal-app genererar PayPal en uppsättning OAuth client_id och hemliga nycklar för applikationen. PayPal genererar dessa nycklar för både PayPals sandlåda och Live-miljöer. För att få en åtkomsttoken, skicka in autentiseringsuppgifterna för client-id:secret i auktoriseringshuvudet. Vi använder åtkomsttoken för autentisering när vi gör REST API-förfrågningar.
3. För att utföra ett heltäckande test av vår Express Checkout med In-Context-integrering, skapa både säljar- och köparkonton i PayPal sandlåda miljö.
https://www.sandbox.paypal.com/in/webapps/mpp/home
Handlare : Välj företagskontotyp och ange en e-postadress och ett lösenord.
Köpare: Välj den personliga kontotypen och ange ett högt PayPal-saldo, till exempel 5000.

När vi har skapat ett Paypal-sandlådekonto, klicka sedan på länken "Profil" för det kontot, titta under fliken "API-uppgifter". Vi kommer att ha följande information;

  • Paypal API användarnamn
  • Paypal API-signatur
  • Paypal API-lösenord

Obs: När vi är redo att gå live skulle vi bara använda inloggningsuppgifterna från vårt riktiga PayPal-konto istället för de från vårt sandlådekonto. Inloggningsuppgifterna finns i området "Min profil" under den vänstra fliken "Mina säljverktyg" under alternativet "API-åtkomst"

Hur man hanterar Paypal-återbetalningar i Rails:

Metod 1:

Paypal Rest API;

För mer komplexa säljarwebbplatser kan direktanrop till PayPals API:er för en Express Checkout-integration vara en mer lämplig integration.
REST API:er — Vi kan utveckla en Express Checkout-integration med PayPal REST API:er.

För att integrera Express Checkout med In-Context-flöde;
https://developer.paypal.com/docs/api/
ELLER
PayPal REST API Ruby SDK (paypal-sdk-rest gem):
PayPal REST SDK tillhandahåller Ruby API:er för att skapa, bearbeta och hantera betalningar.

Installation:
Lägg till pärlan vår applikation, i Gemfile:

pärla 'paypal-sdk-rest'

Och kör sedan:

$-paketinstallation

Konfiguration:

skenor g paypal:sdk:install

Återbetalar en transaktion:
Alla transaktioner vi kan göra en återbetalning (både direkta och inhämtade betalningar):

  • Återbetala en genomförd direktbetalning (försäljning)
  • Återbetala en auktoriserad och inhämtad betalning (capture)

Återbetala en genomförd betalning (försäljning):
Om vi måste återbetala en genomförd betalning, eller försäljning, tillhandahålla det försäljnings-id som gavs till oss som svar på en genomförd betalning tillsammans med en tom JSON-nyttolast för en full återbetalning och för partiella återbetalningar, kan vi istället inkludera ett beloppsobjekt i JSON-nyttolasten .

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

Obs: Vi bör ersätta alla samtalsspecifika parametrar, såsom tokens och ID:n, med våra egna.
Svarsstatus för återbetalningen:

  • i väntan på- Återbetalningen väntar.
  • avslutad- Återbetalningen har slutförts.
  • misslyckades- Återbetalningen misslyckades.

Återbetala en inhämtad betalning;
Vi kan också återbetala en hämtad betalning:

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

 

Obs: Vi måste tillhandahålla ett beloppsobjekt för både hel och partiell återbetalning.

curl -v https://api.sandbox.paypal.com/v1/payments/capture/CARMAXYZC6136044L/refund -H "Content-Type:application/json" -H "Authorization: Bearer Access-Token" -d '{ " amount": { "currency": "USD", "total": "50,54" }, "description": "Detta är beskrivningen av återbetalningen." }'

Referens: https://developer.paypal.com

Metod 2:

Paypal återbetalning genom att använda Active Merchant Gem:

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

I vår ansökan;

config/environment/development.rb config.after_initialize gör ActiveMerchant::Billing::Base.mode = :test ::GATEWAY = ActiveMerchant::Billing::PaypalGateway.new( :login => "säljare_12298991731", . lösenord => "FXWU58S7KXFC6HBE", :signature => "AGjv6SW.mTiKxtkm6L9DcSUCUgePAUDQ3L-kTdszkPG8mRfjaRZDYtSu" ) end

Återbetalar en transaktion:
Ta en titt på paypal_common_api.rb fil i Active Merchant Gem;
https://github.com/activemerchant/active_merchant/blob/master/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb

1. För ett full återbetalningskort noll för beloppet:

gateway.refund noll, 'CARMAXYZC6136044L'

Detta gör automatiskt att :refund_type blir "Full".
2. För en partiell återbetalning skicka bara beloppet som vanligt:

gateway.refund 100, 'CARMAXYZC6136044L'
def refund(money, identification, options = {}) commit 'RefundTransaction', build_refund_request(money, identification, options) end

Ex:

Gateway.refund(nil,'CARMAXYZC6136044L') => Full återbetalning.
Gateway.refund(798,'CARMAXYZC6136044L') => Delvis återbetalning.

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


Metod 3:

Använder Braintree Gem;

Braintree Integration:

Krav:

  • Transaktionsstatus måste regleras eller regleras.
  • Återbetalningsbeloppet kan inte vara större än det återstående icke-återbetalda beloppet för den ursprungliga transaktionen.
  • Transaktionen kan inte återbetalas igen efter att ha blivit helt återbetald.

Återbetalar en transaktion:
För att utfärda en återbetalning med API:t behöver vi bara köra en Transaction.refund() API-begäran och kräver bara ett transaktions-id för att återbetala. Alternativt kan vi skicka ett återbetalningsbelopp om det finns ett krav på partiell återbetalning, och vi kan skicka ett order_id om det skiljer sig från det ursprungliga order-ID:t.

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

Full återbetalning:

resultat = Braintree::Transaction.refund("CARMAXYZC6136044L", noll)

Delvis återbetalning:

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

resultat.framgång?
#=> sant
resultat.transaktionsbelopp.till_f
#=> 40,00

Obs: Endast full återbetalning tillåts för transaktioner som hålls i Escrow (Behåll en underhandlares transaktionsmedel tills vi ringer ytterligare ett samtal för att frigöra dem). En partiell återbetalning av en Escrow-transaktion kommer att leda till ett valideringsfel.
https://developers.braintreepayments.com/guides/braintree-marketplace/create/ruby#holding-funds-in-escrow

LUBAIB CEEJEY
Sr Ruby on Rails utvecklare

Prenumerera för de senaste uppdateringarna

relaterade inlägg

Om inläggsförfattare

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *


sv_SESwedish