Node.js में Payments एपीआई के साथ कनेक्टिविटी स्थापित करने का तरीका

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

यह एक ऐसा कोडलैब है जिसमें आपको खुद से काम करना होगा. इसमें आपको स्टैंडर्ड पेमेंट्स एपीआई से कनेक्टिविटी सेट अप करने का तरीका बताया जाएगा.

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

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

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

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

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

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

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

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

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

npm install

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

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

  1. प्रोजेक्ट डायरेक्ट्री में मौजूद server.js फ़ाइल पर जाएं.
  2. वैरिएबल PIAID को उस PIAID पर सेट करें जो Google ने आपको जारी किया है.
const PIAID = '{PAYMENT_INTEGRATOR_ACCOUNT_ID}';

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

प्रोजेक्ट स्ट्रक्चर में ये फ़ाइलें बनाएं और PGP एन्क्रिप्शन चालू करने के लिए, अपनी PGP कुंजियां जोड़ें.

  • public.key नाम की एक फ़ाइल बनाएं और उसमें ASCII आर्मर्ड पब्लिक की जोड़ें.
  • private.key नाम की फ़ाइल बनाएं और उसमें एएससीआईआई आर्मर्ड निजी पासकोड जोड़ें.
  • passphrase.txt नाम की फ़ाइल बनाएं और उसमें सीक्रेट पासफ़्रेज़ जोड़ें.

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

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

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

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

$ node server.js
Server listening on port 8080...

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

$ gcloud app deploy

डिफ़ॉल्ट रूप से, सर्वर पोर्ट 8080 पर सिग्नल पाने के लिए कॉन्फ़िगर किया जाएगा.

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

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

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

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

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

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

चरण-दर-चरण

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

अनुरोध बनाना

buildEchoRequestBody, bodyHelpers.js में Google के एपीआई को भेजे गए echo अनुरोध को बनाता है.

const message = bodyHelpers.buildEchoRequestBody(req.body);

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

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

अनुरोध को एन्क्रिप्ट (सुरक्षित) करना

सभी अनुरोधों को एन्क्रिप्ट किया जाता है और base64url के ज़रिए एन्कोड किया जाता है. इस सैंपल में, crypto.js में हेल्पर तरीके शामिल हैं. ये तरीके, आपके लिए एन्क्रिप्शन और डिक्रिप्शन की प्रोसेस पूरी करते हैं. crypto.encrypt तरीके में, Google के सार्वजनिक पासकोड का इस्तेमाल करके एन्क्रिप्शन किया जाता है.

const encrypted = await crypto.encrypt(message);

base64url कोड में बदला गया POST अनुरोध भेजना

एन्क्रिप्ट किए गए मैसेज को base64url पैकेज का इस्तेमाल करके base64url कोड में बदला जाता है. इसके बाद, axios का इस्तेमाल करके POST अनुरोध के ज़रिए भेजा जाता है.

const response = await axios.post(ECHO_URL, base64url(encrypted), AXIOS_CONFIG);

जवाब को डिक्रिप्ट करना और उसे वापस भेजना

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

const encryptedMessage = base64url.toBuffer(response.data);
const decryptedResponse = await crypto.decrypt(encryptedMessage);
res.status(200);
res.send(decryptedResponse);

7. Partner API की कनेक्टिविटी की जांच करना

Google, पार्टनर के होस्ट किए गए Echo API को एक अनुरोध भेजेगा, ताकि पार्टनर के Echo API से कनेक्टिविटी की जांच की जा सके.

जब आप तैयार हों, तब कृपया Google की तरफ़ से संपर्क करने वाले व्यक्ति से बात करके, Google से यह अनुरोध करें.

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

चरण-दर-चरण

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

अनुरोध को Base64url से डिकोड करना

अनुरोध मिलने पर, आपको सबसे पहले उसे base64url डिकोड करना होगा.

const encryptedRequest = base64url.toBuffer(req.body);

अनुरोध को डिक्रिप्ट करना

अनुरोध को base64url से डीकोड करने के बाद, आपको उसे डिक्रिप्ट करना होगा.

const decryptedRequest = await crypto.decrypt(encryptedRequest);

अनुरोध पाना

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

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

जवाब तैयार करना

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

clientMessage = JSON.parse(decryptedRequest).clientMessage;
responseBody = bodyHelpers.buildEchoResponseBody(clientMessage);

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

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

जवाब को एन्क्रिप्ट (सुरक्षित) करें और base64 कोड में बदलें

जवाब का मैसेज बनाने के बाद, उसे एन्क्रिप्ट (सुरक्षित) किया जा सकता है. साथ ही, उसे base64url में कोड में बदला जा सकता है.

encryptedResponse = await crypto.encrypt(responseBody);
const encodedResponse = base64url(encryptedResponse);

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

आखिर में, POST रिस्पॉन्स भेजा जा सकता है.

res.send(encodedResponse);

8. बधाई हो!

इस कोडलैब में, आपने Echo API के साथ कनेक्टिविटी सेट अप कर ली है!