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.