PayPal
Effectuer un paiement par carte de crédit (nœud)
Recherche…
Paramètres
| Paramètre | Détails |
|---|---|
| card_data | Objet JSON contenant des informations de paiement pour la transaction |
| credit_card_details | Objet JSON contenant des données de carte de crédit envoyées à PayPal |
| identité du client | Votre identifiant de client d'application PayPal (identifiants OAuth 2) |
| Pay Pal | Référence du SDK du nœud PayPal |
| secret | Votre secret d'application PayPal (identifiants OAuth 2) |
| uuid | Référence au package node-uuid |
Remarques
Cet exemple amène l'utilisateur à créditer une simple transaction par carte de crédit à l'aide des kits de développement PayPal.
Exemple de noeud
Commencez par installer le module PayPal Node à partir de NPM
npm install paypal-rest-sdk
Dans votre fichier d'application, ajoutez les informations de configuration du SDK
var paypal = require('paypal-rest-sdk');
var client_id = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';
paypal.configure({
'mode': 'sandbox', //sandbox or live
'client_id': client_id,
'client_secret': secret
});
Nous ajoutons l'exigence pour le SDK, puis nous configurons des variables pour l'ID client et le secret obtenus lors de la création d'une application . Nous configurons ensuite notre application en utilisant ces détails et spécifions l'environnement dans lequel nous travaillons (live ou sandbox).
Ensuite, nous configurons l'objet JSON contenant les informations de paiement pour le payeur.
var card_data = {
"intent": "sale",
"payer": {
"payment_method": "credit_card",
"funding_instruments": [{
"credit_card": {
"type": "visa",
"number": "4417119669820331",
"expire_month": "11",
"expire_year": "2018",
"cvv2": "874",
"first_name": "Joe",
"last_name": "Shopper",
"billing_address": {
"line1": "52 N Main ST",
"city": "Johnstown",
"state": "OH",
"postal_code": "43210",
"country_code": "US" }}}]},
"transactions": [{
"amount": {
"total": "7.47",
"currency": "USD",
"details": {
"subtotal": "7.41",
"tax": "0.03",
"shipping": "0.03"}},
"description": "This is the payment transaction description."
}]};
Ajouter une intent de sale et une payment_method de credit_card de credit_card . Ensuite, ajoutez les détails de la carte et de l'adresse de la carte de crédit dans funding_instruments , ainsi que le montant à facturer pour les transactions . Plusieurs objets de transaction peuvent être placés ici.
Enfin, nous faisons une demande à payment.create(...) , en passant notre objet card_data , afin de traiter le paiement.
paypal.payment.create(card_data, function(error, payment){
if(error){
console.error(error);
} else {
console.log(payment);
}
});
Si la transaction a réussi, nous devrions voir un objet de réponse similaire à celui-ci:
{
"id": "PAY-9BS08892W3794812YK4HKFQY",
"create_time": "2016-04-13T19:49:23Z",
"update_time": "2016-04-13T19:50:07Z",
"state": "approved",
"intent": "sale",
"payer": {
"payment_method": "credit_card",
"funding_instruments": [
{
"credit_card": {
"type": "visa",
"number": "xxxxxxxxxxxx0331",
"expire_month": "11",
"expire_year": "2018",
"first_name": "Joe",
"last_name": "Shopper",
"billing_address": {
"line1": "52 N Main ST",
"city": "Johnstown",
"state": "OH",
"postal_code": "43210",
"country_code": "US"
}
}
}
]
},
"transactions": [
{
"amount": {
"total": "7.47",
"currency": "USD",
"details": {
"subtotal": "7.41",
"tax": "0.03",
"shipping": "0.03"
}
},
"description": "This is the payment transaction description.",
"related_resources": [
{
"sale": {
"id": "0LB81696PP288253D",
"create_time": "2016-04-13T19:49:23Z",
"update_time": "2016-04-13T19:50:07Z",
"amount": {
"total": "7.47",
"currency": "USD"
},
"state": "completed",
"parent_payment": "PAY-9BS08892W3794812YK4HKFQY",
"links": [
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/sale\/0LB81696PP288253D",
"rel": "self",
"method": "GET"
},
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/sale\/0LB81696PP288253D\/refund",
"rel": "refund",
"method": "POST"
},
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/payment\/PAY-9BS08892W3794812YK4HKFQY",
"rel": "parent_payment",
"method": "GET"
}
],
"fmf_details": {
},
"processor_response": {
"avs_code": "X",
"cvv_code": "M"
}
}
}
]
}
],
"links": [
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/payment\/PAY-9BS08892W3794812YK4HKFQY",
"rel": "self",
"method": "GET"
}
],
"httpStatusCode": 201
}
Dans cet objet de retour, le fait d'avoir un state approved indique que la transaction a abouti. Sous l'objet links , il y a un certain nombre de liens HATEOAS qui fournissent les prochaines étapes potentielles pouvant être effectuées sur l'action qui vient d'être effectuée. Dans ce cas, nous pouvons récupérer des informations sur le paiement en faisant une requête GET à l' self point final fourni.
Effectuer un paiement avec une carte de crédit voûtée (nœud)
Dans cet exemple, nous examinerons comment stocker une carte de crédit en utilisant le coffre PayPal, puis référencer cette carte de crédit stockée pour traiter une transaction par carte de crédit pour un utilisateur.
La raison pour laquelle nous souhaiterions utiliser le coffre-fort est que nous n'avons pas besoin de stocker des informations de carte de crédit sensibles sur nos propres serveurs. Nous référençons simplement la méthode de paiement via un identifiant de coffre fourni, ce qui signifie que nous n'avons pas à traiter de nombreuses réglementations de conformité PCI pour stocker les cartes de crédit nous-mêmes.
Comme pour les échantillons précédents, nous commençons par configurer notre environnement.
var paypal = require('paypal-rest-sdk'),
uuid = require('node-uuid');
var client_id = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';
paypal.configure({
'mode': 'sandbox', //sandbox or live
'client_id': client_id,
'client_secret': secret
});
La seule différence avec les exemples précédents est que nous avons besoin d'un nouveau package, node-uuid , qui doit être utilisé pour générer des UUID uniques pour les payeurs lors du stockage de la carte. Vous pouvez installer ce package via:
npm install node-uuid
Ensuite, nous définissons l'objet JSON de carte de crédit qui sera envoyé au coffre PayPal pour le stockage. Il contient des informations provenant de la carte, ainsi qu'un identifiant de payeur unique que nous générons en utilisant node-uuid . Vous devriez stocker ce payer_id unique dans votre propre base de données car il sera utilisé lors de la création d'un paiement avec la carte voûtée.
var create_card_details = {
"type": "visa",
"number": "4417119669820331",
"expire_month": "11",
"expire_year": "2018",
"first_name": "John",
"last_name": "Doe",
"payer_id": uuid.v4()
};
Enfin, nous devons stocker la carte de crédit et traiter le paiement en utilisant cette carte. Pour credit_card.create(...) une carte de crédit, nous appelons credit_card.create(...) , en transmettant l'objet credit_card_details que nous venons de créer. Si tout se passe bien, un objet devrait nous être retourné avec des détails sur la carte voûtée. Par souci de paiement avec cette carte, nous n’avons besoin que de deux éléments d’information: l’id de payeur que nous avons déjà enregistré et l’ID de coffre, qui devrait également être stocké comme référence dans notre propre base de données.
paypal.credit_card.create(create_card_details, function(error, credit_card){
if(error){
console.error(error);
} else {
var card_data = {
"intent": "sale",
"payer": {
"payment_method": "credit_card",
"funding_instruments": [{
"credit_card_token": {
"credit_card_id": credit_card.id,
"payer_id": credit_card.payer_id
}
}]
},
"transactions": [{
"amount": {
"total": "7.47",
"currency": "USD",
"details": {
"subtotal": "7.41",
"tax": "0.03",
"shipping": "0.03"
}
},
"description": "This is the payment transaction description."
}]
};
paypal.payment.create(card_data, function(error, payment){
if(error){
console.error(error);
} else {
console.log(JSON.stringify(payment));
}
});
}
});
Dans la section qui suit la mise en coffre de la carte de crédit, nous définissons simplement les détails de la carte et traitons le paiement, comme nous l'avons fait avec l'exemple de traitement de carte de crédit précédent. La principale différence dans la structure de l'objet card_data est la section funding_instruments , que nous définissons sous payer . Au lieu de définir les informations de carte de crédit, nous utilisons plutôt l'objet suivant qui contient la référence d'ID de coffre-fort et l'ID de payeur:
"credit_card_token": {
"credit_card_id": credit_card.id,
"payer_id": credit_card.payer_id
}
C'est ainsi que nous utilisons une carte avec coffre-fort pour traiter un paiement.