JavaScript 网页按钮

Google Wallet API 可让您的用户从网页向 Google 钱包添加对象。 用户可以直接从您的网站添加他们的银行卡。

本参考文档详细介绍了用于呈现 Google Wallet API 按钮的 HTML 元素 g:savetoandroidpay,以及用于向 Google 描述您的网络服务的 JSON Web 令牌

Google Wallet API JavaScript

若要在加载时自动解析 g:savetoandroidpay HTML 标记,请包含标准 JavaScript

<script src="https://apis.google.com/js/platform.js" type="text/javascript"></script>

若想实现 AJAX 应用以及显式呈现 Google Wallet API 按钮,请包含 "parsetags": "explicit" 参数。

<script src="https://apis.google.com/js/platform.js" type="text/javascript">
  {"parsetags": "explicit"}
</script>

g:savetoandroidpay HTML 标记

g:savetoandroidpay 命名空间标记定义了“添加到 Google 钱包”按钮的放置位置和各种属性。如果您在服务器端呈现 HTML 和 JWT,请使用此标记。

<g:savetoandroidpay jwt="JWT" onsuccess="successHandler" onfailure="failureHandler" />
字段 类型 必需 说明
height 字符串 要显示的按钮的高度。可能的值包括:small(高度为 30 像素)和 standard(高度为 38 像素)。height 默认为 small。 要查看不同 height 设置的按钮示例,请参阅 Google Wallet API 按钮
jwt 字符串 Google Wallet API JWT。
onsuccess 字符串 保存成功回调处理程序函数的字符串名称。
onfailure 字符串 保存失败回调处理程序函数的字符串名称。系统会向此函数传递一个包含 errorCode 和 errorMessage 的错误对象。
onprovidejwt 字符串 提供 JWT 处理程序函数的字符串名称。此函数用于在将对象添加到 Google 钱包之前拦截并可能操纵 JWT 数据。 此函数不接受任何参数,并且必须以字符串形式返回 JWT。在实现事件处理脚本时,可以在字段 this.getOpenParams().renderData.userParams.jwt 下检索原始 JWT 数据。
size 字符串 要显示的按钮的宽度。您可以将 size 设置为 matchparent,使其宽度与父元素的宽度相匹配。或者,您也可以不定义 size,让宽度拉伸以适应 text 设置的宽度。 要查看不同 size 设置的按钮示例,请参阅 Google Wallet API 按钮
text 字符串 已弃用
textsize 字符串 若指定 textsize=large,显示屏会显著增大文本大小和按钮大小,非常适合有特殊界面要求的场景。
theme 字符串 要显示的按钮的主题。可能的值包括 darklight。默认主题为 dark。要查看不同 theme 设置的按钮示例,请参阅 Google Wallet API 按钮

Google Wallet API JWT

Google Wallet API JWT 定义了要保存的对象和类。

JSON 表示法

{
  "iss": "example_service_account@developer.gserviceaccount.com",
  "aud": "google",
  "typ": "savetowallet",
  "iat": 1368029586,
  "payload": {
    "eventTicketClasses": [{
      ... //Event ticket Class JSON
    }],
    "eventTicketObjects": [{
      // Event ticket Object JSON
    }],
    "flightClasses": [{
      // Flight Class JSON
    }],
    "flightObjects": [{
      // Flight Object JSON
    }],
    "giftCardClasses": [{
      // Gift card Class JSON
    }],
    "giftCardObjects": [{
      // Gift card Object JSON
    }],
    "loyaltyClasses": [{
      // Loyalty Class JSON
    }],
    "loyaltyObjects": [{
      // Loyalty Object JSON
    }],
    "offerClasses": [{
      // Offer Class JSON
    }],
    "offerObjects": [{
      // Offer Object JSON
    }],
    "transitClasses": [{
      // Transit Class JSON
    }],
    "transitObjects": [{
      // Transit Object JSON
    }]
  },
  "origins": ["http://baconrista.com", "https://baconrista.com"]
}

字段

字段 类型 必需 说明
iss 字符串 您的 Google Cloud 服务账号生成的电子邮件地址。
aud 字符串 受众群体。Google Wallet API 对象的受众将始终为 google
typ 字符串 JWT 类型。Google Wallet API 对象的受众将始终为 savetowallet
iat 整数 自纪元以来的秒数发出。
payload 对象 载荷对象。
payload.eventTicketClasses 数组 要保存的活动门票类。
payload.eventTicketObjects 数组 要保存的活动门票对象。
payload.flightClasses 数组 要保存的航班类别。
payload.flightObjects 数组 要保存的航班对象。
payload.giftCardClasses 数组 要保存的礼品卡类。
payload.giftCardObjects 数组 要保存的礼品卡对象。
payload.loyaltyClasses 数组 要保存的会员卡类。
payload.loyaltyObjects 数组 要保存的会员卡对象。
payload.offerObjects 数组 要保存的优惠对象。
payload.offerClasses 数组 优惠类要保存。
payload.transitObjects 数组 要保存的公交对象。
payload.transitClasses 数组 要保存的公交类。
origins 数组 要批准使用 JWT 保存功能的网域数组。如果 origins 字段未定义,Google Wallet API 按钮将不会呈现。如果“Origins”字段未定义,您可能会在浏览器控制台中收到“Load denied by X-Frame-Options”或“Refused to display”消息。

编码后的 JWT 应类似于以下示例:

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJnb29nbGUiLCJvcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIsImh0dHA6Ly93d3cuZ29vZ2xlLmNvbSJdLCJpc3MiOiJzMmFwLXRvb2wuZ29vZ2xlLmNvbUBhcHBzcG90LmdzZXJ2aWNlYWNjb3VudC5jb20iLCJpYXQiOjE1NTE5ODcxNTEsInR5cCI6InNhdmV0b3dhbGxldCIsInBheWxvYWQiOnsib2ZmZXJPYmplY3RzIjpbeyJpZCI6IjMyMDI0MTMyNDE4NDM2OTk0MDEuMDFfT2ZmZXJPYmplY3RJZCJ9XX19.maHX40WWT29TC_kEb90EKQBH9AiTYAZR3153K8UI7fznVnfjVdlwsH_GKTECV3PGXdNnKCcmatUbKsONC0bxrnAHYG02kuvA1D3hSctz_amU66ntsvGIDe13mpxTzhI8fPvt9KMP1iaO7uOJuLQIHwipu4uRFAjyFaHGVaSFaP9c53qQyb_Zgyyk50M-MhH2n4kDpstNCqUJKWaadQkOWjrtMjwGzQ_ME04lbR4wb_mfK1A7Rc1UieWkxM9aMl5TOPubBKxKRRk_CqillN8XoTl9MI5RRGPuElVO28zGpYlFS6BarzDaaUfmbRZGvfF8ZiKrHZKxVrJjfZIJ2TCcDw

gapi.savetoandroidpay.render 函数

此函数可让您显式呈现 Google Wallet API 按钮。

gapi.savetoandroidpay.render("dom-container",{
  "jwt": "JWT",
  "onsuccess": "successHandler",
  "onfailure": "failureHandler"
});
字段 类型 必需 说明
dom-container 字符串 用于放置 Google Wallet API 按钮的容器的 ID。
jwt 字符串 定义要保存的内容的 JWT。
onsuccess 字符串 保存成功回调处理程序函数的字符串名称。
onfailure 字符串 保存失败回调处理程序函数的字符串名称。系统会向此函数传递一个包含 errorCode 和 errorMessage 的错误对象。
onprovidejwt 字符串 提供 JWT 处理程序函数的字符串名称。此函数用于在将对象添加到 Google 钱包之前拦截并可能操纵 JWT 数据。 此函数不接受任何参数,并且必须以字符串形式返回 JWT。在实现事件处理脚本时,可以在字段 this.getOpenParams().renderData.userParams.jwt 下检索原始 JWT 数据。

Google Wallet API 错误代码和消息

下表列出了使用 JavaScript 按钮保存对象失败时,在错误对象中传递给失败回调函数的错误代码和默认错误消息。

        {
          "errorCode": "errorCode",
          "errorMessage": "errorMessage"
        }
errorCode errorMessage
SERVICE_FAILURE Google 钱包服务器出现错误。
CLASS_NOT_FOUND 找不到对象中引用的类。
CLASS_MISMATCH 必须存在相同类型的对象,并且必须引用封闭的类。
ORIGIN_MISMATCH 按钮的来源与来源列表中指定的来源不匹配。
INVALID_NUM_TYPES 只能指定一种类型的对象。
INVALID_SIGNATURE 无法验证签名。
INVALID_DUPLICATE_IDS 不允许使用重复的对象或类。
INVALID_JWT JWT 无效。
INVALID_EXP_IAT JWT 已过期或将来颁发。
INVALID_AUD AUD 字段的值无效。
INVALID_TYP TYP 字段的值无效。
INVALID_NUM_OBJECTS 只能为会员卡、礼品卡和优惠指定一个对象和最多一个类。
MALFORMED_ORIGIN_URL 来源网址格式有误。网址必须包含协议和域名。
MISSING_ORIGIN 必须指定来源。
MISSING_FIELDS 封闭的对象或类缺少必填字段。

本地化

JavaScript 按钮中的语言根据以下条件而变化:

  1. 如果用户已登录 Google,则该按钮会以用户的 Google 帐号个人资料中提供的首选语言呈现。 用户可以阅读更改语言,以了解如何更改其 Google 帐号的首选语言。
  2. 如果用户未登录 Google,则该按钮将使用 HTTP 标头中的 ACCEPT-LANGUAGE 值。

如果您发现按钮没有根据上述逻辑以正确的语言呈现,或者措辞不自然,请与我们的支持团队联系