Cara membangun konektivitas dengan Google API di Java

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 echo API yang Dihosting Partner.

2. Penyiapan dan Persyaratan

Mendownload Aplikasi

Download kode contoh Java.

Ringkasan Struktur Aplikasi

Kode contoh 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 implementasi partner ke Google.

Kedua direktori ini berisi hierarki yang serupa dalam pengemasan menurut lapisan. Tiga lapisan utama adalah controller, service, dan domain.

  • Paket controller berisi API.
  • Paket service bertanggung jawab atas 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 Pengintegrasi 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.

  1. Buka src/main/resources/application.properties di direktori project.
  2. Tetapkan properti payment.integrator.account.id ke PIAID yang diberikan kepada Anda oleh Google.
payment.integrator.account.id={YOUR_PAYMENT_INTEGRATOR_ACCOUNT_ID}

4. Menetapkan URL echo 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.

  1. Buka src/main/resources/application.properties di direktori project.
  2. Tetapkan properti API_SERVICE_NAME agar cocok dengan yang ditemukan dalam 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.gpg dan tambahkan kunci publik berlapis ASCII ke file.
  • Buka src/resources/privateKey1.gpg dan tambahkan kunci pribadi ASCII ke file.
  • Buka src/resources/passphrase1.txt dan tambahkan frasa sandi rahasia ke file.

Menambahkan kunci PGP

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 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 memproses di port 8080. Untuk melihat UI Swagger Open API, buka URL di bawah ini.

https://{APPLICATION_HOST}/swagger-ui.html

7. Menguji konektivitas API Keluar Pembayaran Google Standard

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 ke server Google. Contoh application echo API menerima permintaan POST dalam teks biasa. Setelah menerima permintaan tersebut, 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

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 untuk mengirim permintaan ke Google.

Mengirimkan permintaan Echo GSP melalui Swagger

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 mem-build permintaan echo yang dikirim ke API Google.

String jsonEchoRequestMessage = objectMapper.writeValueAsString(createEchoRequestWithMessage(message));

Permintaan yang dihasilkan menyertakan 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!"
}

Base64url mengenkode dan mengenkripsi permintaan

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 berhasil dienkode dan dienkripsi dengan base64url, sehingga perlu didekode dan didekripsi juga sebelum dapat ditampilkan dalam teks biasa. Metode decrypt base64url mendekode dan mendekripsi respons.

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 API Masuk

Untuk menguji Konektivitas API echo masuk, Google akan mengirimkan permintaan ke Partner Hosted echo API. Jika Anda sudah siap, bekerja samalah dengan kontak Google Anda untuk memicu permintaan ini dari Google.

Tes {i>echo <i}diselesaikan ketika Anda dapat membaca permintaan {i>echo <i}yang masuk dari Google dan merespons dengan respons {i>echo <i}yang valid.

Langkah demi langkah

Setelah permintaan berhasil diterima dan ditangani oleh server Anda, mari kita tinjau cara kerjanya.

Base64url mendekripsi dan mendekripsi permintaan

Saat permintaan diterima, PgpEncryptor.java akan memanggil decrypt yang akan mendekode base64url dan mendekripsi permintaan tersebut.

String decryptedRequest = pgpEncryptor.decrypt(echoRequest);

Menerima permintaan

Google mengirim payload pesan yang mirip 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 untuk membuat respons.

private EchoResponse convertEchoRequestStringToEchoResponse(String decryptedRequest);

Responsnya mencakup pesan dari Google, serta stempel waktu dan pesan dari server.

{
  "responseHeader": {
    "responseTimestamp": {
      "epochMillis":1481899950236
    }
  },
  "clientMessage": "echo Me",
  "serverMessage": "Debug ID 12345"
}

Base64url mengenkode dan mengenkripsi respons

Karena semua permintaan dienkripsi dan dienkode base64url, PgpEncryptor.java memanggil encrypt untuk mengenkode dan mengenkripsi permintaan dengan base64url.

pgpEncryptor.encrypt(echoResponseString)

Tampilkan 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.