এই নির্দেশিকাটি ব্যাখ্যা করে কিভাবে Google Wallet API এর সাথে কলব্যাক ব্যবহার করতে হয়৷ একটি পাস তৈরি বা মুছে ফেলা হলে, Google আপনার পছন্দের একটি HTTPS এন্ডপয়েন্টে কলব্যাক করতে পারে। এই কলব্যাকটি পাস-নির্দিষ্ট, এবং ইভেন্ট সম্পর্কিত ডেটা যেমন externalPassId এবং ইভেন্টের প্রকার অন্তর্ভুক্ত করে৷ এটি ব্যবহারকারীর সংযোজন এবং মুছে ফেলার সংখ্যার ট্র্যাক রাখতে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, প্রচারমূলক ইভেন্টের সময় গ্রাহকের ব্যস্ততা ট্র্যাক করতে একটি বিশ্লেষণ অ্যাপ্লিকেশনে ইভেন্টগুলি পাঠানোর জন্য কলব্যাকগুলি কনফিগার করা যেতে পারে।
পূর্বশর্ত
আপনি শুরু করার আগে, নিম্নলিখিত পূর্বশর্তগুলি পর্যালোচনা করুন:
- একটি HTTPS এন্ডপয়েন্ট দাঁড় করান যা POST অনুরোধ পরিচালনা করে। এই শেষ বিন্দু সর্বজনীনভাবে উপলব্ধ করা প্রয়োজন.
- ইস্যুকারীর জন্য প্রোগ্রাম্যাটিকভাবে কলব্যাক এন্ডপয়েন্ট URL আপডেট করুন । REST API-এ ইস্যুকারীর জন্য
callbackOptions
প্রপার্টি দেখুন। - প্রস্তাবিত: স্বাক্ষর যাচাই করতে টিঙ্ক লাইব্রেরি ব্যবহার করুন।
কলব্যাক বাস্তবায়ন করুন
পাসে ব্যবহারকারীর দ্বারা সম্পাদিত প্রতিটি যোগ বা মুছে ফেলার জন্য, Google একটি ইস্যুকারী কলব্যাক URL-এ যোগ বা মুছে ফেলার বিবরণ সহ বণিকদের কলব্যাক করে। বার্তাটির সত্যতা যাচাই করতে ব্যবসায়ীদের প্রথমে পাবলিক কী ব্যবহার করতে হবে। কলব্যাকগুলি বার্তাটি যাচাই করার পরে, কলব্যাকগুলি ডাউনস্ট্রিম অপারেশনগুলির জন্য ব্যবহার করা যেতে পারে৷
স্বাক্ষর যাচাই করুন
আমরা সুপারিশ করি যে আপনি যখন আপনার HTTPS এন্ডপয়েন্ট বাস্তবায়ন করবেন তখন বার্তা স্বাক্ষর যাচাই করতে আপনি Tink লাইব্রেরি ব্যবহার করুন। Tink লাইব্রেরি PaymentMethodTokenRecipient
প্রদান করে, একটি ইউটিলিটি যা স্বয়ংক্রিয়ভাবে স্বাক্ষর যাচাই করে এবং সফল যাচাইয়ের পর প্রকৃত বার্তা ফেরত দেয়।
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে Tink লাইব্রেরি ব্যবহার করে PaymentMethodTokenRecipient
বাস্তবায়ন করতে হয়:
import java.io.IOException; import javax.servlet.http.*; import com.google.common.io.CharStreams; import com.google.crypto.tink.apps.paymentmethodtoken.*; // Replace ISSUER_ID with your issuer id private static final String RECIPIENT_ID = "ISSUER_ID"; private static final String PUBLIC_KEY_URL = "https://pay.google.com/gp/m/issuer/keys"; private static final String SENDER_ID = "GooglePayPasses"; private static final String PROTOCOL = "ECv2SigningOnly"; private static final GooglePaymentsPublicKeysManager keysManager = new GooglePaymentsPublicKeysManager.Builder() .setKeysUrl(PUBLIC_KEY_URL) .build(); public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { try { // Extract signed message with signature from POST request body. String signedMessage = CharStreams.toString(request.getReader()); PaymentMethodTokenRecipient recipient = new PaymentMethodTokenRecipient.Builder() .protocolVersion(PROTOCOL) .fetchSenderVerifyingKeysWith(keysManager) .senderId(SENDER_ID) .recipientId(RECIPIENT_ID) .build(); String serializedJsonMessage = recipient.unseal(signedMessage); // Use serializedJsonMessage to extract the details } catch (Exception e) { // Handle the error } }
প্রত্যাশিত বার্তা বিন্যাস
বার্তা বিন্যাস হল JSON যা নিম্নলিখিত বৈশিষ্ট্য সহ একটি স্ট্রিং-এ ক্রমিক করা হয়েছে:
শনাক্তকারী | বর্ণনা |
---|---|
externalPassId | সম্পূর্ণ যোগ্য বহিরাগত পাস আইডি। নিম্নলিখিত বিন্যাস ব্যবহার করে: <issuer_id.external_pass_id> |
expTimeMillis | EPOCH থেকে মিলিসেকেন্ডে মেয়াদ শেষ হওয়ার সময়। মেয়াদ শেষ হওয়ার পরে, বার্তাটি অবৈধ বলে গণ্য করা দরকার। |
eventType | DELETE এবং SAVE এর জন্য del বা save করা যেতে পারে। |
nonce | কোনো ডুপ্লিকেট ডেলিভারি ট্র্যাক না. |
একটি Google সার্ভার থেকে অনুরোধ পরিচালনা করুন
নিম্নলিখিতটি আপনার কলব্যাক এন্ডপয়েন্টে পাঠানো অনুরোধের শিরোনামের মূল ক্ষেত্রগুলির একটি তালিকা:
- ব্যবহারকারী-এজেন্ট:
Googlebot
- বিষয়বস্তুর প্রকার:
application/json
আপনার সার্ভার কনফিগার করুন যাতে এটি অনুরোধ প্রত্যাখ্যান না করে। এটি করার জন্য, আপনি robots.txt
এ নিম্নলিখিত সেট করতে পারেন:
User-agent: Googlebot Disallow:
পুনরায় চেষ্টা করে
কলব্যাকগুলি সর্বোত্তম প্রচেষ্টার ভিত্তিতে হয়৷ যে ক্ষেত্রে কলব্যাক এন্ডপয়েন্ট সাড়া দিচ্ছে না বা বিরতিহীন বিভ্রাট আছে সেসব ক্ষেত্রে স্থিতিস্থাপক হওয়ার জন্য Google সাধারণ পুনঃপ্রচেষ্টার কৌশল ব্যবহার করবে এবং প্রয়াস বন্ধ করে দেবে।
ডুপ্লিকেট ডেলিভারি
কিছু ক্ষেত্রে ডুপ্লিকেট ডেলিভারি হতে পারে। আমরা সুপারিশ করি যে আপনি তাদের অনুমান করার জন্য nonce
ব্যবহার করুন।