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

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

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

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

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

  • Google Echo API को मान्य अनुरोध करके, कनेक्टिविटी की पुष्टि कैसे करें.
  • Google से Partner Hosted echo API को मिलने वाले अनुरोध को पाने, डिक्रिप्ट करने, और पार्स करने का तरीका.

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

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

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

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

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

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

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

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

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

./mvnw install

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

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

  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 एन्क्रिप्शन चालू करने के लिए अपनी PGP कुंजियां जोड़ें.

  • src/resources/publicKey1.gpg पर जाएं और फ़ाइल में ASCII-Armored सार्वजनिक पासकोड जोड़ें.
  • 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 UI देखने के लिए, नीचे दिए गए यूआरएल पर जाएं.

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

7. Google Standard Payments Outbound API की कनेक्टिविटी की जांच करना

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

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

कमांड लाइन के ज़रिए अनुरोध भेजना

कमांड चलाने से पहले, HOSTNAME की जगह अपने सर्वर होस्ट का नाम डालें.

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

Swagger UI में अनुरोध भेजना

Swagger UI की मदद से अनुरोध भेजने के लिए, https://{APPLICATION_HOST}/swagger-ui पर जाएं और अनुरोध के मुख्य भाग में क्लाइंट मैसेज सेट करें. Google को अनुरोध भेजने के लिए, ‘लागू करें' बटन पर क्लिक करें.

Swagger के ज़रिए GSP Echo का अनुरोध सबमिट करना

जवाब पाना

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

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

चरण-दर-चरण

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

अनुरोध बनाना

createEchoRequestWithMessage, OutboundEchoService में 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 अनुरोध भेजना

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

postStandardPaymentsEchoApi(encryptedMessage)

जवाब को डिक्रिप्ट और base64url डीकोड करता है. इसके बाद, जवाब दिखाता है

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

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

जवाब वापस पाना

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

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

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

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

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

चरण-दर-चरण

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

Base64url डिकोड करें और अनुरोध को डिक्रिप्ट करें

अनुरोध मिलने पर, PgpEncryptor.java, decrypt को कॉल करेगा. इसके बाद, decrypt, अनुरोध को base64url के ज़रिए डिकोड और डिक्रिप्ट करेगा.

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 से कनेक्टिविटी सेट अप कर ली है!