PayPal
Een creditcardbetaling uitvoeren (knooppunt)
Zoeken…
parameters
| Parameter | Details |
|---|---|
| card_data | JSON-object met betalingsinformatie voor transactie |
| creditcard details | JSON-object met creditcardgegevens die naar PayPal worden verzonden om te worden gewelfd |
| klant identificatie | Uw PayPal-applicatie klant-ID (OAuth 2-gegevens) |
| paypal | PayPal-knooppunt SDK-referentie |
| geheim | Uw PayPal-aanvraaggeheim (OAuth 2-gegevens) |
| uuid | Verwijzing naar het node-uuid-pakket |
Opmerkingen
Dit voorbeeld neemt de gebruiker mee door een eenvoudige creditcardtransactie te crediteren met behulp van de PayPal-SDK's.
Voorbeeld van knooppunt
Begin met het installeren van de PayPal-knooppuntmodule van NPM
npm install paypal-rest-sdk
Voeg in uw toepassingsbestand de configuratie-informatie voor de SDK toe
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
});
We voegen de vereiste voor de SDK toe en stellen vervolgens variabelen in voor de client-ID en het geheim die werden verkregen bij het maken van een applicatie . Vervolgens configureren we onze applicatie met behulp van deze details en specificeren we de omgeving waarin we werken (live of sandbox).
Vervolgens stellen we het JSON-object in dat de betalingsinformatie voor de betaler bevat.
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."
}]};
Voeg een intent van de sale , en een payment_method van credit_card . Voeg vervolgens de kaart- en adresgegevens voor de creditcard toe onder funding_instruments en het bedrag dat in rekening wordt gebracht bij transactions . Hier kunnen meerdere transactieobjecten worden geplaatst.
Ten slotte doen we een verzoek aan payment.create(...) en geven ons card_data object door om de betaling te verwerken.
paypal.payment.create(card_data, function(error, payment){
if(error){
console.error(error);
} else {
console.log(payment);
}
});
Als de transactie succesvol was, zouden we een responsobject moeten zien dat lijkt op het volgende:
{
"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
}
In dit approved vertelt een state van approved ons dat de transactie is geslaagd. Onder het links bevindt zich een aantal HATEOAS- koppelingen die mogelijke volgende stappen bieden die kunnen worden genomen voor de actie die zojuist is uitgevoerd. In dit geval kunnen we informatie over de betaling opvragen door een GET-verzoek in te dienen bij het opgegeven self eindpunt.
Een betaling uitvoeren met een gewelfde creditcard (knooppunt)
In dit voorbeeld bekijken we hoe u een creditcard kunt opslaan met behulp van de PayPal-kluis en vervolgens naar die opgeslagen creditcard kunt verwijzen om een creditcardtransactie voor een gebruiker te verwerken.
De reden waarom we de kluis zouden willen gebruiken, is dat we geen gevoelige creditcardinformatie op onze eigen servers hoeven op te slaan. We verwijzen eenvoudig naar de betaalmethode via een opgegeven kluis-ID, wat betekent dat we niet veel PCI-nalevingsregels hoeven af te handelen om de creditcards zelf op te slaan.
Net als bij eerdere voorbeelden, beginnen we met het instellen van onze omgeving.
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
});
Het enige verschil met eerdere voorbeelden hier is dat we een nieuw pakket nodig hebben, node-uuid , dat moet worden gebruikt om unieke UUID's te genereren voor de betalers bij het opslaan van de kaart. U kunt dat pakket installeren via:
npm install node-uuid
Vervolgens definiëren we het creditcard-JSON-object dat voor opslag naar de PayPal-kluis wordt verzonden. Het bevat informatie van de kaart, evenals een unieke betaler-ID die we genereren met behulp van node-uuid . U moet deze unieke payer_id in uw eigen database opslaan, omdat deze wordt gebruikt bij het maken van een betaling met de gewelfde kaart.
var create_card_details = {
"type": "visa",
"number": "4417119669820331",
"expire_month": "11",
"expire_year": "2018",
"first_name": "John",
"last_name": "Doe",
"payer_id": uuid.v4()
};
Ten slotte moeten we de creditcard opslaan en de betaling met die kaart verwerken. Om een creditcard te beschermen, roepen we credit_card.create(...) , waarbij we het credit_card_details object credit_card_details dat we zojuist hebben gemaakt. Als alles goed gaat, krijgen we een object terug met details over de gewelfde kaart. Voor een betaling met die kaart hebben we eigenlijk maar twee soorten informatie nodig: de payer_id die we al hebben opgeslagen, en de kluis-ID, die ook als referentie in onze eigen database moet worden opgeslagen.
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));
}
});
}
});
In het gedeelte dat volgt op het succesvol gewelf van de creditcard, definiëren we eenvoudig de kaartgegevens en verwerken we de betaling, net als in het vorige voorbeeld van creditcardverwerking. Het belangrijkste verschil in de structuur van het object card_data is de sectie funding_instruments , die we definiëren onder payer . In plaats van de creditcardgegevens te definiëren, gebruiken we in plaats daarvan het volgende object dat de kluis-ID-referentie en de betaler-ID bevat:
"credit_card_token": {
"credit_card_id": credit_card.id,
"payer_id": credit_card.payer_id
}
Zo gebruiken we een gewelfde kaart om een betaling te verwerken.