Sök…


parametrar

Parameter detaljer
Klient ID Ditt PayPal-klient-ID (OAuth 2-referenser)
länkar Enkelt referensobjekt för alla retur HATEOAS-länkar från PayPal
paymentId Betalningens ID returnerades från PayPal för att slutföra betalningen
payerId Betalarens ID återlämnades från PayPal för att slutföra betalningen
paypal PayPal-nod SDK-referens
payReq JSON-objekt som innehåller betalningsinformation för transaktion
req Begäran objektet från servern begäran
res Svarobjektet från serverbegäran
hemlighet Din PayPal-applikationshemlighet (OAuth 2-referenser)

Anmärkningar

Dessa prover täcker hur man behandlar en betalning via PayPal med PayPal SDK: er. Detta är enkla förfrågningsprover som beskriver flerstegsprocessen för att tillåta detta betalningsalternativ.

Exempel på Node Express-server

I det här exemplet kommer vi att konfigurera en Express-serverintegration för att visa hur man behandlar en betalning med PayPal med PayPal Node SDK. Vi kommer att använda en statisk JSON-struktur för betalningsinformation för korthet.

Det finns tre allmänna steg som vi kommer att följa när vi bygger ut funktionerna för att hantera PayPal-betalningen:

  1. Vi skapar ett JSON-objekt som innehåller betalningen som vi tänker behandla via PayPal. Vi skickar det sedan till PayPal för att få en länk för att omdirigera användaren till för att bekräfta betalning.
  2. Därefter omdirigerar vi användaren till PayPal för att bekräfta betalningen. När det har bekräftats omdirigerar PayPal användaren tillbaka till vår applikation.
  3. När vi har returnerats till appen slutför vi betalningen för användarens räkning.

Genom att dela upp detta som en enkel Node-app börjar vi med att skaffa PayPal Node SDK från NPM:

npm install paypal-rest-sdk

Därefter ställer vi in appkonfigurationen och paketen.

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
});

Vi kräver fyra krav för den här appen:

  1. HTTP-paketet för vår server.
  2. PayPal Node SDK-paketet.
  3. BodyParser-paketet för att arbeta med JSON-kodade organ.
  4. Express-ramverket för vår server.

De kommande raderna skapar variabler för klient-ID och hemlighet som erhölls när du skapade en applikation . Vi ställer sedan in bodyParser att möjliggöra JSON-kodade organ, konfigurerar sedan vår applikation med hjälp av applikationsinformationen och specificerar den miljö som vi arbetar i (lever för produktion eller sandlåda för testning).

Låt oss nu skapa vägen för att skapa en betalningsbegäran med 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');
            }
        }
    });
});

Det första vi gör är att ställa in JSON-objektet för betalningsbegäran, som innehåller den information som vi behöver förse PayPal med för att skapa betalningen. Vi sätter intent att sale , specificera omdirigerings-URL: er (där PayPal ska vidarebefordra användaren till efter att de har bekräftat / avbokat betalningen), lägg till en payment_method för paypal att signalera att vi kommer att göra en PayPal-betalning, ange sedan transaktionsinformationen för betalaren för att bekräfta.

Vi kallar sedan payment.create(...) och skickar in vårt payReq objekt. Detta skickar en betalningsbegäran till PayPal. När det kommer tillbaka och är framgångsrikt kan vi gå igenom de medföljande HATEOAS- länkarna i returobjektet för att extrahera URL: en som vi behöver omdirigera användaren till, som är märkt under approval_url .

Formatet för HATEOAS-länkar kan orsaka ömtålig referenskod om det används direkt, så vi går igenom alla tillhandahållna länkar och lägger dem i ett bättre referensobjekt för framtida bevis mot förändringar. Om approval_url sedan hittas i det objektet omdirigerar vi användaren.

Vid denna punkt omdirigeras användaren till PayPal för att bekräfta betalningen. När de gör det, omdirigeras de tillbaka till return_url som vi angav i createPayment(...) -funktionen.

Vi måste nu tillhandahålla en rutt för att hantera den returen för att slutföra betalningen.

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');
            }
        }
    });
});

När användaren återgår till din app kommer det att finnas tre frågesträngparametrar som också kommer att skickas, paymentId , PayerID och token . Vi behöver bara ta itu med de första två.

Vi extraherar parametrarna och placerar PayerID i ett enkelt objekt för behovet av betalningssteg. Därefter görs ett samtal till payment.execute(...) och skickar in de två parametrarna för att slutföra betalningen.

När denna begäran har gjorts ser vi om betalningen har genomförts genom att kontrollera om payment.state är inställd på approved . I så fall kan vi lagra det vi behöver från betalningsobjektet som returneras.

Vårt sista steg är att initiera vår server och lyssna på trafik som kommer till de rutter vi angav.

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

När servern har initialiserats går du till http://localhost:3000/create initialiserar betalningsprocessen.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow