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

১. শুরু করার আগে

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

পূর্বশর্ত

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

তুমি যা শিখবে

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

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

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

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

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

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

npm install

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

পেমেন্ট ইন্টিগ্রেটর অ্যাকাউন্ট আইডি ( PIAID ) হল একটি শনাক্তকারী যা আপনার ইন্টিগ্রেশনগুলিকে অনন্যভাবে সনাক্ত করতে ব্যবহৃত হয়। এই টিউটোরিয়ালটি শুরু করার আগে পূর্বশর্তগুলি পূরণ করে আপনার Google থেকে আপনার PIAID পাওয়া উচিত ছিল।

  1. প্রজেক্ট ডিরেক্টরিতে server.js ফাইলে যান।
  2. PIAID ভেরিয়েবলটিকে Google দ্বারা আপনাকে জারি করা PIAID-তে সেট করুন।
const PIAID = '{PAYMENT_INTEGRATOR_ACCOUNT_ID}';

৪. পিজিপি কী যোগ করুন

প্রকল্প কাঠামোতে নিম্নলিখিত ফাইলগুলি তৈরি করুন এবং PGP এনক্রিপশন সক্ষম করতে আপনার PGP কীগুলি যুক্ত করুন।

  • public.key নামে একটি ফাইল তৈরি করুন এবং ফাইলটিতে ASCII আর্মার্ড পাবলিক কী যুক্ত করুন।
  • private.key নামে একটি ফাইল তৈরি করুন এবং ফাইলটিতে ASCII আর্মার্ড প্রাইভেট কী যুক্ত করুন।
  • passphrase.txt নামে একটি ফাইল তৈরি করুন এবং ফাইলটিতে গোপন পাসফ্রেজটি যোগ করুন।

পিজিপি কী যোগ করা হচ্ছে

দারুন, আপনি অ্যাপ্লিকেশনটি চালানোর জন্য প্রস্তুত!

৫. অ্যাপ্লিকেশনটি চালান

অ্যাপ্লিকেশনটি শুরু করতে, নিম্নলিখিত কমান্ডটি কার্যকর করুন।

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

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

$ gcloud app deploy

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

৬. গুগল স্ট্যান্ডার্ড পেমেন্টস এপিআই সংযোগ পরীক্ষা করুন

এখন যেহেতু অ্যাপ্লিকেশনটি চলছে, তাই 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 গুগলের 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 প্যাকেজ ব্যবহার করে এনকোড করা হয়েছে এবং axios ব্যবহার করে একটি POST অনুরোধের মাধ্যমে পাঠানো হয়েছে।

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

ডিক্রিপ্ট করুন এবং প্রতিক্রিয়াটি ফেরত দিন

গুগলের সফল প্রতিক্রিয়া হল base64url এনকোডেড এবং এনক্রিপ্ট করা, তাই এটিকে প্লেইন টেক্সটে ফেরত পাঠানোর আগে ডিকোড এবং ডিক্রিপ্ট করা প্রয়োজন।

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

৭. পার্টনার এপিআই সংযোগ পরীক্ষা করুন

পার্টনার ইকো এপিআই কানেক্টিভিটি পরীক্ষা করার জন্য, গুগল পার্টনার হোস্টেড ইকো এপিআই-তে একটি অনুরোধ পাঠাবে।

যখন আপনি প্রস্তুত হবেন, তখন Google থেকে এই অনুরোধটি ট্রিগার করার জন্য আপনার Google যোগাযোগের সাথে কাজ করুন।

যখন আপনি গুগলের ইনবাউন্ড ইকো রিকোয়েস্টটি পড়তে পারবেন এবং একটি বৈধ ইকো রেসপন্স সহ সাড়া দিতে পারবেন তখন ইকো টেস্টটি সম্পূর্ণ হবে।

ধাপে ধাপে

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

Base64url অনুরোধটি ডিকোড করে

যখন আপনি অনুরোধটি পাবেন, তখন আপনাকে প্রথমে base64url থেকে এটি ডিকোড করতে হবে।

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

অনুরোধটি ডিক্রিপ্ট করুন

base64url অনুরোধটি ডিকোড করার পরে, আপনাকে এটি ডিক্রিপ্ট করতে হবে।

const decryptedRequest = await crypto.decrypt(encryptedRequest);

অনুরোধটি গ্রহণ করুন

গুগল একটি বার্তা পেলোড পাঠিয়েছে যা ডিকোড এবং ডিক্রিপ্ট করার পরে নিম্নলিখিতটির মতোই।

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

প্রতিক্রিয়া তৈরি করুন

একবার আপনি ইনবাউন্ড ইকো রিকোয়েস্টটি সফলভাবে পড়ার পর, আপনি প্রতিক্রিয়া তৈরি করতে প্রস্তুত।

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

প্রতিক্রিয়াটিতে গুগলের বার্তা, সেইসাথে একটি টাইমস্ট্যাম্প এবং সার্ভার থেকে আসা বার্তা অন্তর্ভুক্ত রয়েছে।

{
  "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);

৮. অভিনন্দন!

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