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

如何通过Google Wallet API向通用通证发送更新推送通知?

解决Google Wallet通用通证更新推送通知不生效的问题

核心问题分析

你当前的实现误区在于:textModulesData中的enableNotification仅控制该文本模块是否会在通知中展示,并非触发推送通知的开关。真正触发推送的关键是在通证更新请求中添加sendNotification=true参数,同时需要确保文本模块的时间范围包含当前时间。

具体解决步骤

  • 添加推送触发参数
    在调用Google Wallet API更新通用通证对象时,必须在请求的参数中设置sendNotification=true。这个参数是触发推送通知的核心开关,它告诉Google Wallet服务向用户设备发送更新提醒。

  • 修正文本模块的时间范围
    你设置的validTimeInterval是24小时后才开始生效,这意味着当前时间不在该区间内,文本模块不会被包含在通知内容中。需要将start时间调整为当前时间或更早,确保通知触发时该模块处于有效状态。

  • 验证权限与订阅状态
    确认你的服务账号拥有wallet.genericObjects.update权限,且用户添加通证时未手动关闭推送通知(用户首次添加通证时会自动订阅推送)。

修正后的代码示例

const { google } = require('googleapis');
const moment = require('moment');
const wallet = google.wallet('v1');

async function updateGenericToken() {
  // 初始化授权(使用你的服务账号密钥)
  const auth = new google.auth.JWT(
    process.env.SERVICE_ACCOUNT_EMAIL,
    null,
    process.env.SERVICE_ACCOUNT_PRIVATE_KEY,
    ['https://www.googleapis.com/auth/wallet_object.issuer']
  );
  await auth.authorize();

  // 更新通证对象并触发推送
  const response = await wallet.genericObjects.patch({
    auth: auth,
    resourceId: 'YOUR_GENERIC_OBJECT_ID', // 替换为你的通证对象ID
    requestBody: {
      textModulesData: [
        {
          header: 'Last Notification',
          body: 'hello world 000',
          enableNotification: true,
          id: 'last_notification',
          validTimeInterval: {
            start: { date: moment().toISOString() }, // 设置为当前时间开始
            end: { date: moment().add(48, 'hours').toISOString() }
          }
        }
      ]
    },
    sendNotification: true // 关键:开启推送通知
  });

  console.log('通证更新成功,推送已触发:', response.data);
}

验证方式

更新完成后,检查用户的Google Wallet应用是否收到推送,同时可以在Google Wallet开发者控制台的“事件日志”中查看通知是否被成功发送。

内容的提问来源于stack exchange,提问作者Ruben Perez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:00:57