কলব্যাক যোগ করুন এবং মুছুন

এই নির্দেশিকাটি গুগল ওয়ালেট এপিআই (Google Wallet API)-এর সাথে কলব্যাক কীভাবে ব্যবহার করতে হয় তা ব্যাখ্যা করে। যখন একটি পাস তৈরি বা মুছে ফেলা হয়, গুগল আপনার পছন্দের একটি HTTPS এন্ডপয়েন্টে একটি কলব্যাক করতে পারে। এই কলব্যাকটি ক্লাস-নির্দিষ্ট এবং এতে ইভেন্ট সম্পর্কিত ডেটা যেমন ক্লাস, অবজেক্ট এবং ইভেন্টের ধরন অন্তর্ভুক্ত থাকে। কতজন ব্যবহারকারী যুক্ত বা মুছে ফেলা হচ্ছে তার হিসাব রাখতে এটি ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, প্রচারমূলক ইভেন্ট চলাকালীন গ্রাহকের সম্পৃক্ততা ট্র্যাক করার জন্য একটি অ্যানালিটিক্স অ্যাপ্লিকেশনে ইভেন্ট পাঠাতে কলব্যাক কনফিগার করা যেতে পারে।

পূর্বশর্ত

শুরু করার আগে, নিম্নলিখিত পূর্বশর্তগুলো পর্যালোচনা করুন:

  • একটি HTTPS এন্ডপয়েন্ট তৈরি করুন যা POST অনুরোধগুলি পরিচালনা করতে পারে। এই এন্ডপয়েন্টটি সর্বজনীনভাবে উপলব্ধ হতে হবে।
  • প্রোগ্রামের মাধ্যমে প্রতিটি ক্লাসের জন্য কলব্যাক এন্ডপয়েন্ট আপডেট করুন। REST API-তে ক্লাস অনুযায়ী callbackOptions প্রপার্টিটি দেখুন।
  • সুপারিশকৃত: স্বাক্ষরগুলো যাচাই করার জন্য টিঙ্ক লাইব্রেরি ব্যবহার করুন।

কলব্যাকগুলি বাস্তবায়ন করুন

ব্যবহারকারী যখন কোনো অবজেক্টে কিছু যোগ বা মুছে ফেলেন, তখন গুগল প্রতিটি ক্লাসের জন্য একটি ইউআরএল-এ সেই যোগ বা মুছে ফেলার বিবরণসহ মার্চেন্টদের কাছে কলব্যাক পাঠায়। মার্চেন্টদের প্রথমে পাবলিক কী ব্যবহার করে বার্তাটির সত্যতা যাচাই করতে হবে। কলব্যাকগুলো বার্তাটি যাচাই করার পর, পরবর্তী কার্যক্রমের জন্য সেগুলো ব্যবহার করা যেতে পারে।

স্বাক্ষর যাচাই করুন

আপনার 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 যেকোনো ডুপ্লিকেট ডেলিভারি ট্র্যাক করার জন্য ননস (Nonce) ব্যবহার করা হয়।

গুগল সার্ভার থেকে আসা অনুরোধটি পরিচালনা করুন

আপনার কলব্যাক এন্ডপয়েন্টে পাঠানো রিকোয়েস্টের হেডারে থাকা মূল ফিল্ডগুলোর একটি তালিকা নিচে দেওয়া হলো:

  • ব্যবহারকারী-এজেন্ট: Googlebot বা Google-Valuables
  • কন্টেন্ট-টাইপ: application/json

আপনার সার্ভারটি এমনভাবে কনফিগার করুন যাতে এটি অনুরোধটি প্রত্যাখ্যান না করে। এটি করার জন্য, আপনি robots.txt ফাইলে নিম্নলিখিত বিষয়গুলো সেট করতে পারেন:

User-agent: Googlebot
Disallow:

পুনরায় চেষ্টা

কলব্যাকগুলো সর্বোচ্চ চেষ্টার ভিত্তিতে করা হয়। যেসব ক্ষেত্রে কলব্যাক এন্ডপয়েন্ট সাড়া দিচ্ছে না বা মাঝে মাঝে সংযোগ বিচ্ছিন্ন হচ্ছে, সেসব ক্ষেত্রে পরিস্থিতি সামাল দিতে গুগল প্রচলিত পুনঃপ্রচেষ্টা কৌশল ব্যবহার করবে এবং পরিস্থিতি অনুযায়ী প্রচেষ্টা থেকে সরে আসবে।

ডুপ্লিকেট ডেলিভারি

কিছু ক্ষেত্রে ডুপ্লিকেট ডেলিভারি থাকতে পারে। আমরা আপনাকে ডুপ্লিকেটগুলো অপসারণ করতে nonce ব্যবহার করার পরামর্শ দিচ্ছি।