PayPal
Effectuer un paiement PayPal
Recherche…
Paramètres
| Paramètre | Détails |
|---|---|
| identité du client | Votre identifiant de client d'application PayPal (identifiants OAuth 2) |
| liens | Objet de référence simple pour tous les liens de retour HATEOAS de PayPal |
| paymentId | L'identifiant du paiement retourné par PayPal afin de compléter le paiement |
| payerId | L'identifiant du payeur retourné de PayPal afin de compléter le paiement |
| Pay Pal | Référence du SDK du nœud PayPal |
| payReq | Objet JSON contenant des informations de paiement pour la transaction |
| req | L'objet Request de la requête du serveur |
| res | L'objet réponse de la requête du serveur |
| secret | Votre secret d'application PayPal (identifiants OAuth 2) |
Remarques
Ces exemples expliquent comment traiter un paiement via PayPal en utilisant les kits de développement PayPal. Ce sont des exemples de demandes simples qui décrivent le processus en plusieurs étapes pour autoriser cette option de paiement.
Exemple de serveur Node Express
Dans cet exemple, nous allons configurer une intégration de serveur Express pour afficher comment traiter un paiement avec PayPal à l'aide du SDK Node de PayPal. Nous utiliserons une structure JSON statique pour les détails du paiement, par souci de concision.
Nous suivrons trois étapes générales lors de la création des fonctions pour gérer le paiement PayPal:
- Nous créons un objet JSON contenant le paiement que nous avons l'intention de traiter via PayPal. Nous l'envoyons ensuite à PayPal pour obtenir un lien vers lequel l'utilisateur sera redirigé afin de confirmer le paiement.
- Ensuite, nous redirigeons l'utilisateur vers PayPal pour confirmer le paiement. Une fois confirmé, PayPal redirige l'utilisateur vers notre application.
- Une fois retourné à l'application, nous complétons le paiement au nom de l'utilisateur.
En décomposant cette application en une simple application de noeud, nous commençons par obtenir le kit de développement PayPal Node:
npm install paypal-rest-sdk
Ensuite, nous configurons la configuration de l'application et les packages.
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
});
Nous avons besoin de quatre exigences pour cette application:
- Le package HTTP pour notre serveur.
- Le package SDK PayPal Node.
- Le package bodyParser pour travailler avec des corps encodés en JSON.
- Le framework Express pour notre serveur.
Les lignes suivantes définissent des variables pour l'ID client et le secret obtenus lors de la création d'une application . Nous avons ensuite configuré bodyParser pour autoriser les corps codés JSON, puis configurer notre application à l'aide des détails de l'application et spécifier l'environnement dans lequel nous travaillons (en direct pour la production ou le sandbox pour les tests).
Maintenant, créons la route pour créer une demande de paiement avec 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');
}
}
});
});
La première chose à faire est de configurer l'objet JSON de demande de paiement, qui contient les informations nécessaires à PayPal pour créer le paiement. Nous définissons l' intent de sale , spécifiez les URL de redirection (où PayPal doit renvoyer l'utilisateur après avoir confirmé / annulé le paiement), ajoutez une payment_method de payment_method de paypal pour signaler que nous effectuerons un paiement PayPal, puis spécifiez les informations de transaction pour le payeur à confirmer.
Nous appelons alors payment.create(...) , en passant notre objet payReq . Cela enverra la demande de paiement à PayPal. Une fois que retourne, et réussit, nous pouvons boucle à travers les fournis HATEOAS liens dans l'objet de retour pour extraire l'URL que nous devons rediriger l'utilisateur vers, qui est étiqueté sous approval_url .
Le format des liens HATEOAS peut entraîner un code de référence fragile s’il est utilisé directement. Nous parcourons donc tous les liens fournis et les plaçons dans un objet de référence mieux adapté aux modifications futures. Si l' approval_url se trouve alors dans cet objet, nous redirigeons l'utilisateur.
À ce stade, l'utilisateur est redirigé vers PayPal pour confirmer le paiement. Une fois qu'ils le font, ils sont redirigés vers le return_url que nous avons spécifié dans la fonction createPayment(...) .
Nous devons maintenant fournir un itinéraire pour gérer ce retour, afin de compléter le paiement.
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');
}
}
});
});
Lorsque l'utilisateur est renvoyé à votre application, trois paramètres de chaîne de requête seront envoyés avec le paymentId , le PayerID et le token . Il suffit de traiter les deux premiers.
Nous extrayons les paramètres et plaçons le PayerID dans un objet simple pour le besoin de l'étape d'exécution du paiement. Ensuite, un appel est effectué à payment.execute(...) , en transmettant ces deux paramètres, afin de compléter le paiement.
Une fois cette demande effectuée, nous payment.state si le paiement a été effectué avec succès en vérifiant si payment.state est défini sur approved . Si c'est le cas, nous pouvons stocker ce dont nous avons besoin à partir de l'objet de paiement renvoyé.
Notre dernière étape consiste à initialiser notre serveur et à écouter le trafic entrant sur les routes que nous avons spécifiées.
//create server
http.createServer(app).listen(3000, function () {
console.log('Server started: Listening on port 3000');
});
Une fois le serveur initialisé, aller à http://localhost:3000/create initialise le processus de paiement.