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 değerli öğe 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, gerçekleşen kullanıcı ekleme ve silme işlemlerinin sayısını senkronize 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ı tarafından bir nesne üzerinde gerçekleştirilen her ekleme veya silme işlemi için Google, satıcıları her sınıfa ait URL'deki ekleme ya da silme işlemiyle ilgili ayrıntılarla birlikte geri çağırır. 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
  }
}

Expected message format

The message format is JSON that's serialized into a string with the following properties:

Identifier Description
classId

Fully qualified class ID. Uses the following format:

<issuer_id.class_id>
objectId

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

<issuer_id.object_id>
expTimeMillis EPOCH tarihinden itibaren milisaniye cinsinden geçerlilik süresi. 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 seçeneği 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.