এই গাইডে Google Wallet API-এর সাথে কলব্যাক কীভাবে ব্যবহার করতে হয় তা ব্যাখ্যা করা হয়েছে। কোনও পাস তৈরি বা মুছে ফেলা হলে, Google আপনার বেছে নেওয়া HTTPS এন্ডপয়েন্টে কলব্যাক করতে পারে। এই কলব্যাক ক্লাস-নির্দিষ্ট এবং এতে ইভেন্ট সম্পর্কিত ডেটা থাকে, যেমন ক্লাস, অবজেক্ট ও ইভেন্টের ধরন। এটি ব্যবহার করে কতজন ব্যবহারকারী যোগ করা হয়েছে এবং কতজনকে মুছে ফেলা হয়েছে তার ট্র্যাক রাখা যায়। যেমন, প্রোমোশনাল ইভেন্টের সময় গ্রাহকের এনগেজমেন্ট ট্র্যাক করার জন্য, কলব্যাক কনফিগার করে কোনও অ্যানালিটিক্স অ্যাপ্লিকেশনে ইভেন্ট পাঠানো যেতে পারে।
পূর্বশর্ত
শুরু করার আগে, নিম্নলিখিত পূর্বশর্ত পর্যালোচনা করুন:
- POST অনুরোধ ম্যানেজ করে এমন একটি HTTPS এন্ডপয়েন্ট তৈরি করুন। এই এন্ডপয়েন্ট সর্বজনীনভাবে উপলভ্য হতে হবে।
-
প্রতিটি ক্লাসের জন্য কলব্যাক এন্ডপয়েন্ট প্রোগ্রাম্যাটিকভাবে আপডেট করুন। REST API-তে ক্লাস অনুযায়ী
callbackOptionsপ্রপার্টি দেখুন। - সাজেস্ট করা হয়েছে: স্বাক্ষর যাচাই করতে Tink লাইব্রেরি ব্যবহার করুন।
কলব্যাক প্রয়োগ করা
ব্যবহারকারী কোনও অবজেক্ট যোগ বা মুছে দিলে, 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 যা নিম্নলিখিত প্রপার্টি সহ একটি স্ট্রিংয়ে সিরিয়ালাইজ করা হয়: :
| সনাক্তকারী | বিবরণ |
|---|---|
classId |
সম্পূর্ণরূপে উপযুক্ত ক্লাস আইডি। নিম্নলিখিত ফর্ম্যাট ব্যবহার করে: <issuer_id.class_id> |
objectId |
সম্পূর্ণভাবে উপযুক্ত অবজেক্ট আইডি। নিম্নলিখিত ফর্ম্যাট ব্যবহার করে: <issuer_id.object_id> |
expTimeMillis |
EPOCH থেকে মিলিসেকেন্ডে মেয়াদ শেষ হওয়ার সময়। মেয়াদ শেষ হওয়ার পরে, মেসেজটি অবৈধ বলে গণ্য করতে হবে। |
eventType |
DELETE ও SAVE-এর জন্য
del বা save হতে পারে।
|
nonce |
কোনও ডুপ্লিকেট ডেলিভারি ট্র্যাক করার জন্য ননস। |
Google সার্ভার থেকে অনুরোধ ম্যানেজ করা
আপনার কলব্যাক এন্ডপয়েন্টে পাঠানো অনুরোধের হেডারে থাকা মূল ফিল্ডের তালিকা নিচে দেওয়া হল:
- User-Agent:
GooglebotবাGoogle-Valuables - কন্টেন্টের ধরন:
application/json
আপনার সার্ভার কনফিগার করুন যাতে এটি অনুরোধ প্রত্যাখ্যান না করে। এটি করতে, আপনি
robots.txt-এ নিম্নলিখিতগুলি সেট করতে পারেন:
User-agent: Googlebot Disallow:
আবার চেষ্টা করা হয়েছে
কলব্যাক করার জন্য যথাসাধ্য চেষ্টা করা হয়। কলব্যাক এন্ডপয়েন্ট উত্তর না দিলে বা মাঝে মাঝে বন্ধ হয়ে গেলে, Google আবার চেষ্টা করার সাধারণ কৌশল ব্যবহার করবে এবং চেষ্টা করা বন্ধ করে দেবে।
ডুপ্লিকেট ডেলিভারি
কিছু ক্ষেত্রে ডুপ্লিকেট ডেলিভারি হতে পারে। আমরা সাজেস্ট করি যে আপনি
nonce ব্যবহার করে ডুপ্লিকেট কন্টেন্ট সরিয়ে দিন।