Adicionar mensagens durante a atualização de informações importantes
Todas as indústrias têm uma seção de mensagens. Use essa seção para dar destaque a todas as informações importantes, como alterações feitas nos programas de vales-presente, ofertas, ingressos para eventos e cartões de fidelidade, de embarque para voos e de transporte público. Para mais informações, consulte as páginas de modelo para seu tipo de cartão:
Para adicionar as mensagens a uma classe ou a um objeto que use métodos insert
, update
ou
patch
, basta preencher a propriedade da matriz messages[]
. Também é possível adicionar às mensagens atuais (até um máximo de 10) pelo método addMessage
. Para mais informações, consulte a Referência.
O código a seguir recebe a data de validade da oferta atual ( validTimeInterval.end)
, atualiza a data de validade e adiciona à matriz messages[]
. Assim, o usuário pode perceber que as informações foram alteradas quando visualizar o Object
salvo no app Google Pay:
Java
// Get the specific Offer Object OfferObject obj = client.offerobject().get("2945482443380251551.ExampleObject1").execute(); // Update the version, validTimeInterval.end, and add a message obj.setVersion(obj.getVersion() + 1L); obj.setValidTimeInterval(new TimeInterval().setEnd(new DateTime().setDate(new com.google.api.client.util.DateTime(new Date().getTime() + 263000000000L)))); // Get the current messages Listmessages = obj.getMessages(); // Define new message WalletObjectMessage message = new WalletObjectMessage() .setHeader("Important Notice") .setBody("Your offer has been extended!"); // Add the new message about updates to the Offer Object messages.add(message); obj.setMessages(messages); // Update the Offer Object OfferObject returnObj = client.offerobject().patch(obj.getId(), obj).execute();
PHP
// Get the specific Offer Object Google_OfferObject $offerObj = $service->offerobject->get('2945482443380251551.ExampleObject1'); // Update the version, validTimeInterval.end, and add a message $offerObj->setVersion($offerObj->getVersion() + 1); $validTimeInterval = new Google_TimeInterval(); $startDateTime = new Google_DateTime(); $startDateTime->setDate('2013-06-12T23:20:50.52Z'); $validTimeInterval->setStart($startDateTime); $endDateTime = new Google_DateTime(); $endDateTime->setDate('2013-12-12T23:20:50.52Z'); $validTimeInterval->setEnd($endDateTime); $offerObj->setValidTimeInterval($validTimeInterval) // Get the current messages $messages = $offerObj->getMessages(); // Define new message $newMessage = array( 'header' => 'Important Notice', 'body' => 'Your offer has been extended!', 'kind' => 'walletobjects#walletObjectMessage' ); // Add the new message about updates to the Offer Object array_push($messages, $newMessage); $offerObj->setMessages($messages); // Update the Offer Object Google_OfferObject offerObj = $service->offerobject->update('2945482443380251551.ExampleObject1',offerObj);
Python
# Get the specific Offer Object offer_object = service.offerobject().get(resourceId='2945482443380251551.ExampleObject1') # Update the version, validTimeInterval.end, and add a message offer_object['version'] = str(int(offer_object['version']) + 1) offer_object['validTimeInterval'] = { 'start' : {'date':'2018-01-20T23:20:50.520Z'} ,'end' : {'date':'2018-01-24T23:20:50.520Z'} } // Get the current messages messages = offer_object['messages'] // Define new message message = { 'header': 'Important Notice', 'body': 'Your offer has been extended!', 'kind': 'walletobjects#walletObjectMessage' } // Add the new message about updates to the Offer Object messages.append(message) offer_object['messages'] = messages # Update the Offer Object api_request = service.offerobject().update(resourceId='2945482443380251551.ExampleObject1',body=offer_object) api_response = api_request.execute()
Estado de atualização
Independentemente da indústria, todos os objetos têm uma propriedade state
. A atualização do estado do objeto é uma maneira importante de informar ao cliente que o cartão foi resgatado ou expirou.
Toda atualização deve começar com uma solicitação GET
para recuperar o Object
. Isso garante que a versão mais recente do objeto seja usada. A versão do objeto precisa ser incrementada quando o saldo é alterado. Para salvar o objeto atualizado Object
, faça uma solicitação PUT
.
Este é um exemplo de URIs REST usados em GET
de um objeto e em
PUT
(atualização) de um offerObject
:
GET https://walletobjects.googleapis.com/walletobjects/v1/offerObject/resourceId PUT https://walletobjects.googleapis.com/walletobjects/v1/offerObject/resourceId
Para saber mais sobre os diferentes métodos GET
e de atualização por indústria, consulte a
Referência.
As amostras de código a seguir fornecem exemplos de como atualizar um offerObject
em linguagens diferentes. O código seria semelhante para objetos em outras indústrias:
Java
// Get the specific Offer Object OfferObject obj = client.offerobject().get("2945482443380251551.ExampleObject1").execute(); // Update the version and state obj.setVersion(obj.getVersion() + 1L); obj.setState("expired"); //see the Reference API for valid "state" options // Update the Offer Object OfferObject returnObj = client.offerobject().update(obj.getId(), obj).execute();
PHP
// Get the specific Offer Object Google_OfferObject offerObj = $service->offerobject->get('2945482443380251551.ExampleObject1'); // Update the version and points offerObj.setVersion(offerObj.getVersion() + 1); offerObj.setState("state"); // see the Reference API for valid "state" options // Update the Offer Object Google_OfferObject offerObj = $service->offerobject->update('2945482443380251551.ExampleObject1',offerObj);
Python
# Get the specific Offer Object offer_object = service.offerobject().get(resourceId='2945482443380251551.ExampleObject1') # Update the version and state offer_object['version'] = str(int(offer_object['version']) + 1) offer_object['state'] = 'expired' # see the Reference API for valid "state" options # Update the Offer Object api_request = service.offerobject().update(resourceId='2945482443380251551.ExampleObject1',body=offer_object) api_response = api_request.execute()
Localização
A API Google Pay for Passes permite que os comerciantes forneçam conteúdo localizado que será exibido ao usuário com base na localidade. Os campos extras na API são incluídos para fornecer esse recurso. Cada campo localizado é um objeto aninhado LocalizedString do formulário:
{ k"ind:" w"alletobjects#localizedString," t"ranslatedValues:" [ { k"ind:" w"alletobjects#translatedString," l"anguage:" string, v"alue:" string } ], d"efaultValue:" [ { k"ind:" w"alletobjects#translatedString," l"anguage:" string, v"alue:" string } ] }
O campo defaultValue
é obrigatório para todos os itens LocalizedStrings
. O idioma e o valor são obrigatórios em todas as translatedStrings.
O campo de idioma precisa se referir a uma tag de idioma BCP 47. (por exemplo, "en-US", "pt-BR", "es-419" etc). O campo "value" apresenta o valor traduzido da string que será exibida ao usuário se houver conteúdo para a localidade dele.
As strings de localização exibidas terão como base a melhor correspondência da localidade do usuário.
O valor DefaultValue
será usado se nenhum translatedValue
apropriado for fornecido.
Os campos não localizados não serão usados se o campo localizado correspondente estiver definido.
Determinar se um usuário removeu o cartão
Determinar se um usuário removeu o cartão
Para verificar se um usuário removeu o cartão (de fidelidade, por exemplo) do Google Pay, recupere o Object
do usuário com a chamada get a seguir e verifique o atributo hasUsers
.
Por exemplo, para verificar se há um loyaltyObject
com GET
:
GET https://walletobjects.googleapis.com/walletobjects/v1/loyaltyObject/objectId
Se todos os usuários tiverem excluído o cartão ou se o cartão de fidelidade tiver sido removido, o Google não excluirá o objeto. O atributo hasUsers
no objeto é definido como "false".
A verificação do atributo hasUsers
pode ser feita em tempo real quando o usuário faz login no site ou no app, ou em um processo em lote para um grande número de usuários de uma só vez.
Você definiu o ID do objeto usado para recuperar o LoyaltyObject
quando criou o objeto. Para fornecer informações personalizadas aos usuários sobre os níveis e os saldos de
pontos atuais, armazene os IDs no seu próprio repositório.
Para saber mais sobre os diferentes métodos GET
, consulte a
Referência. O Google não fornece notificações em tempo real quando um objeto é excluído. Para isso, seria necessário implementar um serviço listener e obedecer a um determinado contrato de nível de serviço.
Maneiras de interação específicas por indústria
Algumas maneiras de interagir são específicas de uma indústria de cartões. Consulte a página "Casos de uso" de cada indústria para ver detalhes da implementação: