কলব্যাক যোগ করা ও মুছে ফেলা

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

পূর্বশর্ত

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

  • POST অনুরোধ ম্যানেজ করে এমন একটি HTTPS এন্ডপয়েন্ট তৈরি করুন। এই এন্ডপয়েন্ট সর্বজনীনভাবে উপলভ্য হতে হবে।
  • ইস্যুকারীর জন্য কলব্যাক এন্ডপয়েন্ট URL প্রোগ্রাম্যাটিক্যালি আপডেট করুন। 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 যা নিম্নলিখিত প্রপার্টি সহ স্ট্রিংয়ে সিরিয়ালাইজ করা হয়েছে:

সনাক্তকারী বিবরণ
externalPassId

সম্পূর্ণভাবে উপযুক্ত এক্সটার্নাল পাস আইডি। নিম্নলিখিত ফর্ম্যাট ব্যবহার করে:

<issuer_id.external_pass_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 ব্যবহার করে ডুপ্লিকেট এন্ট্রি সরিয়ে দিন।