1. Sebelum memulai
Ini adalah codelab yang dipandu sendiri yang akan membahas cara membuat konektivitas dengan Standard Payments API.
Prasyarat
- Anda telah menyelesaikan langkah 1 dan 2 dari Proses Penerapan.
- Anda dapat menghosting server Node.js yang disediakan dengan penghentian TLS menggunakan Google App Engine atau solusi Anda sendiri di domain yang dikonfigurasi dengan Google.
- Node.js diinstal di lingkungan Anda.
Yang Akan Anda Pelajari
- Cara memverifikasi konektivitas dengan membuat permintaan yang valid ke Google Standard Payments echo API.
- Cara menerima, mendekripsi, dan mengurai permintaan dari Google ke Partner Hosted Echo API.
2. Penyiapan dan Persyaratan
Download Aplikasi
Download kode contoh Node.js.
Menginstal Dependensi
Buka direktori project dan jalankan perintah berikut untuk menginstal dependensi yang diperlukan. Jika menggunakan App Engine, Anda dapat melewati langkah ini.
npm install
3. Mengonfigurasi ID Akun Integrator Pembayaran (PIAID)
ID Akun Integrator Pembayaran (PIAID) adalah ID yang digunakan untuk mengidentifikasi integrasi Anda secara unik. Anda seharusnya telah menerima PIAID dari Google dengan menyelesaikan prasyarat sebelum memulai tutorial ini.
- Buka file
server.jsdi direktori project. - Tetapkan variabel
PIAIDke PIAID yang dikeluarkan untuk Anda oleh Google.
const PIAID = '{PAYMENT_INTEGRATOR_ACCOUNT_ID}';
4. Menambahkan kunci PGP
Buat file berikut dalam struktur project dan tambahkan kunci PGP Anda untuk mengaktifkan enkripsi PGP.
- Buat file bernama
public.keydan tambahkan kunci publik yang dienkapsulasi ASCII ke file tersebut. - Buat file bernama
private.keydan tambahkan kunci pribadi yang dienkapsulasi ASCII ke file tersebut. - Buat file bernama
passphrase.txtdan tambahkan frasa sandi rahasia ke file tersebut.

Bagus, Anda sudah siap menjalankan aplikasi.
5. Menjalankan Aplikasi
Untuk memulai aplikasi, jalankan perintah berikut.
$ node server.js Server listening on port 8080...
Jika Anda menjalankan instance App Engine yang telah dikonfigurasi sebelumnya, jalankan perintah ini.
$ gcloud app deploy
Secara default, server akan memproses port 8080.
6. Menguji konektivitas Google Standard Payments API
Setelah aplikasi berjalan, saatnya menguji konektivitas dengan Google Standard Payments echo API.
Jalankan perintah berikut untuk memulai panggilan dari instance aplikasi contoh Anda ke server Google. API echo aplikasi contoh menerima permintaan POST dalam teks biasa. Setelah menerima permintaan, permintaan berikutnya dikirim ke API yang dihosting Google.
$ curl -X POST -H 'Content-Type: text/plain' -d 'Hello from Little Bear' https://{HOSTNAME}/echo
Permintaan API yang berhasil akan menghasilkan respons berikut dari Google.
{
"responseHeader":{
"responseTimestamp":"1606710026723"
},
"clientMessage":"Hello from Little Bear",
"serverMessage":"Server message."
}
Langkah demi langkah
Setelah permintaan berhasil dikirim oleh server Anda, mari kita tinjau cara kerjanya.
Buat permintaan
buildEchoRequestBody di bodyHelpers.js membuat permintaan echo yang dikirim ke API Google.
const message = bodyHelpers.buildEchoRequestBody(req.body);
Permintaan yang dihasilkan mencakup clientMessage, serta beberapa kolom nilai default.
{
"requestHeader":{
"protocolVersion":{
"major":1,
"minor":0,
"revision":0
},
"requestId":"ddfe0fd0-ffdc-4fcf-991a-f0611ec83970",
"requestTimestamp":"1606715389040"
},
"clientMessage":"Hello from Little Bear"
}
Enkripsi permintaan
Semua permintaan dienkripsi dan dienkode base64url. Dalam contoh ini, crypto.js berisi metode bantuan yang melakukan enkripsi dan dekripsi untuk Anda. Metode crypto.encrypt melakukan enkripsi menggunakan kunci publik Google.
const encrypted = await crypto.encrypt(message);
Kirim permintaan POST yang dienkode base64url
Pesan terenkripsi dienkode base64url menggunakan paket base64url dan dikirim melalui permintaan POST menggunakan axios.
const response = await axios.post(ECHO_URL, base64url(encrypted), AXIOS_CONFIG);
Mendekripsi dan menampilkan respons
Respons Google yang berhasil dienkode dan dienkripsi base64url, sehingga perlu didekode dan didekripsi juga sebelum dapat ditampilkan dalam teks biasa.
const encryptedMessage = base64url.toBuffer(response.data);
const decryptedResponse = await crypto.decrypt(encryptedMessage);
res.status(200);
res.send(decryptedResponse);
7. Menguji konektivitas Partner API
Untuk menguji Konektivitas Partner Hosted echo API, Google akan mengirim permintaan ke Partner Hosted echo API.
Jika Anda sudah siap, harap bekerja sama dengan kontak Google Anda untuk memicu permintaan ini dari Google.
Pengujian echo selesai jika Anda dapat membaca permintaan echo masuk dari Google dan merespons dengan respons echo yang valid.
Langkah demi langkah
Setelah permintaan berhasil diterima dan ditangani oleh server Anda, mari kita tinjau cara kerjanya.
Mendekode permintaan Base64url
Saat menerima permintaan, Anda harus mendekode base64url terlebih dahulu.
const encryptedRequest = base64url.toBuffer(req.body);
Mendekripsi permintaan
Setelah mendekode permintaan base64url, Anda harus mendekripsinya.
const decryptedRequest = await crypto.decrypt(encryptedRequest);
Menerima permintaan
Google mengirimkan payload pesan yang mirip dengan berikut setelah didekode dan didekripsi.
{
"requestHeader": {
"protocolVersion": {
"major": 1
},
"requestId": "G1MQ0YERJ0Q7LPM",
"requestTimestamp": {
"epochMillis":1481899949606
},
"paymentIntegratorAccountId": "abcdef123456"
},
"clientMessage": "echo Me"
}
Membangun respons
Setelah berhasil membaca permintaan echo inbound, Anda siap membuat respons.
clientMessage = JSON.parse(decryptedRequest).clientMessage;
responseBody = bodyHelpers.buildEchoResponseBody(clientMessage);
Respons mencakup pesan dari Google, serta stempel waktu dan pesan dari server.
{
"responseHeader": {
"responseTimestamp": {
"epochMillis":1481899950236
}
},
"clientMessage": "echo Me",
"serverMessage": "Debug ID 12345"
}
Enkripsi dan enkode base64 respons
Setelah membentuk pesan respons, Anda siap untuk mengenkripsi dan mengenkode base64url.
encryptedResponse = await crypto.encrypt(responseBody);
const encodedResponse = base64url(encryptedResponse);
Menampilkan respons
Terakhir, Anda siap mengirim respons POST.
res.send(encodedResponse);
8. Selamat!
Dalam codelab ini, Anda telah berhasil membuat konektivitas dengan Echo API.