Java में Google API के साथ कनेक्टिविटी कैसे सेट करें

1. शुरू करने से पहले

ज़रूरी शर्तें

  • आपने लागू करने की प्रक्रिया के पहले और दूसरे चरण को पूरा कर लिया है.
  • Google के साथ कॉन्फ़िगर किए गए डोमेन पर, Google App Engine या अपने समाधान का इस्तेमाल करके, दिए गए Java सर्वर को TLS की मदद से बंद किया जा सकता है.
  • Java आपके एनवायरमेंट में इंस्टॉल होता है.

आपको क्या सीखने को मिलेगा

  • Google echo API से मान्य अनुरोध करके, कनेक्टिविटी की पुष्टि करने का तरीका.
  • Google से पार्टनर के होस्ट किए गए echo API को अनुरोध पाने, उसे डिक्रिप्ट करने, और पार्स करने का तरीका.

2. सेटअप और ज़रूरी शर्तें

ऐप्लिकेशन डाउनलोड करना

Java का सैंपल कोड डाउनलोड करें.

ऐप्लिकेशन के स्ट्रक्चर की खास जानकारी

Java सैंपल कोड, Google के स्टैंडर्ड पेमेंट एपीआई के साथ इंटिग्रेट होता है. सैंपल कोड प्रोजेक्ट स्ट्रक्चर में एक outbound डायरेक्ट्री और एक inbound डायरेक्ट्री होती है. यह डायरेक्ट्री, Google की तरफ़ से पार्टनर को भेजे जाने वाले एको अनुरोध को दिखाती है. साथ ही, पार्टनर से Google को भेजे जाने वाले आउटबाउंड अनुरोध को भी दिखाती है.

इन दोनों डायरेक्ट्री में, लेयर के हिसाब से पैकेजिंग में एक जैसी हैरारकी होती है. तीन मुख्य लेयर controller, service, और domain हैं.

  • controller पैकेज में एपीआई शामिल होते हैं.
  • service पैकेज, कारोबारी लॉजिक, base64url कोड में बदलने, और एन्क्रिप्शन के लिए ज़िम्मेदार है.
  • domain पैकेज में POJOs शामिल हैं.

डिपेंडेंसी इंस्टॉल करें

प्रोजेक्ट डायरेक्ट्री पर जाएं और Maven Wrapper का इस्तेमाल करके, ज़रूरी डिपेंडेंसी इंस्टॉल करने के लिए यहां दिया गया कमांड चलाएं. अगर App Engine का इस्तेमाल किया जा रहा है, तो इस चरण को छोड़ा जा सकता है.

./mvnw install

3. पेमेंट इंटिग्रेटर खाता आईडी (पीआईएआईडी) कॉन्फ़िगर करना

पेमेंट इंटिग्रेटर खाता आईडी (PIAID) एक आइडेंटिफ़ायर होता है. इसका इस्तेमाल, खास तौर पर इंटिग्रेशन की पहचान करने के लिए किया जाता है. इस ट्यूटोरियल को शुरू करने से पहले, आपको Google से अपना पीआईएआईडी मिल गया होगा. इसके लिए, आपको ज़रूरी शर्तें पूरी करनी होंगी.

  1. प्रोजेक्ट डायरेक्ट्री में src/main/resources/application.properties पर जाएं.
  2. प्रॉपर्टी payment.integrator.account.id को उस PIAID पर सेट करें जो Google ने आपको जारी किया था.
payment.integrator.account.id={YOUR_PAYMENT_INTEGRATOR_ACCOUNT_ID}

4. Google की ओर से होस्ट किए जाने वाले इको यूआरएल को सेट करें

Google की ओर से होस्ट किया गया echo यूआरएल अलग-अलग होता है. यह इस बात पर निर्भर करता है कि किस एपीआई के साथ इंटिग्रेट किया जा रहा है. अपने इंटिग्रेशन के खास टाइप के लिए, एपीआई के रेफ़रंस दस्तावेज़ देखें और डाइग्नोस्टिक्स इको एपीआई का यूआरएल कॉपी करें. यूआरएल कॉपी करने के बाद, इसे Java प्रोजेक्ट में अपडेट करने के लिए अगले चरण पर जाएं.

  1. प्रोजेक्ट डायरेक्ट्री में src/main/resources/application.properties पर जाएं.
  2. API_SERVICE_NAME प्रॉपर्टी को, डेवलपर दस्तावेज़ में मौजूद जानकारी से मैच करने के लिए सेट करें.
google.hosted.echo.url=vgw.googleapis.com/gsp/{API_SERVICE_NAME}/echo/

5. पीजीपी कुंजियां जोड़ना

PGP एन्क्रिप्शन की सुविधा चालू करने के लिए, नीचे दिखाए गए तरीके से अपनी PGP कुंजियां जोड़ें.

  • src/resources/publicKey1.gpg पर जाएं और फ़ाइल में ASCII कवच वाली सार्वजनिक कुंजी जोड़ें.
  • src/resources/privateKey1.gpg पर जाएं और फ़ाइल में ASCII कवच वाली निजी कुंजी जोड़ें.
  • src/resources/passphrase1.txt पर जाएं और फ़ाइल में सीक्रेट लंबा पासवर्ड जोड़ें.

PGP कुंजियां जोड़ना

दो कुंजियों वाला एन्क्रिप्शन चालू करने के लिए, publicKey2.gpg में अपनी दूसरी सार्वजनिक कुंजी जोड़ें. इसके बाद, privateKey2.gpg में अपनी दूसरी निजी कुंजी जोड़ें और passphrase.txt में अपना दूसरा पासफ़्रेज़ जोड़ें. दूसरी कुंजियों को जोड़ने के बाद, कोड की टिप्पणी की गई उन लाइनों को हटाएं जो KeyConfig.addPrivateKeyAndPassphrase(...) और KeyConfig.addPublicKeys(...) में कुंजियों के दूसरे जोड़े को लोड करने के लिए ज़िम्मेदार हैं.

बहुत बढ़िया, आप ऐप्लिकेशन चलाने के लिए पूरी तरह तैयार हैं!

6. ऐप्लिकेशन चलाना

ऐप्लिकेशन शुरू करने के लिए, यह कमांड चलाएं.

  $ ./mvnw spring-boot:run

अगर पहले से कॉन्फ़िगर किया गया App Engine इंस्टेंस चलाया जा रहा है, तो इसके बजाय इस निर्देश को चलाएं.

$ gcloud app deploy

डिफ़ॉल्ट रूप से, सर्वर पोर्ट 8080 पर सुनेगा. Open API Swagger यूज़र इंटरफ़ेस (यूआई) देखने के लिए, नीचे दिए गए यूआरएल पर जाएं.

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

7. Google Standard Payments आउटबाउंड एपीआई की कनेक्टिविटी की जांच करना

ऐप्लिकेशन के चलने के बाद, Google echo API से कनेक्टिविटी की जांच करने का समय आ गया है.

सैंपल ऐप्लिकेशन के इंस्टेंस से Google के सर्वर पर कॉल शुरू करने के लिए, नीचे दिए गए निर्देश को चलाने के लिए, Swagger UI या CLI में से किसी एक का इस्तेमाल किया जा सकता है. सैंपल ऐप्लिकेशन echo API, सादे टेक्स्ट में पोस्ट अनुरोध स्वीकार करता है. अनुरोध मिलने के बाद, Google के होस्ट किए गए एपीआई को एक और अनुरोध भेजा जाता है.

कमांड लाइन का इस्तेमाल करके अनुरोध भेजना

यह निर्देश लागू करने से पहले, HOSTNAME की जगह अपने सर्वर होस्ट का नाम डालें.

  $ curl -X POST -H 'Content-Type: text/plain' -d 'Hello from Partner Bank!' https://{HOSTNAME}/echo

स्वैगर यूज़र इंटरफ़ेस (यूआई) में अनुरोध भेजें

स्वैगर यूज़र इंटरफ़ेस (यूआई) की मदद से अनुरोध भेजने के लिए, https://{APPLICATION_HOST}/swagger-ui पर जाएं और अनुरोध के मुख्य हिस्से में क्लाइंट का मैसेज सेट करें. Google को अनुरोध भेजने के लिए, 'कार्रवाई करें' बटन पर क्लिक करें.

Swagger की मदद से जीएसपी इको अनुरोध सबमिट करना

जवाब पाना

एपीआई अनुरोध पूरा होने पर, Google से यह जवाब मिलेगा.

{
   "responseHeader":{
      "responseTimestamp":"1606710026723"
   },
   "clientMessage":"Hello from  Bank Little Bear!",
   "serverMessage":"Server message."
}

चरण-दर-चरण

अब आपके सर्वर से अनुरोध भेज दिया गया है. आइए, देखें कि यह कैसे काम करता है.

अनुरोध बनाएं

OutboundEchoService में मौजूद createEchoRequestWithMessage, Google के एपीआई को भेजे गए echo अनुरोध को बनाता है.

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

जनरेट किए गए अनुरोध में clientMessage के साथ-साथ कई डिफ़ॉल्ट वैल्यू फ़ील्ड भी शामिल होते हैं.

{
   "requestHeader":{
      "protocolVersion":{
         "major":1,
         "minor":0,
         "revision":0
      },
      "requestId":"ddfe0fd0-ffdc-4fcf-991a-f0611ec83970",
      "requestTimestamp":"1606715389040"
   },
   "clientMessage":"Hello from Bank Little Bear!"
}

Base64url कोड को एन्कोड करें और अनुरोध को एन्क्रिप्ट (सुरक्षित) करें

सभी अनुरोध एन्क्रिप्ट किए जाते हैं और base64url कोड में बदले जाते हैं. इस सैंपल में, PgpEncryptor.java में सहायक तरीके शामिल हैं. ये आपके लिए एन्क्रिप्शन और डिक्रिप्शन के साथ-साथ, base64url कोड में बदलने की सुविधा भी देते हैं. नीचे दिया गया तरीका, अनुरोध को कोड में बदलता है और Google की सार्वजनिक कुंजी का इस्तेमाल करके एन्क्रिप्ट (सुरक्षित) करता है.

String encryptedMessage = pgpEncryptor.encrypt(jsonEchoRequestMessage);

पीओएसटी अनुरोध भेजें

एन्क्रिप्ट (सुरक्षित) किया गया मैसेज, POST अनुरोध के ज़रिए भेजा जाता है.

postStandardPaymentsEchoApi(encryptedMessage)

जवाब को डिक्रिप्ट करें और base64url से डिकोड करें. इसके बाद, जवाब दिखाएं

Google सही जवाब देता है, base64url कोड में बदलकर उसे एन्क्रिप्ट (सुरक्षित) किया गया है. इसलिए, इसे सादे टेक्स्ट में वापस करने से पहले, उसे डिकोड करने और डिक्रिप्ट करने की ज़रूरत है. decrypt method base64url, रिस्पॉन्स को डिकोड और डिक्रिप्ट करता है.

String decryptedData =
     pgpEncryptor.decrypt(postStandardPaymentsEchoApi(encryptedMessage).getBody());

जवाब दें

जवाब, 202 एचटीटीपी रिस्पॉन्स स्टेटस कोड के साथ दिया जाता है.

return new ResponseEntity<>(decryptedData, HttpStatus.ACCEPTED);

8. इनबाउंड एपीआई कनेक्टिविटी की जांच करें

इनबाउंड echo API कनेक्टिविटी की जांच करने के लिए, Google पार्टनर के होस्ट किए गए echo API को अनुरोध भेजेगा. जब आप तैयार हों, तब Google से इस अनुरोध को ट्रिगर करने के लिए, Google के प्रतिनिधि से संपर्क करें.

Google से मिलने वाले इनबाउंड इको अनुरोध को पढ़ने और किसी मान्य इको रिस्पॉन्स के साथ जवाब देने पर, इको टेस्ट पूरा हो जाता है.

चरण-दर-चरण

अब आपके सर्वर को अनुरोध मिल गया है और उसे मैनेज कर लिया गया है. अब देखते हैं कि यह कैसे काम करता है.

Base64url, अनुरोध को डिकोड और डिक्रिप्ट करता है

कोई अनुरोध मिलने पर, PgpEncryptor.java, decrypt को कॉल करेगा. यह बेस 64url को डिकोड करके, अनुरोध को डिक्रिप्ट करेगा.

String decryptedRequest = pgpEncryptor.decrypt(echoRequest);

अनुरोध पाएं

Google ने एक मैसेज पेलोड भेजा है, जो डिकोड करने और डिक्रिप्ट करने के बाद दिया गया मैसेज पेलोड जैसा है.

{
  "requestHeader": {
    "protocolVersion": {
      "major": 1
    },
    "requestId": "G1MQ0YERJ0Q7LPM",
    "requestTimestamp": {
      "epochMillis":1481899949606
    },
    "paymentIntegratorAccountId": "abcdef123456"
  },
  "clientMessage": "echo Me"
}

जवाब तैयार करें

इनबाउंड इको अनुरोध को पढ़ लेने के बाद, जवाब तैयार किया जा सकता है.

private EchoResponse convertEchoRequestStringToEchoResponse(String decryptedRequest);

जवाब में, Google का मैसेज, सर्वर का मैसेज, और टाइमस्टैंप शामिल होता है.

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

Base64url कोड को एन्कोड करें और रिस्पॉन्स को एन्क्रिप्ट (सुरक्षित) करें

सभी अनुरोध एन्क्रिप्ट (सुरक्षित) किए जाते हैं और base64url कोड में बदले जाते हैं. इसलिए, PgpEncryptor.java, अनुरोध को base64url कोड में बदलने और एन्क्रिप्ट करने के लिए encrypt को कॉल करता है.

pgpEncryptor.encrypt(echoResponseString)

जवाब दिखाना

इस रिस्पॉन्स को 202 एचटीटीपी रिस्पॉन्स स्टेटस कोड के साथ दिखाया जाता है.

return new ResponseEntity<>(pgpEncryptor.encrypt(echoResponseString), HttpStatus.ACCEPTED);

9. बधाई हो!

इस कोडलैब में, आपने Payments API से कनेक्ट किया है!