1. Sebelum memulai
Prasyarat
- Anda telah menyelesaikan langkah 1 dan 2 dari Proses Implementasi.
- 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
Kode contoh Java terintegrasi dengan API Pembayaran Standar Google. Struktur project kode contoh berisi direktori outbound
serta direktori inbound
untuk mencerminkan permintaan gema masuk dari Google ke partner dan permintaan keluar dari implementasi partner ke Google.
Kedua direktori ini berisi hierarki serupa dalam pengemasan menurut lapisan. Tiga lapisan utama adalah controller
, service
, dan domain
.
- Paket
controller
berisi API. - Paket
service
bertanggung jawab untuk logika bisnis, encoding base64url, dan enkripsi. - Paket
domain
berisi 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 sudah menerima PIAID dari Google dengan menyelesaikan prasyarat sebelum memulai tutorial ini.
- Buka
src/main/resources/application.properties
di direktori project. - Tetapkan properti
payment.integrator.account.id
ke PIAID yang diberikan Google untuk Anda.
payment.integrator.account.id={YOUR_PAYMENT_INTEGRATOR_ACCOUNT_ID}
4. Menyetel 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 spesifik Anda dan salin URL untuk diagnostik echo API. Setelah menyalin URL, lanjutkan ke langkah berikutnya untuk mengupdatenya di project Java.
- Buka
src/main/resources/application.properties
di direktori project. - Setel properti
API_SERVICE_NAME
agar sesuai dengan yang ditemukan dalam dokumentasi developer.
google.hosted.echo.url=vgw.googleapis.com/gsp/{API_SERVICE_NAME}/echo/
5. Tambahkan kunci PGP
Seperti yang ditunjukkan di bawah, tambahkan kunci PGP Anda untuk mengaktifkan enkripsi PGP.
- Buka
src/resources/publicKey1.gpg
dan tambahkan kunci publik berlapis ASCII ke file. - Buka
src/resources/privateKey1.gpg
dan tambahkan kunci pribadi berlapis ASCII ke file. - Buka
src/resources/passphrase1.txt
dan 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 ke passphrase.txt
. Setelah menambahkan kunci kedua, hapus tanda komentar pada baris kode yang diberi komentar yang bertanggung jawab memuat pasangan kunci kedua di KeyConfig.addPrivateKeyAndPassphrase(...)
dan KeyConfig.addPublicKeys(...)
.
Bagus, Anda siap untuk 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 memantau port 8080. Untuk melihat UI Swagger Open API, buka URL di bawah.
https://{APPLICATION_HOST}/swagger-ui.html
7. Menguji konektivitas API Outbound Google Standard Payments
Setelah aplikasi berjalan, saatnya menguji konektivitas dengan Google echo API.
UI Swagger atau CLI dapat digunakan untuk menjalankan perintah berikut guna 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.
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
Kirim permintaan di UI Swagger
Untuk mengirim permintaan dengan UI Swagger, buka https://{APPLICATION_HOST}/swagger-ui
dan tetapkan pesan klien dalam isi permintaan. Klik tombol ‘Jalankan' jika Anda telah siap mengirimkan 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.
Membuat 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!"
}
Mengenkode dan mengenkripsi permintaan Base64url
Semua permintaan dienkripsi dan dienkode base64url. Dalam contoh ini, PgpEncryptor.java
berisi metode bantuan 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);
Mengirim permintaan POST
Pesan terenkripsi dikirim melalui permintaan POST.
postStandardPaymentsEchoApi(encryptedMessage)
Mendekripsi dan base64url mendekode respons dan menampilkan respons
Respons Google yang sukses adalah dienkode dan dienkripsi base64url, sehingga perlu didekode dan didekripsi sebelum dapat ditampilkan dalam teks biasa. Metode decrypt
base64url mendekode dan mendekripsi respons.
String decryptedData =
pgpEncryptor.decrypt(postStandardPaymentsEchoApi(encryptedMessage).getBody());
Kembalikan respons
Respons dikembalikan dengan Kode Status Respons HTTP 202.
return new ResponseEntity<>(decryptedData, HttpStatus.ACCEPTED);
8. Menguji konektivitas API Masuk
Untuk menguji Konektivitas API echo masuk, Google akan mengirimkan 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.
Mendekode dan mendekripsi permintaan Base64url
Saat permintaan diterima, PgpEncryptor.java
akan memanggil decrypt
yang akan mendekode dan mendekripsi permintaan base64url.
String decryptedRequest = pgpEncryptor.decrypt(echoRequest);
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.
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" }
Mengenkode dan mengenkripsi respons Base64url
Karena semua permintaan dienkripsi dan dienkode base64url, PgpEncryptor.java
akan memanggil encrypt
untuk mengenkode base64url dan mengenkripsi permintaan tersebut.
pgpEncryptor.encrypt(echoResponseString)
Kembalikan respons
Respons dikembalikan 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.