É exibida a mensagem "Cartões expirados" no app Carteira do Google que contém todos os cartões arquivados ou inativos.
Um cartão é movido para "Cartões expirados" se pelo menos uma das seguintes for verdadeira:
- O
object.validTimeInterval.end.date
passou. O cartão é movido para "Cartões expirados" em até 24 horas. - O campo
object.state
está marcado comoExpired
,Inactive
ouCompleted
.
O exemplo de código a seguir demonstra o vencimento do objeto de cartão usando a API do API Wallet.
Java
Para iniciar sua integração em Java, consulte nosso exemplos de código no GitHub (link em inglês).
/** * Expire an object. * * <p>Sets the object's state to Expired. If the valid time interval is already set, the pass will * expire automatically up to 24 hours after. * * @param issuerId The issuer ID being used for this request. * @param objectSuffix Developer-defined unique ID for this pass object. * @return The pass object ID: "{issuerId}.{objectSuffix}" */ public String expireObject(String issuerId, String objectSuffix) throws IOException { // Check if the object exists try { service.transitobject().get(String.format("%s.%s", issuerId, objectSuffix)).execute(); } catch (GoogleJsonResponseException ex) { if (ex.getStatusCode() == 404) { // Object does not exist System.out.printf("Object %s.%s not found!%n", issuerId, objectSuffix); return String.format("%s.%s", issuerId, objectSuffix); } else { // Something else went wrong... ex.printStackTrace(); return String.format("%s.%s", issuerId, objectSuffix); } } // Patch the object, setting the pass as expired TransitObject patchBody = new TransitObject().setState("EXPIRED"); TransitObject response = service .transitobject() .patch(String.format("%s.%s", issuerId, objectSuffix), patchBody) .execute(); System.out.println("Object expiration response"); System.out.println(response.toPrettyString()); return response.getId(); }
PHP
Para iniciar sua integração em PHP, consulte nosso exemplos de código no GitHub (link em inglês).
/** * Expire an object. * * Sets the object's state to Expired. If the valid time interval is * already set, the pass will expire automatically up to 24 hours after. * * @param string $issuerId The issuer ID being used for this request. * @param string $objectSuffix Developer-defined unique ID for this pass object. * * @return string The pass object ID: "{$issuerId}.{$objectSuffix}" */ public function expireObject(string $issuerId, string $objectSuffix) { // Check if the object exists try { $this->service->transitobject->get("{$issuerId}.{$objectSuffix}"); } catch (Google\Service\Exception $ex) { if (!empty($ex->getErrors()) && $ex->getErrors()[0]['reason'] == 'resourceNotFound') { print("Object {$issuerId}.{$objectSuffix} not found!"); return "{$issuerId}.{$objectSuffix}"; } else { // Something else went wrong... print_r($ex); return "{$issuerId}.{$objectSuffix}"; } } // Patch the object, setting the pass as expired $patchBody = new TransitObject([ 'state' => 'EXPIRED' ]); $response = $this->service->transitobject->patch("{$issuerId}.{$objectSuffix}", $patchBody); print "Object expiration response\n"; print_r($response); return $response->id; }
Python
Para iniciar sua integração em Python, consulte nosso exemplos de código no GitHub (link em inglês).
def expire_object(self, issuer_id: str, object_suffix: str) -> str: """Expire an object. Sets the object's state to Expired. If the valid time interval is already set, the pass will expire automatically up to 24 hours after. Args: issuer_id (str): The issuer ID being used for this request. object_suffix (str): Developer-defined unique ID for the pass object. Returns: The pass object ID: f"{issuer_id}.{object_suffix}" """ # Check if the object exists try: response = self.client.transitobject().get(resourceId=f'{issuer_id}.{object_suffix}').execute() except HttpError as e: if e.status_code == 404: print(f'Object {issuer_id}.{object_suffix} not found!') return f'{issuer_id}.{object_suffix}' else: # Something else went wrong... print(e.error_details) return f'{issuer_id}.{object_suffix}' # Patch the object, setting the pass as expired patch_body = {'state': 'EXPIRED'} response = self.client.transitobject().patch( resourceId=f'{issuer_id}.{object_suffix}', body=patch_body).execute() print('Object expiration response') print(response) return f'{issuer_id}.{object_suffix}'
C#
Para iniciar sua integração em C#, consulte nosso exemplos de código no GitHub (link em inglês).
/// <summary> /// Expire an object. /// <para /> /// Sets the object's state to Expired. If the valid time interval is already /// set, the pass will expire automatically up to 24 hours after. /// </summary> /// <param name="issuerId">The issuer ID being used for this request.</param> /// <param name="objectSuffix">Developer-defined unique ID for this pass object.</param> /// <returns>The pass object ID: "{issuerId}.{objectSuffix}"</returns> public string ExpireObject(string issuerId, string objectSuffix) { // Check if the object exists Stream responseStream = service.Transitobject .Get($"{issuerId}.{objectSuffix}") .ExecuteAsStream(); StreamReader responseReader = new StreamReader(responseStream); JObject jsonResponse = JObject.Parse(responseReader.ReadToEnd()); if (jsonResponse.ContainsKey("error")) { if (jsonResponse["error"].Value<int>("code") == 404) { // Object does not exist Console.WriteLine($"Object {issuerId}.{objectSuffix} not found!"); return $"{issuerId}.{objectSuffix}"; } else { // Something else went wrong... Console.WriteLine(jsonResponse.ToString()); return $"{issuerId}.{objectSuffix}"; } } // Patch the object, setting the pass as expired TransitObject patchBody = new TransitObject { State = "EXPIRED" }; responseStream = service.Transitobject .Patch(patchBody, $"{issuerId}.{objectSuffix}") .ExecuteAsStream(); responseReader = new StreamReader(responseStream); jsonResponse = JObject.Parse(responseReader.ReadToEnd()); Console.WriteLine("Object expiration response"); Console.WriteLine(jsonResponse.ToString()); return $"{issuerId}.{objectSuffix}"; }
Node.js
Para iniciar sua integração no Node, consulte nosso exemplos de código no GitHub (link em inglês).
/** * Expire an object. * * Sets the object's state to Expired. If the valid time interval is * already set, the pass will expire automatically up to 24 hours after. * * @param {string} issuerId The issuer ID being used for this request. * @param {string} objectSuffix Developer-defined unique ID for the pass object. * * @returns {string} The pass object ID: `${issuerId}.${objectSuffix}` */ async expireObject(issuerId, objectSuffix) { let response; // Check if the object exists try { response = await this.client.transitobject.get({ resourceId: `${issuerId}.${objectSuffix}` }); } catch (err) { if (err.response && err.response.status === 404) { console.log(`Object ${issuerId}.${objectSuffix} not found!`); return `${issuerId}.${objectSuffix}`; } else { // Something else went wrong... console.log(err); return `${issuerId}.${objectSuffix}`; } } // Patch the object, setting the pass as expired let patchBody = { 'state': 'EXPIRED' }; response = await this.client.transitobject.patch({ resourceId: `${issuerId}.${objectSuffix}`, requestBody: patchBody }); console.log('Object expiration response'); console.log(response); return `${issuerId}.${objectSuffix}`; }
Go
Para iniciar sua integração em Go, consulte nossos exemplos de código completos no GitHub exemplos de código no GitHub.
// Expire an object. // // Sets the object's state to Expired. If the valid time interval is // already set, the pass will expire automatically up to 24 hours after. func (d *demoTransit) expireObject(issuerId, objectSuffix string) { transitObject := &walletobjects.TransitObject{ State: "EXPIRED", } res, err := d.service.Transitobject.Patch(fmt.Sprintf("%s.%s", issuerId, objectSuffix), transitObject).Do() if err != nil { log.Fatalf("Unable to patch object: %v", err) } else { fmt.Printf("Object expiration id:\n%s\n", res.Id) } }