-
Notifications
You must be signed in to change notification settings - Fork 0
1. node.js Server
Wir konfigurieren einen node.js Server, um die persönlichen Daten und Zahlungsdaten vom Benutzer, welche vom Browser durch das Payment Request API gesendet werden, zu empfangen. Somit ist es möglich, einen Erfolgshinweis und auch die empfangenen Daten nochmals anzuzeigen.
Zur Installation von node.js muss der Installer von dieser Webseite heruntergeladen werden. Es sollte die "LTS"-Version genutzt werden, da sie auf einem stabilen Build basiert. Neuere Funktionen sind nicht notwendig.
Ebenso muss mongoDB installiert werden. Dazu die .tgz-Datei von dieser Webseite herunterladen und mit folgenden Befehlen installieren (zunächst mit cd
in das entsprechende Verzeichnis wechseln):
tar -zxvf mongodb-osx-x86_64-3.6.5.tgz
mkdir -p mongodb
cp -R -n mongodb-osx-x86_64-3.6.5/ mongodb
Danach muss noch ein Ordner für die mongodb im Root-Verzeichnis angelegt werden, wobei man sich als Benutzer die Zugriffsrechte darauf gibt. Dazu folgende Befehle ausführen:
sudo mkdir -p /data/db/
sudo chown `id -u` /data/db
Nach der Installation von node.js muss eine Ordnerstruktur angelegt werden. Diese sieht wie folgt aus:
- payment-server/
- server.js // konfiguriert den Server und definiert die Routen
- payment_basic.html // hier kommt der Code für den Payment Request (Teil 1) hinein
- payment_shippingAddress.html // Teil 2 (mit Lieferadresse)
- payment_sale.html // Teil 3 (mit Rabatten)
- payment_reject_creditcards.html // Teil 4 (bestimmte Kreditkarten ablehnen)
- payment_tax.html // Teil 5 (mit Steuer)
- payment_reject_shippingAddress.html // Teil 6 (bestimmte Lieferadressen ablehnen)
Im Terminal lassen sich Ordner mit mkdir
und Dateien mit touch
anlegen.
Nachdem alle Ordner und Dateien angelegt sind, mit cd
in den Ordner payment-server navigieren und mit dem Befehl npm init
eine package.json erstellen. Bei der Abfrage den Namen "payment-server" eingeben, alle anderen Abfragen mit der Eingabetaste bestätigen.
Danach mit dem Befehl npm install express body-parser mongodb --save
die nötigen Abhängigkeiten installieren, wobei diese automatisch in die package.json übernommen werden. Wir definieren mit express die Middleware, die uns später das Definieren von Routen erleichtert. Der body-parser ermöglicht uns, den Body einer HTTP-Anfrage auszulesen. Somit kann der POST-Request für die Duchführung einer Zahlung verwaltet werden. Und mit mongodb installieren wir den Datenbank-Treiber.
Nun wird die server.js mit Code befüllt. Dazu den nachfolgenden Code in die Datei einfügen:
// Abhängigkeiten definieren
var express = require('express');
var server = express(); // express an die Variable "server" binden
var bodyParser = require('body-parser');
var MongoClient = require('mongodb').MongoClient // Variable für Datenbank-Client
var path = require("path");
var db; // Variable für Datenbank definieren
// bodyparser konfigurieren
server.use(bodyParser.urlencoded({
extended: true
}));
server.use(bodyParser.json());
var router = express.Router(); // Instanz des express Routers
server.use('/', router); // Router konfigurieren
router.get('/', (req, res) => {
res.sendFile(path.join(__dirname + '/payment_basic.html'));
})
router.get('/2', (req, res) => {
res.sendFile(path.join(__dirname + '/payment_shippingAddress.html'));
})
router.get('/3', (req, res) => {
res.sendFile(path.join(__dirname + '/payment_sale.html'));
})
router.get('/4', (req, res) => {
res.sendFile(path.join(__dirname + '/payment_reject_creditcards.html'));
})
router.get('/5', (req, res) => {
res.sendFile(path.join(__dirname + '/payment_tax.html'));
})
router.get('/6', (req, res) => {
res.sendFile(path.join(__dirname + '/payment_reject_shippingAddress.html'));
})
router.post('/payment', (req, res) => {
db.collection('payment').save(req.body, (err, result) => {
if (err) return console.log(err)
res.status(201).send(req.body);
})
});
MongoClient.connect('mongodb://localhost:27017/paymentDb', (err, client) => {
if (err) return console.log(err)
db = client.db('paymentDb') // whatever your database name is
server.listen(8080, () => {
console.log("Server starten mit localhost:8080");
});
});
Damit der Server laufen kann, muss zunächst in einem anderen Terminal-Fenster die mongoDb gestartet werden. Dies erfolgt der Einfachheit halber direkt über die heruntergeladene Datei (bsp: /Users/<Benutzername>/Downloads/mongodb/bin/mongod
). Diese Datei in das Terminal-Fenster ziehen, um den Dateipfad zu erhalten.
Wenn die Datenbank geladen ist, kann der Server nach Navigation mit cd
in den Ordner payment-server mit node server.js
gestartet werden. Dieser ist jetzt über die Eingabe von localhost:8080
in einem beliebigen Browser erreichbar.