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

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

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

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

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

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

  • Google Standard Payments echo API को मान्य अनुरोध भेजकर, कनेक्टिविटी की पुष्टि करने का तरीका.
  • Google से पार्टनर के होस्ट किए गए 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 नाम की फ़ाइल बनाएं और उसमें ASCII (एएससीआईआई) से सुरक्षित की गई निजी कुंजी जोड़ें.
  • 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 के सर्वर पर कॉल शुरू करने के लिए, नीचे दिया गया निर्देश चलाएं. ऐप्लिकेशन इको एपीआई का सैंपल, सादे टेक्स्ट में पोस्ट अनुरोध को स्वीकार करता है. अनुरोध मिलने के बाद, 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."
}

चरण-दर-चरण

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

अनुरोध बनाएं

bodyHelpers.js में मौजूद buildEchoRequestBody, 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 कोड में बदले गए पीओएसटी अनुरोध भेजें

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

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, पार्टनर के होस्ट किए गए इको एपीआई को एक अनुरोध भेजेगा.

जब आप तैयार हों, तो 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 से कनेक्ट कर लिया है!