만료된 혜택

패스를 만료되었으며 논리적으로 만료된 그룹으로 설정하면 Google 월렛 앱의 '패스' 탭 아래에 있습니다. Google 월렛 앱에는 보관처리된 패스나 비활성 패스가 모두 포함된 '만료된 패스' 섹션이 있습니다.

다음 조건 중 하나 이상에 해당하는 패스는 '만료된 패스' 섹션으로 이동합니다.

  • `object.validTimeInterval.end.date가 만료되면 패스가 최대 24시간 후 언제든지 '만료된 패스'로 이동합니다.
  • 객체 object.state 필드의 상태가 Expired, Inactive 또는 Completed로 표시됩니다.

다음 코드 샘플은 Google Wallet API를 사용하여 패스 객체를 만료하는 방법을 보여줍니다.

Java

자바에서 통합을 시작하려면 GitHub의 전체 코드 샘플을 참조하세요.

/**
 * 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.offerobject().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
  OfferObject patchBody = new OfferObject().setState("EXPIRED");

  OfferObject response =
      service
          .offerobject()
          .patch(String.format("%s.%s", issuerId, objectSuffix), patchBody)
          .execute();

  System.out.println("Object expiration response");
  System.out.println(response.toPrettyString());

  return response.getId();
}

2,399필리핀

PHP에서 통합을 시작하려면 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.
 *
 * @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->offerobject->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 OfferObject([
    'state' => 'EXPIRED'
  ]);

  $response = $this->service->offerobject->patch("{$issuerId}.{$objectSuffix}", $patchBody);

  print "Object expiration response\n";
  print_r($response);

  return $response->id;
}

Python

Python에서 통합을 시작하려면 GitHub의 전체 코드 샘플을 참조하세요.

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.offerobject().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.offerobject().patch(
        resourceId=f'{issuer_id}.{object_suffix}',
        body=patch_body).execute()

    print('Object expiration response')
    print(response)

    return f'{issuer_id}.{object_suffix}'

C#

C#으로 통합을 시작하려면 GitHub의 전체 코드 샘플을 참조하세요.

/// <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.Offerobject
      .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
  OfferObject patchBody = new OfferObject
  {
    State = "EXPIRED"
  };

  responseStream = service.Offerobject
      .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

노드에서 통합을 시작하려면 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.
 *
 * @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.offerobject.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.offerobject.patch({
    resourceId: `${issuerId}.${objectSuffix}`,
    requestBody: patchBody
  });

  console.log('Object expiration response');
  console.log(response);

  return `${issuerId}.${objectSuffix}`;
}

Go

Go에서 통합을 시작하려면 GitHub의 전체 코드 샘플( 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 *demoOffer) expireObject(issuerId, objectSuffix string) {
	offerObject := &walletobjects.OfferObject{
		State: "EXPIRED",
	}
	res, err := d.service.Offerobject.Patch(fmt.Sprintf("%s.%s", issuerId, objectSuffix), offerObject).Do()
	if err != nil {
		log.Fatalf("Unable to patch object: %v", err)
	} else {
		fmt.Printf("Object expiration id:\n%s\n", res.Id)
	}
}