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 çağırma gerçekleştirebilir. Bu geri çağırma sınıfa özgüdür ve etkinlikle ilgili sınıf, nesne ve etkinlik türü gibi verileri içerir. Bu özellik, gerçekleşen kullanıcı ekleme ve silme işlemlerinin sayısını takip etmek için kullanılabilir. Örneğin, geri çağırma işlevleri, promosyon 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ç noktanın herkese açık olması gerekir.
  • Her sınıf için geri çağırma uç noktasını programlı olarak güncelleyin. REST API'de callbackOptions özelliğini sınıfa göre inceleyin.
  • Önerilir: İmzaları doğrulamak için Tink kitaplığını kullanın.

Geri çağırmaları uygulama

Kullanıcının bir nesnede gerçekleştirdiği her ekleme veya silme işlemi için Google, satıcılara geri çağırma yaparak sınıf başına bir URL'deki ekleme ya da silme işlemiyle ilgili ayrıntıları içerir. Satıcılar, iletinin özgünlüğünü doğrulamak için önce Genel Anahtarları kullanmalıdır. Geri çağırmalar mesajı doğruladıktan sonra, geri çağırmalar aşağı akış işlemleri için kullanılabilir.

İmzayı doğrulayın

HTTPS uç noktanızı uygularken mesaj imzasını doğrulamak için Tink kitaplığını kullanmanızı öneririz. Tink kitaplığı, imzayı otomatik olarak doğrulayan ve başarılı doğrulamanın ardından iletiyi döndüren PaymentMethodTokenRecipient adlı yardımcı programı sunar.

Aşağıdaki örnekte, PaymentMethodTokenRecipient uygulamak için Tink kitaplığının 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 ileti biçimi

Mesaj biçimi, aşağıdaki özelliklere sahip bir dizede serileştirilmiş 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'dan bu yana geçerlilik süresi (milisaniye cinsinden). Geçerlilik süresi sona erdikten sonra mesajın geçersiz olarak kabul edilmesi gerekir.
eventType DELETE ve SAVE için del veya save olabilir.
nonce Yinelenen teslimatları takip etme yok.

İsteği bir Google sunucusundan işleme

Aşağıda, geri çağırma uç noktanıza gönderilen isteğin başlığında yer alan önemli alanların bir listesi bulunmaktadır:

  • Kullanıcı Aracısı: Googlebot
  • İçerik Türü: application/json

Sunucunuzu isteği reddetmeyecek şekilde yapılandırın. Bunun için robots.txt öğesinde aşağıdakileri ayarlayabilirsiniz:

User-agent: Googlebot
Disallow:

Yeniden deneme sayısı

Geri çağırma işlevleri için en iyi çaba esas alınır. Google, geçici hataları hesaba katmak için iki kez deneme yapar. İki kez deneme yaptıktan sonra Google mesajı siler ve tekrar gönderme girişiminde bulunmaz.

Yinelenen yayınlamalar

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