কিভাবে জাভাতে গুগল এপিআই এর সাথে সংযোগ স্থাপন করবেন

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

পূর্বশর্ত

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

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

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

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

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

জাভা নমুনা কোড ডাউনলোড করুন।

অ্যাপ্লিকেশন কাঠামো ওভারভিউ

জাভা নমুনা কোড Google-এর স্ট্যান্ডার্ড পেমেন্ট API-এর সাথে একীভূত হয়। নমুনা কোড প্রজেক্ট স্ট্রাকচারে একটি outbound ডিরেক্টরির পাশাপাশি একটি inbound ডিরেক্টরি রয়েছে যাতে Google থেকে অংশীদারের কাছে ইনবাউন্ড ইকো অনুরোধ এবং Google এর কাছে অংশীদার বাস্তবায়নের আউটবাউন্ড অনুরোধ প্রতিফলিত হয়।

এই উভয় ডিরেক্টরিই স্তর অনুসারে প্যাকেজিং-এ অনুরূপ শ্রেণিবিন্যাস ধারণ করে। তিনটি প্রধান স্তর হল controller , service এবং domain

  • controller প্যাকেজে এপিআই থাকে।
  • service প্যাকেজ ব্যবসায়িক যুক্তি, base64url এনকোডিং এবং এনক্রিপশনের জন্য দায়ী।
  • domain প্যাকেজে POJO রয়েছে।

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

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

./mvnw install

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

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

  1. প্রকল্প ডিরেক্টরিতে src/main/resources/application.properties এ নেভিগেট করুন।
  2. Google দ্বারা আপনাকে জারি করা PIAID-এ সম্পত্তি payment.integrator.account.id সেট করুন।
payment.integrator.account.id={YOUR_PAYMENT_INTEGRATOR_ACCOUNT_ID}

4. Google হোস্ট করা ইকো URL সেট করুন

আপনি কোন API এর সাথে একীভূত করছেন তার উপর নির্ভর করে Google হোস্ট করা echo ইউআরএল আলাদা হয়। আপনার নির্দিষ্ট ইন্টিগ্রেশন টাইপের জন্য API রেফারেন্স ডকুমেন্টেশন দেখুন এবং ডায়াগনস্টিক ইকো API-এর URL কপি করুন। ইউআরএল কপি করার পর, জাভা প্রোজেক্টে আপডেট করতে পরবর্তী ধাপে যান।

  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 আর্মড পাবলিক কী যোগ করুন।
  • 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

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

$ gcloud app deploy

ডিফল্টরূপে, সার্ভার পোর্ট 8080 এ শুনবে। Open API Swagger UI দেখতে, নীচের URL-এ নেভিগেট করুন।

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

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

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

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

কমান্ড লাইনের মাধ্যমে একটি অনুরোধ পাঠান

কমান্ডটি কার্যকর করার আগে আপনার সার্ভার হোস্টের নামের সাথে 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-এ অনুরোধ পাঠাতে প্রস্তুত হলে 'Execute' বোতামে ক্লিক করুন।

Swagger এর মাধ্যমে একটি GSP ইকো অনুরোধ জমা দেওয়া

সাড়া পান

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

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

ধাপে ধাপে

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

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

OutboundEchoServicecreateEchoRequestWithMessage Google-এর API-এ পাঠানো 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 অনুরোধের মাধ্যমে পাঠানো হয়।

postStandardPaymentsEchoApi(encryptedMessage)

ডিক্রিপ্ট করুন এবং base64url রেসপন্স ডিকোড করুন এবং রেসপন্স রিটার্ন করুন

Google-এর সফল প্রতিক্রিয়া হল base64url এনকোড করা এবং এনক্রিপ্ট করা, তাই প্লেইনটেক্সটে ফেরত দেওয়ার আগে এটিকে ডিকোড এবং ডিক্রিপ্ট করা দরকার। decrypt পদ্ধতি base64url প্রতিক্রিয়া ডিকোড এবং ডিক্রিপ্ট করে।

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

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

প্রতিক্রিয়াটি একটি 202 HTTP প্রতিক্রিয়া স্ট্যাটাস কোড সহ ফেরত দেওয়া হয়।

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

8. ইনবাউন্ড API সংযোগ পরীক্ষা করুন

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

ইকো পরীক্ষা সম্পূর্ণ হয় যখন আপনি Google থেকে ইনবাউন্ড ইকো অনুরোধ পড়তে সক্ষম হন এবং একটি বৈধ ইকো প্রতিক্রিয়া সহ প্রতিক্রিয়া জানান।

ধাপে ধাপে

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

Base64url অনুরোধটি ডিকোড এবং ডিক্রিপ্ট করুন

একটি অনুরোধ প্রাপ্ত হলে, PgpEncryptor.java decrypt কল করবে যা বেস64url ডিকোড করবে এবং অনুরোধটিকে ডিক্রিপ্ট করবে।

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 HTTP প্রতিক্রিয়া স্ট্যাটাস কোড সহ ফেরত দেওয়া হয়।

return new ResponseEntity<>(pgpEncryptor.encrypt(echoResponseString), HttpStatus.ACCEPTED);

9. অভিনন্দন!

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