使用PHP Curl调用Google Wallet API创建Pass对象时提示‘无效ID’
解决Google Wallet API创建凭证对象时"not a valid id"错误(400)
问题出在凭证对象的id字段格式不符合Google Wallet的规则,具体要求如下:
- Google Wallet要求凭证对象的id必须以对应Class的ID作为前缀,格式为
{ClassId}.{自定义唯一标识},两者用点分隔 - 每个凭证对象的id必须全局唯一,且必须与你传入的
classId完全关联
你的当前id是277210000034,没有包含classId的前缀3388000000022122130.pass.mycompany.test.loyalty1,这直接导致了校验失败。
修正方案
将id字段修改为包含Class ID前缀的格式,比如:
"id": "3388000000022122130.pass.mycompany.test.loyalty1.277210000034"
修正后的完整请求JSON示例:
{ "cardTitle": { "defaultValue": { "language":"en-GB", "value":"My Company" }}, "header": { "defaultValue": { "language":"en-GB", "value":"Loyalty Card" }}, "logo": { "sourceUri": { "uri": "https://www.mycompany.com/lib/img/logo.png", "description":"company logo" } }, "hexBackgroundColor": "#b03030", "classId": "3388000000022122130.pass.mycompany.test.loyalty1", "id": "3388000000022122130.pass.mycompany.test.loyalty1.277210000034", "barcode": {"type":"QR_CODE", "value":"277210000034", "alternateText":"277210000034" }, "heroImage": { "sourceUri": { "uri": "https://www.mycompany.com/lib/img/logo.png", "description":"company background" } }, "textModulesData": [ { "header":"Header One", "body":"Body One" } ], "state": "ACTIVE" }
补充说明
- 移除
id字段不可行,因为API要求必须提供唯一的id来标识凭证对象 - 无论使用Loyalty还是Generic类型,该id格式规则都通用
内容的提问来源于stack exchange,提问作者Barny
相关产品推荐
相关产品推荐

