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

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

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

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

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

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

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

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

हमारा सुझाव है कि मैसेज के हस्ताक्षर की पुष्टि करने के लिए, 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 इसके लिए, del या save हो सकता है DELETE और SAVE.
nonce डुप्लीकेट डिलीवरी ट्रैक करने के लिए नॉन्स.

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

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

  • उपयोगकर्ता एजेंट: Googlebot
  • कॉन्टेंट किस तरह का है: application/json

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

User-agent: Googlebot
Disallow:

इतनी बार कोशिश की जा रही है

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

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

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