Zoeken…


parameters

Parameter Details
klant identificatie Uw PayPal-applicatie klant-ID (OAuth 2-gegevens)
koppelingen Eenvoudig referentieobject voor alle retour HATEOAS-links van PayPal
paymentId De ID van de betaling die door PayPal is geretourneerd om de betaling te voltooien
payerId De ID van de betaler die is teruggestuurd van PayPal om de betaling te voltooien
paypal PayPal-knooppunt SDK-referentie
payReq JSON-object met betalingsinformatie voor transactie
req Het aanvraagobject van het serververzoek
res Het responsobject van het serververzoek
geheim Uw PayPal-aanvraaggeheim (OAuth 2-gegevens)

Opmerkingen

In deze voorbeelden wordt uitgelegd hoe een betaling via PayPal kan worden verwerkt met behulp van de PayPal-SDK's. Dit zijn eenvoudige aanvraagvoorbeelden die het meerstappenproces beschrijven voor het toestaan van deze betalingsoptie.

Node Express Server-voorbeeld

In dit voorbeeld gaan we een Express-serverintegratie instellen om weer te geven hoe een betaling met PayPal wordt verwerkt, met behulp van de PayPal Node SDK. Kortheidshalve zullen we een statische JSON-structuur gebruiken voor de betalingsgegevens.

Er zijn drie algemene stappen die we zullen volgen bij het opbouwen van de functies om de PayPal-betaling af te handelen:

  1. We maken een JSON-object met de betaling die we via PayPal willen verwerken. We sturen dat vervolgens naar PayPal om een link te verkrijgen waarnaar de gebruiker wordt doorverwezen om de betaling te bevestigen.
  2. Vervolgens verwijzen we de gebruiker naar PayPal om de betaling te bevestigen. Na bevestiging verwijst PayPal de gebruiker terug naar onze applicatie.
  3. Eenmaal terug in de app, voltooien we de betaling namens de gebruiker.

Dit opsplitsen als een eenvoudige Node-app, beginnen we met het verkrijgen van de PayPal Node SDK van NPM:

npm install paypal-rest-sdk

Vervolgens stellen we de app-configuratie en pakketten in.

var http = require('http'),
    paypal = require('paypal-rest-sdk'),
    bodyParser = require('body-parser'),
    app = require('express')();

var client_id = 'YOUR APPLICATION CLIENT ID';
var secret = 'YOUR APPLICATION SECRET';

//allow parsing of JSON bodies
app.use(bodyParser.json());

//configure for sandbox environment
paypal.configure({
    'mode': 'sandbox', //sandbox or live
    'client_id': client_id,
    'client_secret': secret
});

We hebben vier vereisten nodig voor deze app:

  1. Het HTTP-pakket voor onze server.
  2. Het PayPal Node SDK-pakket.
  3. Het bodyParser-pakket voor het werken met JSON-gecodeerde lichamen.
  4. Het Express-framework voor onze server.

De volgende paar regels stellen variabelen in voor de client-ID en het geheim die werden verkregen bij het maken van een applicatie . We hebben vervolgens bodyParser ingesteld om JSON-gecodeerde lichamen toe te staan, configureren vervolgens onze applicatie met behulp van de applicatiegegevens en specificeren de omgeving waarin we werken (live voor productie of sandbox voor testen).

Laten we nu de route maken voor het maken van een betalingsverzoek met PayPal.

app.get('/create', function(req, res){
    //build PayPal payment request
    var payReq = JSON.stringify({
        'intent':'sale',
        'redirect_urls':{
            'return_url':'http://localhost:3000/process',
            'cancel_url':'http://localhost:3000/cancel'
        },
        'payer':{
            'payment_method':'paypal'
        },
        'transactions':[{
            'amount':{
                'total':'7.47',
                'currency':'USD'
            },
            'description':'This is the payment transaction description.'
        }]
    });

    paypal.payment.create(payReq, function(error, payment){
        if(error){
            console.error(error);
        } else {
            //capture HATEOAS links
            var links = {};
            payment.links.forEach(function(linkObj){
                links[linkObj.rel] = {
                    'href': linkObj.href,
                    'method': linkObj.method
                };
            })
        
            //if redirect url present, redirect user
            if (links.hasOwnProperty('approval_url')){
                res.redirect(links['approval_url'].href);
            } else {
                console.error('no redirect URI present');
            }
        }
    });
});

Het eerste wat we doen is het JSON-object voor betalingsaanvragen instellen, dat de informatie bevat die we PayPal nodig hebben om de betaling te maken. Wij stellen de intent tot sale , geeft u de redirect URL's (waar PayPal de gebruiker moet doen toekomen aan nadat ze bevestigen / annuleren van de betaling), voeg in een payment_method van paypal om het signaal dat we een PayPal-betaling te verrichten, dan is de transactie-informatie voor specificeren de betaler om te bevestigen.

We noemen vervolgens payment.create(...) en geven ons payReq object door. Hierdoor wordt het betalingsverzoek aan PayPal verzonden. Zodra dat terugkeert, en succesvol is, kunnen we de meegeleverde HATEOAS- koppelingen in het retourobject doorlopen om de URL te extraheren waarnaar we de gebruiker moeten omleiden, die is gelabeld onder approval_url .

Het formaat voor de HATEOAS-koppelingen kan breekbare referentiecode veroorzaken als deze direct wordt gebruikt, dus we doorlopen alle aangeboden koppelingen en plaatsen deze in een beter referentieobject om de toekomst tegen wijzigingen te beschermen. Als de approval_url vervolgens in dat object wordt gevonden, wordt de gebruiker omgeleid.

Op dit punt wordt de gebruiker omgeleid naar PayPal om de betaling te bevestigen. Zodra ze dat doen, worden ze teruggeleid naar de return_url die we hebben opgegeven in de functie createPayment(...) .

We moeten nu een route opgeven om die retour af te handelen, om de betaling te voltooien.

app.get('/process', function(req, res){
    var paymentId = req.query.paymentId;
    var payerId = { 'payer_id': req.query.PayerID };

    paypal.payment.execute(paymentId, payerId, function(error, payment){
        if(error){
            console.error(error);
        } else {
            if (payment.state == 'approved'){ 
                res.send('payment completed successfully');
            } else {
                res.send('payment not successful');
            }
        }
    });
});

Wanneer de gebruiker wordt teruggebracht naar uw app, worden er ook drie queryreeksparameters meegestuurd, de paymentId , PayerID en token . We hoeven alleen de eerste twee te behandelen.

We extraheren de parameters en plaatsen de PayerID in een eenvoudig object voor de noodzaak van de stap van het uitvoeren van de betaling. Vervolgens wordt een beroep gedaan op payment.execute(...) , waarbij deze twee parameters worden doorgegeven, om de betaling te voltooien.

Zodra dat verzoek is gedaan, kijken we of de betaling is voltooid door te controleren of payment.state is ingesteld op approved . Als dat zo is, kunnen we opslaan wat we nodig hebben van het geretourneerde betalingsobject.

Onze laatste stap is om onze server te initialiseren en te luisteren naar verkeer dat naar de door ons opgegeven routes komt.

//create server
http.createServer(app).listen(3000, function () {
   console.log('Server started: Listening on port 3000');
});

Nadat de server is geïnitialiseerd, wordt het betalingsproces geïnitialiseerd door naar http://localhost:3000/create te gaan.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow