1. Sebelum memulai
Prasyarat
- Anda telah menyelesaikan langkah 1 dan 2 dari Proses Penerapan.
- Anda dapat menghosting server Java yang disediakan dengan penghentian TLS menggunakan Google App Engine atau solusi Anda sendiri di domain yang dikonfigurasi dengan Google.
- Java diinstal di lingkungan Anda.
Yang Akan Anda Pelajari
- Cara memverifikasi konektivitas dengan membuat permintaan yang valid ke Google Echo API.
- Cara menerima, mendekripsi, dan mengurai permintaan dari Google ke Partner Hosted echo API.
2. Penyiapan dan Persyaratan
Download Aplikasi
Download kode contoh Java.
Ringkasan Struktur Aplikasi
Contoh kode Java terintegrasi dengan Standard Payments API Google. Struktur project kode contoh berisi direktori outbound serta direktori inbound untuk mencerminkan permintaan echo masuk dari Google ke partner dan permintaan keluar dari penerapan partner ke Google.
Kedua direktori ini berisi hierarki yang serupa dalam pengemasan berdasarkan lapisan. Tiga lapisan utama adalah controller, service, dan domain.
- Paket
controllerberisi API. - Paket
servicebertanggung jawab atas logika bisnis, encoding base64url, dan enkripsi. - Paket
domainberisi POJO.
Menginstal Dependensi
Buka direktori project dan jalankan perintah berikut untuk menginstal dependensi yang diperlukan menggunakan Maven Wrapper. Jika menggunakan App Engine, Anda dapat melewati langkah ini.
./mvnw 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
src/main/resources/application.propertiesdi direktori project. - Tetapkan properti
payment.integrator.account.idke PIAID yang dikeluarkan untuk Anda oleh Google.
payment.integrator.account.id={YOUR_PAYMENT_INTEGRATOR_ACCOUNT_ID}
4. Menetapkan URL gema yang dihosting Google
URL echo yang dihosting Google berbeda-beda, bergantung pada API yang Anda integrasikan. Buka dokumentasi referensi API untuk jenis integrasi tertentu dan salin URL untuk API echo diagnostik. Setelah menyalin URL, lanjutkan ke langkah berikutnya untuk memperbaruinya di project Java.
- Buka
src/main/resources/application.propertiesdi direktori project. - Tetapkan properti
API_SERVICE_NAMEagar sesuai dengan yang ada di dokumentasi developer.
google.hosted.echo.url=vgw.googleapis.com/gsp/{API_SERVICE_NAME}/echo/
5. Menambahkan kunci PGP
Seperti yang ditunjukkan di bawah, tambahkan kunci PGP Anda untuk mengaktifkan enkripsi PGP.
- Buka
src/resources/publicKey1.gpgdan tambahkan kunci publik yang dienkapsulasi ASCII ke file. - Buka
src/resources/privateKey1.gpgdan tambahkan kunci pribadi yang dienkapsulasi ASCII ke file. - Buka
src/resources/passphrase1.txtdan tambahkan frasa sandi rahasia ke file.

Untuk mengaktifkan enkripsi kunci ganda, tambahkan kunci publik kedua Anda ke publicKey2.gpg, tambahkan kunci pribadi kedua Anda ke privateKey2.gpg, dan tambahkan frasa sandi kedua Anda ke passphrase.txt. Setelah menambahkan kunci kedua, hapus komentar pada baris kode yang dikomentari yang bertanggung jawab untuk memuat pasangan kunci kedua di KeyConfig.addPrivateKeyAndPassphrase(...) dan KeyConfig.addPublicKeys(...).
Bagus, Anda sudah siap menjalankan aplikasi.
6. Menjalankan Aplikasi
Untuk memulai aplikasi, jalankan perintah berikut.
$ ./mvnw spring-boot:run
Jika Anda menjalankan instance App Engine yang telah dikonfigurasi sebelumnya, jalankan perintah ini.
$ gcloud app deploy
Secara default, server akan memproses port 8080. Untuk melihat UI Swagger Open API, buka URL di bawah.
https://{APPLICATION_HOST}/swagger-ui.html
7. Menguji konektivitas Google Standard Payments Outbound API
Setelah aplikasi berjalan, saatnya menguji konektivitas dengan Google echo API.
Swagger UI atau CLI dapat digunakan untuk menjalankan perintah berikut guna 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.
Mengirim permintaan melalui command line
Ganti HOSTNAME dengan nama host server Anda sebelum menjalankan perintah.
$ curl -X POST -H 'Content-Type: text/plain' -d 'Hello from Partner Bank!' https://{HOSTNAME}/echo
Mengirim permintaan di Swagger UI
Untuk mengirim permintaan dengan Swagger UI, buka https://{APPLICATION_HOST}/swagger-ui dan tetapkan pesan klien dalam isi permintaan. Klik tombol 'Execute' jika Anda sudah siap mengirim permintaan ke Google.

Menerima respons
Permintaan API yang berhasil akan menghasilkan respons berikut dari Google.
{
"responseHeader":{
"responseTimestamp":"1606710026723"
},
"clientMessage":"Hello from Bank Little Bear!",
"serverMessage":"Server message."
}
Langkah demi langkah
Setelah permintaan berhasil dikirim oleh server Anda, mari kita tinjau cara kerjanya.
Buat permintaan
createEchoRequestWithMessage di OutboundEchoService membuat permintaan echo yang dikirim ke API Google.
String jsonEchoRequestMessage = objectMapper.writeValueAsString(createEchoRequestWithMessage(message));
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 Bank Little Bear!"
}
Melakukan enkode dan mengenkripsi permintaan Base64url
Semua permintaan dienkripsi dan dienkode base64url. Dalam contoh ini, PgpEncryptor.java berisi metode pembantu yang melakukan enkripsi dan dekripsi serta encoding base64url untuk Anda. Metode di bawah mengenkode permintaan dan melakukan enkripsi menggunakan kunci publik Google.
String encryptedMessage = pgpEncryptor.encrypt(jsonEchoRequestMessage);
Kirim permintaan POST
Pesan terenkripsi dikirim melalui permintaan POST.
postStandardPaymentsEchoApi(encryptedMessage)
Mendekripsi dan mendekode base64url respons, lalu menampilkan respons
Respons Google yang berhasil dienkode dan dienkripsi base64url, sehingga perlu didekode dan didekripsi juga sebelum dapat ditampilkan dalam teks biasa. Metode decrypt mendekode dan mendekripsi respons base64url.
String decryptedData =
pgpEncryptor.decrypt(postStandardPaymentsEchoApi(encryptedMessage).getBody());
Menampilkan respons
Respons ditampilkan dengan Kode Status Respons HTTP 202.
return new ResponseEntity<>(decryptedData, HttpStatus.ACCEPTED);
8. Menguji konektivitas Inbound API
Untuk menguji Konektivitas API echo masuk, Google akan mengirim permintaan ke API echo yang Dihosting Partner. 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 dan mendekripsi permintaan Base64url
Saat permintaan diterima, PgpEncryptor.java akan memanggil decrypt yang akan mendekode base64url dan mendekripsi permintaan.
String decryptedRequest = pgpEncryptor.decrypt(echoRequest);
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.
private EchoResponse convertEchoRequestStringToEchoResponse(String decryptedRequest);
Respons mencakup pesan dari Google, serta stempel waktu dan pesan dari server.
{
"responseHeader": {
"responseTimestamp": {
"epochMillis":1481899950236
}
},
"clientMessage": "echo Me",
"serverMessage": "Debug ID 12345"
}
Melakukan enkode base64url dan mengenkripsi respons
Karena semua permintaan dienkripsi dan dienkode base64url, PgpEncryptor.java memanggil encrypt untuk mengenkode base64url dan mengenkripsi permintaan.
pgpEncryptor.encrypt(echoResponseString)
Menampilkan respons
Respons ditampilkan dengan Kode Status Respons HTTP 202.
return new ResponseEntity<>(pgpEncryptor.encrypt(echoResponseString), HttpStatus.ACCEPTED);
9. Selamat!
Dalam codelab ini, Anda telah berhasil membuat konektivitas dengan Payments API.