1. Sebelum memulai
Ini adalah codelab mandiri yang akan menjelaskan cara membangun konektivitas dengan Stanadard Payments API.
Prasyarat
- Anda telah menyelesaikan langkah 1 dan 2 dari Proses Implementasi.
- 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 terinstal di lingkungan Anda.
Yang Akan Anda Pelajari
- Cara memverifikasi konektivitas dengan membuat permintaan yang valid ke echo API Google Standard Payments.
- 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 sudah menerima PIAID dari Google dengan menyelesaikan prasyarat sebelum memulai tutorial ini.
- Buka file
server.js
di direktori project. - Tetapkan variabel
PIAID
ke PIAID yang diberikan Google untuk Anda.
const PIAID = '{PAYMENT_INTEGRATOR_ACCOUNT_ID}';
4. Tambahkan kunci PGP
Buat file berikut dalam struktur project dan tambahkan kunci PGP Anda untuk mengaktifkan enkripsi PGP.
- Buat file bernama
public.key
dan tambahkan kunci publik armor ASCII ke file. - Buat file bernama
private.key
dan tambahkan kunci pribadi armor ASCII ke file tersebut. - Buat file bernama
passphrase.txt
dan tambahkan frasa sandi rahasia ke file tersebut.
Bagus, Anda siap untuk 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 memantau 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. Aplikasi contoh echo API menerima permintaan POST dalam teks biasa. Setelah menerima permintaan, permintaan berikutnya akan 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.
Membuat 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"
}
Mengenkripsi 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
menjalankan enkripsi menggunakan kunci publik Google.
const encrypted = await crypto.encrypt(message);
Mengirim permintaan POST berenkode 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 sukses adalah dienkode dan dienkripsi base64url, sehingga perlu didekode dan didekripsi 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 API echo partner, Google akan mengirim permintaan ke Partner Hosted echo API.
Jika Anda sudah siap, hubungi kontak Google Anda untuk memicu permintaan ini dari Google.
Uji gema akan selesai jika Anda dapat membaca permintaan gema masuk dari Google dan merespons dengan respons gema yang valid.
Langkah demi langkah
Setelah permintaan berhasil diterima dan ditangani oleh server Anda, mari kita tinjau cara kerjanya.
Base64url mendekode permintaan
Saat menerima permintaan ini, Anda harus terlebih dahulu mendekode base64url.
const encryptedRequest = base64url.toBuffer(req.body);
Mendekripsi permintaan
Setelah mendekode permintaan base64url, Anda harus mendekripsinya.
const decryptedRequest = await crypto.decrypt(encryptedRequest);
Menerima permintaan
Google mengirim payload pesan yang serupa dengan berikut ini setelah didekode dan didekripsi.
{ "requestHeader": { "protocolVersion": { "major": 1 }, "requestId": "G1MQ0YERJ0Q7LPM", "requestTimestamp": { "epochMillis":1481899949606 }, "paymentIntegratorAccountId": "abcdef123456" }, "clientMessage": "echo Me" }
Membuat respons
Setelah berhasil membaca permintaan echo masuk, Anda siap membangun 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" }
Mengenkripsi dan mengenkode respons base64
Setelah membentuk pesan respons, Anda siap untuk mengenkripsi dan mengenkode base64url.
encryptedResponse = await crypto.encrypt(responseBody);
const encodedResponse = base64url(encryptedResponse);
Kembalikan respons
Dan, akhirnya, Anda siap untuk mengirim respons POST.
res.send(encodedResponse);
8. Selamat!
Dalam codelab ini, Anda telah berhasil membangun konektivitas dengan Echo API.