कॉलबैक जोड़ें और मिटाएं

इस गाइड में, Google Wallet API के साथ कॉलबैक इस्तेमाल करने का तरीका बताया गया है. जब कोई पास बनाया या मिटाया जाता है, तो Google आपके चुने गए एचटीटीपीएस एंडपॉइंट पर कॉलबैक कर सकता है. यह कॉलबैक, क्लास के हिसाब से होता है. इसमें इवेंट के बारे में डेटा शामिल होता है. जैसे, क्लास, ऑब्जेक्ट, और इवेंट टाइप. इसका इस्तेमाल, उपयोगकर्ता के जोड़े जाने और मिटाए जाने की संख्या को ट्रैक करने के लिए किया जा सकता है. उदाहरण के लिए, कॉलबैक को कॉन्फ़िगर करके, इवेंट को किसी Analytics ऐप्लिकेशन पर भेजा जा सकता है. इससे प्रमोशनल इवेंट के दौरान, खरीदारों की दिलचस्पी को ट्रैक किया जा सकता है.

ज़रूरी शर्तें

शुरू करने से पहले, यहां दी गई ज़रूरी शर्तें देखें:

  • ऐसा एचटीटीपीएस एंडपॉइंट सेट अप करें जो POST अनुरोधों को मैनेज करता हो. यह एंडपॉइंट, सार्वजनिक तौर पर उपलब्ध होना चाहिए.
  • हर क्लास के लिए, प्रोग्राम के हिसाब से कॉलबैक एंडपॉइंट अपडेट करें. REST API में क्लास के हिसाब से callbackOptions प्रॉपर्टी देखें.
  • सुझाया गया: सिग्नेचर की पुष्टि करने के लिए, Tink लाइब्रेरी का इस्तेमाल करें.

कॉलबैक लागू करना

जब कोई उपयोगकर्ता किसी ऑब्जेक्ट को जोड़ता या मिटाता है, तो Google कारोबारियों या कंपनियों को कॉल बैक करता है. इसमें, हर क्लास के यूआरएल पर जोड़ने या मिटाने की जानकारी होती है. कारोबारियों या कंपनियों को सबसे पहले सार्वजनिक पासकोड का इस्तेमाल करके, मैसेज की पुष्टि करनी होगी. कॉलबैक के ज़रिए मैसेज की पुष्टि हो जाने के बाद, इनका इस्तेमाल अन्य कार्रवाइयों के लिए किया जा सकता है.

हस्ताक्षर की पुष्टि करना

हमारा सुझाव है कि एचटीटीपीएस एंडपॉइंट लागू करते समय, मैसेज के हस्ताक्षर की पुष्टि करने के लिए Tink लाइब्रेरी का इस्तेमाल करें. Tink लाइब्रेरी PaymentMethodTokenRecipient उपलब्ध कराती है. यह एक ऐसी सुविधा है जो हस्ताक्षर की पुष्टि अपने-आप करती है. साथ ही, पुष्टि हो जाने पर ओरिजनल मैसेज दिखाती है.

यहां दिए गए उदाहरण में, PaymentMethodTokenRecipient को लागू करने के लिए Tink लाइब्रेरी का इस्तेमाल करने का तरीका बताया गया है:

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 ईपीओसीएच के बाद के मिलीसेकंड में समयसीमा. समयसीमा खत्म होने के बाद, मैसेज को अमान्य माना जाना चाहिए.
eventType DELETE और SAVE के लिए, del या save में से कोई एक वैल्यू सेट की जा सकती है.
nonce इस कुकी का इस्तेमाल डुप्लीकेट डिलीवरी को ट्रैक करने के लिए किया जाता है.

Google सर्वर से मिले अनुरोध को मैनेज करना

यहां अनुरोध के हेडर में मौजूद मुख्य फ़ील्ड की सूची दी गई है. यह अनुरोध, आपके कॉलबैक एंडपॉइंट को भेजा जाता है:

  • User-Agent: Googlebot
  • Content-Type: application/json

अपने सर्वर को इस तरह कॉन्फ़िगर करें कि वह अनुरोध को अस्वीकार न करे. इसके लिए, robots.txt में ये सेट किए जा सकते हैं:

User-agent: Googlebot
Disallow:

फिर से कोशिशें

कॉल बैक की सुविधा, सबसे बेहतर कोशिशों के आधार पर उपलब्ध कराई जाती है. Google, फिर से कोशिश करने की सामान्य रणनीतियों का इस्तेमाल करेगा. इससे, उन मामलों में मदद मिलेगी जहां कॉलबैक एंडपॉइंट जवाब नहीं दे रहा है या उसमें कुछ समय के लिए रुकावट आई है. साथ ही, Google कोशिशों को धीरे-धीरे कम करेगा.

डुप्लीकेट डिलीवरी

कुछ मामलों में, डुप्लीकेट डिलीवरी हो सकती हैं. हमारा सुझाव है कि डुप्लीकेट कॉन्टेंट हटाने के लिए, nonce का इस्तेमाल करें.