You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Android API更新Google Pay应用中的会员卡?

Updating Loyalty Cards in Google Pay via Android API

Great question! Updating existing loyalty cards through the Google Pay Android API is totally doable—you just need to leverage the same core API you used to save the card initially, with a few key tweaks. Here's a step-by-step breakdown:

Step 1: Keep track of the card's resourceId

When you first saved the loyalty card to Google Pay, the API returned a SavePassesResult object that includes a unique resourceId for the card. You must store this ID (either in your backend database or secure local storage) because it's how Google Pay identifies which existing card to update.

If you didn't save the resourceId initially, you can retrieve it by requesting the LIST_PASSES permission and calling the listPasses() method to fetch all passes associated with your app. Note that this permission requires compliance with Google's data policies, so make sure to review those first.

Step 2: Build the updated loyalty payload

Construct a loyalty object with the same structure you used for the initial save, but with two critical changes:

  • Include the saved resourceId in the payload (this tells Google Pay you want to update an existing card, not create a new one).
  • Modify the fields you want to update (e.g., points balance, membership tier, expiration date).

Here's a simplified example of what the updated payload might look like:

val updatedLoyaltyObject = JSONObject().apply {
    put("id", "your-loyalty-program-id")
    put("classId", "your-loyalty-class-id")
    put("resourceId", "saved-resource-id-from-initial-save")
    put("state", "ACTIVE")
    put("balance", JSONObject().apply {
        put("value", 1500) // Updated points balance
        put("currency", "USD")
    })
    // Add other updated fields here
}

Step 3: Call the savePasses() method to update the card

Use the same PayClient instance you initialized for saving cards, and call savePasses() with your updated payload. Google Pay will automatically detect the resourceId and update the existing card instead of creating a duplicate.

Example code snippet (Kotlin):

val request = SavePassesRequest.newInstance(updatedLoyaltyObject.toString())
payClient.savePasses(request, this)
    .addOnSuccessListener { result ->
        // Update succeeded—handle confirmation for the user
    }
    .addOnFailureListener { exception ->
        // Handle errors (e.g., invalid resourceId, permission issues)
    }

Key Notes to Remember

  • Immutable fields: Some fields (like the core membership ID) might be immutable once the card is created. Double-check Google's loyalty object schema to confirm which fields can be updated.
  • Permissions: Ensure your app still holds the necessary permissions (com.google.android.gms.wallet.ACCESS_WALLET) and that the Google Pay environment (test vs. production) matches your setup.
  • Error handling: Common failure scenarios include an invalid resourceId (if the user deleted the card) or invalid payload data. Always handle these cases gracefully and provide clear feedback to users.

Hope this clears things up! If you hit any specific snags during implementation, feel free to share more details and I can help troubleshoot further.

内容的提问来源于stack exchange,提问作者Nagesh Jatagond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:32:08