কিভাবে Node.js এ পেমেন্ট এপিআই এর সাথে সংযোগ স্থাপন করবেন

1. আপনি শুরু করার আগে

এটি একটি স্ব-নির্দেশিত কোডল্যাব যা স্ট্যানাডার্ড পেমেন্ট এপিআই-এর সাথে কীভাবে সংযোগ স্থাপন করতে হয় তার মধ্য দিয়ে চলে।

পূর্বশর্ত

  • আপনি বাস্তবায়ন প্রক্রিয়ার ধাপ 1 এবং 2 সম্পূর্ণ করেছেন।
  • আপনি Google অ্যাপ ইঞ্জিন বা Google এর সাথে কনফিগার করা ডোমেনে আপনার নিজস্ব সমাধান ব্যবহার করে TLS সমাপ্তির সাথে প্রদত্ত Node.js সার্ভার হোস্ট করতে পারেন।
  • Node.js আপনার পরিবেশে ইনস্টল করা আছে।

আপনি কি শিখবেন

  • গুগল স্ট্যান্ডার্ড পেমেন্ট ইকো এপিআই-এ একটি বৈধ অনুরোধ করে কীভাবে সংযোগ যাচাই করবেন।
  • পার্টনার হোস্টেড ইকো এপিআই-এর কাছে Google থেকে একটি অনুরোধ কীভাবে গ্রহণ করবেন, ডিক্রিপ্ট করবেন এবং পার্স করবেন।

2. সেটআপ এবং প্রয়োজনীয়তা

অ্যাপ্লিকেশনটি ডাউনলোড করুন

Node.js নমুনা কোড ডাউনলোড করুন।

নির্ভরতা ইনস্টল করুন

প্রজেক্ট ডিরেক্টরিতে নেভিগেট করুন এবং প্রয়োজনীয় নির্ভরতাগুলি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান। আপনি যদি অ্যাপ ইঞ্জিন ব্যবহার করেন তবে আপনি এই ধাপটি এড়িয়ে যেতে পারেন।

npm install

3. পেমেন্ট ইন্টিগ্রেটর অ্যাকাউন্ট আইডি (PIAID) কনফিগার করুন

পেমেন্ট ইন্টিগ্রেটর অ্যাকাউন্ট আইডি ( 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...

আপনি যদি একটি পূর্ব-কনফিগার করা অ্যাপ ইঞ্জিন উদাহরণ চালাচ্ছেন তবে পরিবর্তে এই কমান্ডটি চালান।

$ gcloud app deploy

ডিফল্টরূপে, সার্ভার পোর্ট 8080 এ শুনবে।

6. Google স্ট্যান্ডার্ড পেমেন্ট API সংযোগ পরীক্ষা করুন

এখন যেহেতু অ্যাপ্লিকেশনটি চলছে, এখন Google Standard Payments echo API- এর সাথে সংযোগ পরীক্ষা করার সময়।

আপনার নমুনা অ্যাপ্লিকেশন থেকে Google এর সার্ভারগুলিতে একটি কল শুরু করতে নিম্নলিখিত কমান্ডটি চালান৷ নমুনা অ্যাপ্লিকেশন ইকো API প্লেইনটেক্সটে একটি POST অনুরোধ গ্রহণ করে। অনুরোধ পাওয়ার পর, পরবর্তী অনুরোধ Google-হোস্টেড API-এ পাঠানো হয়।

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

একটি সফল API অনুরোধের ফলে Google থেকে নিম্নলিখিত প্রতিক্রিয়া হবে৷

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

ধাপে ধাপে

এখন আপনার সার্ভার দ্বারা একটি অনুরোধ সফলভাবে পাঠানো হয়েছে, আসুন এটি কীভাবে কাজ করে তা পর্যালোচনা করা যাক।

অনুরোধটি তৈরি করুন

bodyHelpers.jsbuildEchoRequestBody Google-এর API-এ পাঠানো 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 প্যাকেজ ব্যবহার করে এনকোড করা হয় এবং অক্ষ ব্যবহার করে একটি 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. টেস্ট পার্টনার API সংযোগ

অংশীদার ইকো API সংযোগ পরীক্ষা করতে, Google অংশীদার হোস্টেড 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 প্রতিক্রিয়া এনকোড

একবার আপনি প্রতিক্রিয়া বার্তা তৈরি করলে, আপনি এনক্রিপ্ট করতে প্রস্তুত এবং বেস64url এটিকে এনকোড করতে পারবেন।

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

প্রতিক্রিয়া ফেরত দিন

এবং, অবশেষে, আপনি POST প্রতিক্রিয়া পাঠাতে প্রস্তুত।

res.send(encodedResponse);

8. অভিনন্দন!

এই কোডল্যাবে, আপনি সফলভাবে Echo API-এর সাথে সংযোগ স্থাপন করেছেন!