简介
轮播条形码看起来和常规条形码类似,但会定期更改, 通常每分钟发送一次,并且终端/读卡器只接受接收 最新的一个。这项安全措施可降低 条形码截图,特别是门票盗窃或未经授权的门票 转售。旋转条形码也可以作为一种替代方法,供无法 由于不支持 NFC(缺少硬件或 软件禁用)。
API 参考文档
有关轮换条形码的技术详情,请参阅
RotatingBarcode
类型。
载荷示例
JSON | |
---|---|
{ "rotatingBarcode": { "type": "QR_CODE", "valuePattern": "MyRotatingBarcode-{totp_timestamp_seconds}-{totp_value_0}", "alternateText": "Ticket#: 1234567890", "totpDetails": { "algorithm": "TOTP_SHA1", "periodMillis": "3000", "parameters": [ { "key": "3132333435363738393031323334353637383930", "valueLength": "8" } ] } } } |
回退机制
在用户设备上,给定时间内仅使用一种兑换机制, 具体取决于卡券的配置方式以及设备的功能。 按照优先级顺序,系统将使用以下兑换类型:
-
智能触碰:如果指定了智能触碰负载,并且设备支持
NFC/HCE
<ph type="x-smartling-placeholder">
- </ph>
- 请注意,用户可以通过点击“显示代码”来覆盖此设置, 会强制显示旋转的条形码/静态条形码。
- 轮换条形码:如果指定了轮换的条形码有效负载
- 静态条形码:如果指定了条形码载荷
指定多个兑换载荷可确保所有用户均受支持,但 可能存在安全隐患具体来说,将静态条形码用作 轮换条形码的替代功能会抵消使用 旋转条形码。静态条形码后备仅在网页视图中显示 或在不支持旋转条形码的客户端上。截至今天,我们预计 所有 Google 电子钱包客户端都支持旋转条形码。
保存流
Google Wallet API 提供了多种流程,包括:
- 及时或提前创建公交课程
- 发送 JWT 中的完整对象,或先保存对象, 然后在 JWT 中按 ID 引用它们
- 在保存对象后对其进行更新
提议的 rotationBarcode 字段与所有这些流兼容, 不过,为了提高安全性,我们建议:
-
调用
object:insert
API 以将卡券插入 Google 电子钱包服务器,然后配置“添加到 Google 钱包”按钮, 在 JWT 中按 ID 引用特定对象。这样可以确保 生成的 JWT 不包含轮替条形码的密钥。 - 请使用范围限定为单次凭证的动态密码密钥
- 除非更新密钥,否则预计有效期为 通行证。我们预计此密钥在更新期间不会以任何频率更新 正常操作过程中的影响。
以下序列图展示了不同操作者之间的流程 对于典型集成:
![使用旋转条形码的序列图](https://developers.google.cn/static/wallet/images/rotating-barcodes-sequence-diagram.png?authuser=7&hl=nb)