我有一个应用内购买项目,我想验证其商店收据。我想通过使用 Apple 的 itunes API 从互联网上的随机机器验证这一点。交易完成后,收据存储在 Parse 中。我正在关注Apple 开发者网站上的指南。首先我从 Parse 得到交易:
curl -X GET \
-H "X-Parse-Application-Id: [...]" \
-H "X-Parse-REST-API-Key: [...]" \
https://api.parse.com/1/classes/Transactions/123456789
看起来像:
{
"transactionReceipt":{"__type":"Bytes","base64":"asdfqwertyASDFQWERTY="},
"transactionType":"Purchased",
"transactionIdentifier":"[...]",
"transactionDate":{"__type":"Date","iso":"2012-09-10T06:58:44.071Z"},
"createdAt":"2012-09-10T06:58:37.234Z",
"updatedAt":"2012-09-10T06:58:37.234Z",
"objectId":"HyPWJBlWzt"
}
然后,我在 transactionReceipt 中获取 base64 值并将其卷曲到 Apple 端点以获取收据:
curl -H "Accept: application/json" \
-H "Content-Type: application/json" \
-X POST
-d '{"receipt-data":"asdfqwertyASDFQWERTY="}' \
https://buy.itunes.apple.com/verifyReceipt
我得到的只是没有太大帮助:
{"status":21002, "exception":"java.lang.IllegalStateException"}
我认为这对应于“收据数据属性中的数据格式错误。”。让 curl 使用 --trace-ascii 转储整个操作并没有透露任何我认为相关的内容,我确信问题不在于连接本身。
这里有点难过。看起来确实是在他们的最后发现了交易(调整收据数据中的几个字节会引发 java.lang.IllegalArgumentException),所以我猜它与交易本身有关。有人见过这个吗?
谢谢!