Arka plan
Güvenli özel resimler özelliğiyle, kartlarda herkese açık bir URL'den erişilmesi gerekmeyen (normal resimleri kartlarda düzgün oluştururken gereklidir) resimleri tanımlayabilirsiniz. Cüzdan API'si ile resim yükleyebilir ve bu resme Cüzdan kartı nesnesinde referans vermek için kullanılabilecek bir tanımlayıcı alabilirsiniz.
Desteklenen kart türleri:
- Etkinlik bileti
- Uçuş kartı
- Toplu taşıma kartı
- Fırsat kartı
- Hediye kartı
- Bağlılık kartı
- Genel kart
Özellik örneği
|
| Güvenli özel resim kullanılan üyelik kartı |
Kullanım Alanları
Güvenli özel resimler özelliğiyle, herkese açık olması gerekmeyen resimleri, profil fotoğrafı gibi amaçlarla kullanılabilirsiniz. Böylece, aşağıdakiler dahil ancak bunlarla sınırlı olmayan alanlarda kullanılabilirsiniz:
- Yıllık üyelik kartı
- Kartvizit
- Toplu taşıma kartı
Not: Güvenli özel resimler, kabul edilebilir kullanım politikasında tanımlanan ek yönergelerle birlikte, resmi kimlik belgesi kartları olarak kullanılmak üzere tasarlanmamıştır.
Cüzdan özelliğini kullanırken dikkat edilmesi gereken bazı noktalar
- Genel özel kartlarla kullanılamaz
- Yalnızca kart nesnelerine (sınıflara değil) eklenebilir
- Yalnızca tek bir nesne ile kullanılabilir
- Yalnızca ImageModuleData ile kullanılabilir (logo ve geniş başlık logosu gibi diğer resimlerle kullanılamaz)
Geliştirme Aşamasındaki Özellikler
- Web desteği
- Hero resimlerindeki özel resimler
Entegrasyon Adımları
privateImageIdalmak için Google Wallet API'sini kullanarak özel resminizi yükleyin.- Kart nesnesine resim ekleyin (örneğin,
ImageModuleData).sourceUrialanını resimde ayarlamak yerine,privateImageIdalanını önceki adımdan elde edilen değerle ayarlayın.
Adım Sırası Diyagramı
|
| Özel resim adım sırasını güvenli hale getirme |
Örnek Kod
Resmi yükleme
String issuerId = "12345"; String keyFilePath = "/path/to/key.json"; GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream(keyFilePath)) .createScoped(Arrays.asList("https://www.googleapis.com/auth/wallet_object.issuer")); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); // Prepare request to upload image String contentType = "image/jpeg"; // MIME type of image String imageFilePath = "/path/to/image.jpg"; HttpContent content = new ByteArrayContent( contentType, ByteStreams.toByteArray(new FileInputStream(imageFilePath))); String url = String.format( "https://walletobjects.googleapis.com/upload/walletobjects/v1/privateContent/%s/uploadPrivateImage", issuerId); // Make request to upload image HttpResponse response = httpTransport .createRequestFactory(credential) .buildPostRequest(new GenericUrl(url), content) .execute(); // Get privateImageId from response Gson gson = new Gson(); JsonObject jsonObject = gson.fromJson(response.parseAsString(), JsonObject.class); String privateImageId = jsonObject.get("privateImageId").getAsString();
Özel resmi kart nesnesinde kullanma
// Build GenericObject with privateImageId in ImageModuleData (also adding an optional TextModuleData) Image image = new Image().setPrivateImageId(privateImageId); ImageModuleData imageModuleData = new ImageModuleData().setId("imageId").setMainImage(image); TextModuleData textModuleData = new TextModuleData().setId("textId").setHeader("Card holder").setBody("John Doe"); GenericObject genericObject = new GenericObject() .setId(issuerId + ".objectId") // class must be inserted before inserting object .setClassId(issuerId + ".classId") .setCardTitle("Business name") .setHeader("My membership card") .setImageModulesData(Arrays.asList(imageModuleData)) .setTextModulesData(Arrays.asList(textModuleData)); // Insert GenericObject (or can use in JWT without inserting ahead of time) Walletobjects service = new Walletobjects.Builder(httpTransport, GsonFactory.getDefaultInstance(), credential) .setApplicationName("My Application") .build(); service.genericobject().insert(genericObject).execute();
Resmi ön tarafta göstermek için kartı güncelleme
Güvenli özel görüntüyü her imageModulesDatafield üzerinde kullanabilirsiniz. Şablon geçersiz kılma kullanarak imageModulesData alanı ile resmin, kartın ön tarafına yerleştirilmesi aşağıda gösterilmiştir. Şablon geçersiz kılma kullanarak sınıf ekleme örneği aşağıdadır:
CardTemplateOverride cardTemplateOverride =
new CardTemplateOverride()
.setCardRowTemplateInfos(
Arrays.asList(
new CardRowTemplateInfo()
.setTwoItems(
new CardRowTwoItems()
// The ids chosen here must be set on the object's TextModuleData and ImageModuleData
.setStartItem(
createTemplateItem("object.textModulesData['textId']"))
.setEndItem(
createTemplateItem("object.imageModulesData['imageId']")))));
GenericClass genericClass =
new GenericClass()
.setId(issuerId + ".classId")
.setClassTemplateInfo(
new ClassTemplateInfo().setCardTemplateOverride(cardTemplateOverride));
service.genericclass().insert(genericClass);
...
private static TemplateItem createTemplateItem(String fieldPath) {
return new TemplateItem()
.setFirstValue(
new FieldSelector()
.setFields(Arrays.asList(new FieldReference().setFieldPath(fieldPath))));
}İstisna işleme
Wallet FeatureAPI'sinin yanlış kullanımıyla ilgili olası hatalar şunlardır:
| Mesaj | Neden |
|---|---|
| Resimde hem source_uri hem de private_image_id olamaz | Yayıncının tek bir resimde ayarlamaya çalıştığı source_uri ve private_image_id işlemine izin verilmez |
| %s sağlayıcısı için %s kimlikli özel resim bulunamadı | Bir nesnede, mevcut olmayan özel resim kimliği ayarlama |
| %s kimlikli özel resim, %s nesnesiyle kullanıldığından %s sağlayıcısı için %s nesnesine eklenemedi. Özel resim, yalnızca bir nesneyle kullanılabilir. | Aynı özel resmi birden fazla nesnede kullanma. Aynı özel resmi birden fazla nesneyle kullanmak için resmin yeniden yüklenmesi gerekir. Bu durumda, ikinci nesneyle kullanılabilecek yeni bir özel resim kimliği alırsınız |