Geri çağırmaları ekleme ve silme

Bu kılavuzda, Google Cüzdan API'si ile geri çağırmaların nasıl kullanılacağı açıklanmaktadır. Bir kart oluşturulduğunda veya silindiğinde Google, seçtiğiniz bir HTTPS uç noktasına geri arama yapabilir. Bu geri çağırma, sınıfa özeldir ve sınıf, nesne ve etkinlik türü gibi etkinlikle ilgili verileri içerir. Bu metrik, kullanıcı ekleme ve silme işlemlerinin sayısını takip etmek için kullanılabilir. Örneğin, geri aramalar, tanıtım etkinlikleri sırasında müşteri etkileşimini izlemek için etkinlikleri bir analiz uygulamasına gönderecek şekilde yapılandırılabilir.

Ön koşullar

Başlamadan önce aşağıdaki ön koşulları inceleyin:

  • POST isteklerini işleyen bir HTTPS uç noktası oluşturun. Bu uç nokta herkese açık olmalıdır.
  • Her sınıf için geri çağırma uç noktasını programatik olarak güncelleyin. REST API'deki callbackOptions özelliğini sınıfa göre inceleyin.
  • Önerilen: İmzaları doğrulamak için Tink kitaplığını kullanın.

Geri çağırmaları uygulama

Kullanıcı bir nesne üzerinde her ekleme veya silme işlemi yaptığında Google, satıcılara sınıf başına URL'de ekleme veya silme işlemiyle ilgili ayrıntıları içeren geri aramalar yapar. Satıcıların öncelikle iletinin gerçekliğini doğrulamak için ortak anahtarları kullanması gerekir. Geri çağırmalar mesajı doğruladıktan sonra, sonraki işlemler için kullanılabilir.

İmzayı doğrulama

HTTPS uç noktanızı uygularken ileti imzasını doğrulamak için Tink kitaplığını kullanmanızı öneririz. Tink kitaplığı, PaymentMethodTokenRecipient yardımcı programını sağlar. Bu yardımcı program, imzayı otomatik olarak doğrular ve başarılı doğrulama sonrasında gerçek mesajı döndürür.

Aşağıdaki örnekte, Tink kitaplığının PaymentMethodTokenRecipient uygulamak için nasıl kullanılacağı gösterilmektedir:

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
  }
}

Beklenen mesaj biçimi

Mesaj biçimi, aşağıdaki özelliklere sahip bir dizeye dönüştürülmüş JSON'dur:

Tanımlayıcı Açıklama
classId

Tam nitelikli sınıf kimliği. Aşağıdaki biçimi kullanır:

<issuer_id.class_id>
objectId

Tam nitelikli nesne kimliği. Aşağıdaki biçimi kullanır:

<issuer_id.object_id>
expTimeMillis EPOCH'tan bu yana geçen milisaniye cinsinden geçerlilik süresi. Son kullanma süresi dolduktan sonra mesajın geçersiz sayılması gerekir.
eventType DELETE ve SAVE için del veya save olabilir.
nonce Yinelenen teslimatları izlemek için kullanılan tek seferlik sayı.

Google sunucusundan gelen isteği işleme

Geri çağırma uç noktanıza gönderilen isteğin üst bilgisindeki önemli alanların listesini aşağıda bulabilirsiniz:

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

Sunucunuzu isteği reddetmeyecek şekilde yapılandırın. Bunun için robots.txt bölümünde aşağıdaki ayarları yapabilirsiniz:

User-agent: Googlebot
Disallow:

Yeniden deneme sayısı

Geri aramalar, mümkün olan en iyi şekilde yapılır. Google, geri çağırma uç noktası yanıt vermediğinde veya aralıklı kesinti olduğunda dayanıklı olmak için yaygın yeniden deneme stratejilerini kullanır ve denemeleri sorunsuz bir şekilde geri çeker.

Yinelenen teslimatlar

Bazı durumlarda yinelenen teslimatlar olabilir. Bunları tekilleştirmek için nonce kullanmanızı öneririz.