如何在 Android 支付中更新钱包 object?

How to update a wallet object in Android Pay?

我正在与 "Save to Android Pay" API 合作,我正在尝试更新我的 object 之一。根据Google's API

实现它的一种方法是使用 cURL 命令并按照以下步骤操作:

  1. 获得令牌

java -jar TokenUtil.jar serviceAccountEmailAddress pathToPrivateKey

  1. 将特定的 object 保存到文本文件

curl -X GET https://www.googleapis.com/walletobjects/v1/walletObjectType/resourceId -H "Authorization: Bearer bearerToken" > myobjectfile.txt

  1. 在文件中进行我希望进行的更改(并将版本值增加 1)
  2. 将更新后的文件推送回服务器。

curl -X PUT https://www.googleapis.com/walletobjects/v1/walletObjectType/resourceId -H "Authorization: Bearer bearerToken" -H "Content-Type: application/json" -d myobjectfile.txt

步骤 1 - 3 工作正常,但是当我尝试将 object 推回服务器时,出现以下错误:

{
"error": {
         "errors": [
                   {
                   "domain": "global",
                   "reason": "parseError",
                   "message": "Parse Error"
                   }
                   ],
         "code": 400,
         "message": "Parse Error"
         }
}

因为我在文件中更改的只是版本(可能是某些标题中的一个字符,只是为了查看更改)我不明白为什么我收到解析错误,因为 myobjectfile.txt 来自服务器而且它的内部结构不是我建的。

他们花了一段时间,但 Google 终于解决了他们的错误并与我分享了他们的解决方案(希望他们也能尽快更新他们的 API):

• 文件应该是 .json 文件而不是 .txt 文件。

• PUT命令中的文件名前应有一个@符号:

curl -X PUT https://www.googleapis.com/walletobjects/v1/walletObjectType/resourceId -H "Authorization: Bearer bearerToken" -H "Content-Type: application/json" -d @myobjectfile.json

应用这些更改后,我能够更新我的对象。