1. Hinweis
In diesem Codelab erfahren Sie, wie Sie eine Verbindung zu Standard Payments APIs herstellen.
Vorbereitung
- Sie haben die Schritte 1 und 2 des Implementierungsprozesses abgeschlossen.
- Sie können den bereitgestellten Node.js-Server mit TLS-Beendigung entweder mit Google App Engine oder mit Ihrer eigenen Lösung in der mit Google konfigurierten Domain hosten.
- Node.js ist in Ihrer Umgebung installiert.
Lerninhalte
- So prüfen Sie die Verbindung, indem Sie eine gültige Anfrage an die Google Standard Payments Echo API senden.
- So empfangen, entschlüsseln und parsen Sie eine Anfrage von Google an die Partner Hosted Echo API.
2. Einrichtung und Anforderungen
App herunterladen
Laden Sie den Node.js-Beispielcode herunter.
Abhängigkeiten installieren
Wechseln Sie zum Projektverzeichnis und führen Sie den folgenden Befehl aus, um die erforderlichen Abhängigkeiten zu installieren. Wenn Sie App Engine verwenden, können Sie diesen Schritt überspringen.
npm install
3. Payment Integrator Account ID (PIAID) konfigurieren
Die Zahlungsintegrator-Konto-ID (PIAID) ist eine Kennung, mit der Ihre Integrationen eindeutig identifiziert werden. Sie sollten Ihre PIAID von Google erhalten haben, nachdem Sie die Voraussetzungen erfüllt haben, bevor Sie mit dieser Anleitung beginnen.
- Rufen Sie die Datei
server.jsim Projektverzeichnis auf. - Legen Sie die Variable
PIAIDauf die PIAID fest, die Sie von Google erhalten haben.
const PIAID = '{PAYMENT_INTEGRATOR_ACCOUNT_ID}';
4. PGP-Schlüssel hinzufügen
Erstellen Sie die folgenden Dateien in der Projektstruktur und fügen Sie Ihre PGP-Schlüssel hinzu, um die PGP-Verschlüsselung zu aktivieren.
- Erstellen Sie eine Datei mit dem Namen
public.keyund fügen Sie den ASCII-armored-öffentlichen Schlüssel in die Datei ein. - Erstellen Sie eine Datei mit dem Namen
private.keyund fügen Sie den ASCII-armored-privaten Schlüssel in die Datei ein. - Erstellen Sie eine Datei mit dem Namen
passphrase.txtund fügen Sie die geheime Passphrase in die Datei ein.

Sehr gut, Sie können die Anwendung jetzt ausführen.
5. Anwendung ausführen
Führen Sie den folgenden Befehl aus, um die Anwendung zu starten.
$ node server.js Server listening on port 8080...
Wenn Sie eine vorkonfigurierte App Engine-Instanz ausführen, führen Sie stattdessen diesen Befehl aus.
$ gcloud app deploy
Standardmäßig überwacht der Server Port 8080.
6. Konnektivität der Google Standard Payments API testen
Nachdem die Anwendung ausgeführt wird, ist es an der Zeit, die Verbindung mit der Google Standard Payments Echo API zu testen.
Führen Sie den folgenden Befehl aus, um einen Aufruf von Ihrer Instanz der Beispielanwendung an die Server von Google zu senden. Die Echo-API der Beispielanwendung akzeptiert eine POST-Anfrage im Klartext. Nachdem die Anfrage eingegangen ist, wird eine nachfolgende Anfrage an die von Google gehostete API gesendet.
$ curl -X POST -H 'Content-Type: text/plain' -d 'Hello from Little Bear' https://{HOSTNAME}/echo
Bei einer erfolgreichen API-Anfrage erhalten Sie die folgende Antwort von Google.
{
"responseHeader":{
"responseTimestamp":"1606710026723"
},
"clientMessage":"Hello from Little Bear",
"serverMessage":"Server message."
}
Detaillierte Anleitung
Nachdem eine Anfrage erfolgreich von Ihrem Server gesendet wurde, sehen wir uns an, wie das funktioniert hat.
Anfrage erstellen
buildEchoRequestBody in bodyHelpers.js erstellt die echo-Anfrage, die an die API von Google gesendet wird.
const message = bodyHelpers.buildEchoRequestBody(req.body);
Die generierte Anfrage enthält clientMessage sowie mehrere Felder mit Standardwerten.
{
"requestHeader":{
"protocolVersion":{
"major":1,
"minor":0,
"revision":0
},
"requestId":"ddfe0fd0-ffdc-4fcf-991a-f0611ec83970",
"requestTimestamp":"1606715389040"
},
"clientMessage":"Hello from Little Bear"
}
Anfrage verschlüsseln
Alle Anfragen sind verschlüsselt und base64url-codiert. In diesem Beispiel enthält crypto.js Hilfsmethoden, die die Ver- und Entschlüsselung für Sie ausführen. Die Methode crypto.encrypt führt die Verschlüsselung mit dem öffentlichen Schlüssel von Google durch.
const encrypted = await crypto.encrypt(message);
Senden Sie die Base64URL-codierte POST-Anfrage.
Die verschlüsselte Nachricht wird mit dem base64url-Paket base64url-codiert und über eine POST-Anfrage mit axios gesendet.
const response = await axios.post(ECHO_URL, base64url(encrypted), AXIOS_CONFIG);
Antwort entschlüsseln und zurückgeben
Die erfolgreiche Antwort von Google ist base64url-codiert und verschlüsselt. Sie muss also auch decodiert und entschlüsselt werden, bevor sie im Klartext zurückgegeben werden kann.
const encryptedMessage = base64url.toBuffer(response.data);
const decryptedResponse = await crypto.decrypt(encryptedMessage);
res.status(200);
res.send(decryptedResponse);
7. Partner-API-Verbindung testen
Um die Konnektivität der Partner-Echo-API zu testen, sendet Google eine Anfrage an die vom Partner gehostete Echo-API.
Wenn Sie bereit sind, wenden Sie sich bitte an Ihren Ansprechpartner bei Google, um diese Anfrage von Google aus zu starten.
Der Echotest ist abgeschlossen, wenn Sie die eingehende Echoanfrage von Google lesen und mit einer gültigen Echoantwort antworten können.
Detaillierte Anleitung
Nachdem eine Anfrage erfolgreich von Ihrem Server empfangen und verarbeitet wurde, sehen wir uns an, wie das funktioniert hat.
Anfrage mit Base64url decodieren
Wenn Sie die Anfrage erhalten, müssen Sie sie zuerst mit base64url decodieren.
const encryptedRequest = base64url.toBuffer(req.body);
Anfrage entschlüsseln
Nachdem Sie die Anfrage base64url-decodiert haben, müssen Sie sie entschlüsseln.
const decryptedRequest = await crypto.decrypt(encryptedRequest);
Anfrage erhalten
Google hat eine Nachrichtennutzlast gesendet, die nach dem Decodieren und Entschlüsseln etwa so aussieht.
{
"requestHeader": {
"protocolVersion": {
"major": 1
},
"requestId": "G1MQ0YERJ0Q7LPM",
"requestTimestamp": {
"epochMillis":1481899949606
},
"paymentIntegratorAccountId": "abcdef123456"
},
"clientMessage": "echo Me"
}
Antwort erstellen
Nachdem Sie die eingehende Echoanfrage erfolgreich gelesen haben, können Sie die Antwort erstellen.
clientMessage = JSON.parse(decryptedRequest).clientMessage;
responseBody = bodyHelpers.buildEchoResponseBody(clientMessage);
Die Antwort enthält die Nachricht von Google sowie einen Zeitstempel und eine Nachricht vom Server.
{
"responseHeader": {
"responseTimestamp": {
"epochMillis":1481899950236
}
},
"clientMessage": "echo Me",
"serverMessage": "Debug ID 12345"
}
Antwort verschlüsseln und mit Base64 codieren
Nachdem Sie die Antwortnachricht erstellt haben, können Sie sie verschlüsseln und mit Base64Url codieren.
encryptedResponse = await crypto.encrypt(responseBody);
const encodedResponse = base64url(encryptedResponse);
Antwort zurückgeben
Schließlich können Sie die POST-Antwort senden.
res.send(encodedResponse);
8. Glückwunsch!
In diesem Codelab haben Sie erfolgreich eine Verbindung zur Echo API hergestellt.