PayPal
Abonnementen / terugkerende betalingen maken
Zoeken…
parameters
| Parameter | Details |
|---|---|
| billingAgreementAttributes | Configuratieobject om de factureringsovereenkomst te maken |
| billingPlan | Factureringsplan-ID van de queryreeks |
| billingPlanAttribs | Configuratieobject om het factureringsplan te maken |
| billingPlanUpdateAttributes | Configuratieobject voor het wijzigen van een factureringsplan naar een actieve status |
| klant identificatie | Uw applicatie-client-ID (OAuth-sleutels) |
| http | Verwijzing naar het http-pakket om onze eenvoudige server in te stellen |
| isoDate | ISO-datum voor het instellen van de startdatum van het abonnement |
| koppelingen | HATEOAS-koppelingsobject voor het extraheren van de omleidings-URL naar PayPal |
| params | Query string parameters |
| paypal | Verwijzing naar de PayPal-SDK |
| geheim | Uw toepassingsgeheim (OAuth-sleutels) |
| blijk | Het token voor goedkeuring van de factureringsovereenkomst dat wordt verstrekt nadat PayPal omgeleid heeft om de factureringsovereenkomst uit te voeren |
Opmerkingen
Deze voorbeelden doorlopen het proces van het creëren van een abonnement / herhaald betalingssysteem met PayPal.
Het proces voor het maken van een abonnement is om:
- Maak een factureringsplan. Dit is een herbruikbaar model dat de details van het abonnement schetst.
- Activeer het factureringsplan.
- Wanneer u een abonnement voor een gebruiker wilt maken, maakt u een factureringsovereenkomst met behulp van de ID van het factureringsplan waarop ze moeten zijn geabonneerd.
- Eenmaal gemaakt, stuurt u de gebruiker door naar PayPal om het abonnement te bevestigen. Na bevestiging wordt de gebruiker teruggeleid naar de website van de verkoper.
- Ten slotte voert u de factureringsovereenkomst uit om met het abonnement te beginnen.
Stap 2: Een abonnement maken voor een gebruiker met behulp van een factureringsovereenkomst (knooppuntvoorbeeld)
De tweede stap bij het maken van een abonnement voor een gebruiker is het maken en uitvoeren van een factureringsovereenkomst op basis van een bestaand geactiveerd factureringsplan. In dit voorbeeld wordt ervan uitgegaan dat u in het vorige voorbeeld al een factureringsplan hebt doorlopen en een ID voor dat factureringsplan hebt waarnaar in het voorbeeld moet worden verwezen.
Wanneer u een factureringsovereenkomst instelt om een abonnement voor een gebruiker te maken, volgt u 3 stappen, die misschien denken aan het verwerken van een PayPal-betaling:
- U maakt een factureringsovereenkomst, waarbij u via de ID naar een onderliggend factureringsplan verwijst.
- Eenmaal gemaakt, stuurt u de gebruiker door naar PayPal (als u via PayPal betaalt) om het abonnement te bevestigen. Na bevestiging stuurt PayPal de gebruiker terug naar uw site met behulp van de omleiding in het onderliggende factureringsplan.
- Vervolgens voert u de factureringsovereenkomst uit met een token dat u via de PayPal-omleiding heeft ontvangen.
In dit voorbeeld wordt een op Express gebaseerde HTTP-server ingesteld om het factureringsovereenkomstproces te presenteren.
Om het voorbeeld te starten, moeten we eerst onze configuratie instellen. We voegen vier vereisten toe, de PayPal SDK, body-parser voor het verwerken van JSON-gecodeerde instanties, http voor onze eenvoudige serverintegratie en express voor het Express-framework. We definiëren vervolgens onze klant-ID en het geheim van het maken van een applicatie, configureren de SDK voor de sandbox en configureren vervolgens bodyParser voor het afhandelen van JSON-body's.
var paypal = require('paypal-rest-sdk'),
bodyParser = require('body-parser'),
http = require('http'),
app = require('express')();
var clientId = 'YOUR APPLICATION CLIENT ID';
var secret = 'YOUR APPLICATION SECRET';
paypal.configure({
'mode': 'sandbox', //sandbox or live
'client_id': clientId,
'client_secret': secret
});
app.use(bodyParser.json());
Onze eerste stap in de factureringsovereenkomst is het maken van een route voor het maken van een factureringsovereenkomst en het omleiden van de gebruiker naar PayPal om dat abonnement te bevestigen. We gaan ervan uit dat een factuurplan-ID wordt doorgegeven als een parameter voor een queryreeks, bijvoorbeeld door de volgende URL te laden met een plan-ID uit het vorige voorbeeld:
http://localhost:3000/createagreement?plan=P-3N543779E9831025ECYGDNVQ
We moeten die informatie nu gebruiken om de factuurovereenkomst te maken.
app.get('/createagreement', function(req, res){
var billingPlan = req.query.plan;
var isoDate = new Date();
isoDate.setSeconds(isoDate.getSeconds() + 4);
isoDate.toISOString().slice(0, 19) + 'Z';
var billingAgreementAttributes = {
"name": "Standard Membership",
"description": "Food of the World Club Standard Membership",
"start_date": isoDate,
"plan": {
"id": billingPlan
},
"payer": {
"payment_method": "paypal"
},
"shipping_address": {
"line1": "W 34th St",
"city": "New York",
"state": "NY",
"postal_code": "10001",
"country_code": "US"
}
};
// Use activated billing plan to create agreement
paypal.billingAgreement.create(billingAgreementAttributes, function (error, billingAgreement){
if (error) {
console.error(error);
throw error;
} else {
//capture HATEOAS links
var links = {};
billingAgreement.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');
}
}
});
});
We beginnen met het extraheren van het factuurplan-ID uit de queryreeks en maken de datum waarop het plan moet beginnen.
De volgende objectdefinitie, billingAgreementAttributes , bestaat uit informatie voor het abonnement. Het bevat leesbare informatie over het plan, een verwijzing naar de ID van het factureringsplan, de betaalmethode en verzendgegevens (indien nodig voor het abonnement).
Vervolgens wordt een aanroep gedaan naar billingAgreement.create(...) , waarbij het zojuist gemaakte billingAgreementAttributes object wordt billingAgreementAttributes . Als alles succesvol is, moeten we een factuurovereenkomstobject aan ons teruggeven met details over ons nieuw gecreëerde abonnement. Dat object bevat ook een aantal HATEOAS-koppelingen die ons de volgende stappen bieden die kunnen worden genomen met betrekking tot deze nieuw gecreëerde overeenkomst. Degene waar we om geven is gelabeld als approval_url .
We doorlopen alle aangeboden links om ze in een object te plaatsen waarnaar gemakkelijk kan worden verwezen. Als approval_url een van die links is, verwijzen we de gebruiker naar die link, PayPal.
Op dit moment bevestigt de gebruiker het abonnement op PayPal en wordt hij teruggeleid naar de URL in het onderliggende factureringsplan. Samen met die URL zal PayPal ook een token langs de queryreeks doorgeven. Dat token gaan we gebruiken om het abonnement uit te voeren (of te starten).
Laten we die functionaliteit op de volgende route instellen.
app.get('/processagreement', function(req, res){
var token = req.query.token;
paypal.billingAgreement.execute(token, {}, function (error, billingAgreement) {
if (error) {
console.error(error);
throw error;
} else {
console.log(JSON.stringify(billingAgreement));
res.send('Billing Agreement Created Successfully');
}
});
});
We halen het token uit de queryreeks en bellen vervolgens naar billingAgreement.execute , waarbij we dat token doorgeven. Als alles succesvol is, hebben we nu een geldig abonnement voor de gebruiker. Het retourobject bevat informatie over de actieve factureringsovereenkomst.
Ten slotte stellen we onze HTTP-server in om te luisteren naar verkeer naar onze routes.
//create server
http.createServer(app).listen(3000, function () {
console.log('Server started: Listening on port 3000');
});
Stap 1: Een abonnementmodel maken met een factureringsplan (knooppuntvoorbeeld)
Wanneer u een abonnement voor een gebruiker maakt, moet u eerst een factureringsplan maken en activeren waarop een gebruiker zich vervolgens heeft geabonneerd om een factureringsovereenkomst te gebruiken. Het volledige proces voor het maken van een abonnement wordt gedetailleerd beschreven in de opmerkingen bij dit onderwerp.
In dit voorbeeld gaan we de PayPal Node SDK gebruiken . U kunt het verkrijgen van NPM met behulp van de volgende opdracht:
npm install paypal-rest-sdk
In ons .js-bestand hebben we eerst onze SDK-configuratie ingesteld, inclusief het toevoegen van een vereiste voor de SDK, het definiëren van onze klant-ID en geheim van het maken van onze applicatie en vervolgens het configureren van de SDK voor de sandbox-omgeving.
var paypal = require('paypal-rest-sdk');
var clientId = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';
paypal.configure({
'mode': 'sandbox', //sandbox or live
'client_id': clientId,
'client_secret': secret
});
Vervolgens moeten we twee JSON-objecten instellen. Het object billingPlanAttribs bevat de informatie en uitsplitsing van de betaling voor het factureringsplan waarop we gebruikers kunnen abonneren, en het object billingPlanUpdateAttributes bevat waarden voor het instellen van het factureringsplan in een actieve status, waardoor het kan worden gebruikt.
var billingPlanAttribs = {
"name": "Food of the World Club Membership: Standard",
"description": "Monthly plan for getting the t-shirt of the month.",
"type": "fixed",
"payment_definitions": [{
"name": "Standard Plan",
"type": "REGULAR",
"frequency_interval": "1",
"frequency": "MONTH",
"cycles": "11",
"amount": {
"currency": "USD",
"value": "19.99"
}
}],
"merchant_preferences": {
"setup_fee": {
"currency": "USD",
"value": "1"
},
"cancel_url": "http://localhost:3000/cancel",
"return_url": "http://localhost:3000/processagreement",
"max_fail_attempts": "0",
"auto_bill_amount": "YES",
"initial_fail_amount_action": "CONTINUE"
}
};
var billingPlanUpdateAttributes = [{
"op": "replace",
"path": "/",
"value": {
"state": "ACTIVE"
}
}];
Binnen het object billingPlanAttribs bevinden zich enkele relevante gegevens:
- naam / beschrijving / type : visuele basisinformatie om het plan en het type plan te beschrijven.
- payment_definitions : Informatie over hoe het plan zou moeten functioneren en gefactureerd moeten worden. Meer details over velden hier .
- merchant_preferences : Extra kostenstructuren, omleidings-URL's en instellingen voor het abonnement. Meer details over velden hier .
Met deze objecten op hun plaats, kunnen we nu het factureringsplan maken en activeren.
paypal.billingPlan.create(billingPlanAttribs, function (error, billingPlan){
if (error){
console.log(error);
throw error;
} else {
// Activate the plan by changing status to Active
paypal.billingPlan.update(billingPlan.id, billingPlanUpdateAttributes, function(error, response){
if (error) {
console.log(error);
throw error;
} else {
console.log(billingPlan.id);
}
});
}
});
We noemen billingPlan.create(...) en geven het billingPlanAttribs object door dat we zojuist hebben gemaakt. Als dat lukt, bevat het retourobject informatie over het factureringsplan. Omwille van het voorbeeld moeten we alleen de ID van het factureringsplan gebruiken om het plan voor gebruik te activeren.
Vervolgens roepen we billingPlan.update(...) , waarbij we de factuurplan-ID en het billingPlanUpdateAttributes object billingPlanUpdateAttributes we eerder hebben gemaakt. Als dat lukt, is ons factureringsplan nu actief en klaar voor gebruik.
Om een abonnement voor een gebruiker (of meerdere gebruikers) voor dit plan te maken, moeten we naar het factuurplan-ID ( billingPlan.id hierboven) billingPlan.id , dus bewaar dat op een plek waar gemakkelijk naar kan worden verwezen.
In de tweede abonnementsstap moeten we een factureringsovereenkomst maken op basis van het plan dat we zojuist hebben gemaakt en uitvoeren om abonnementen voor een gebruiker te verwerken.