我有一个应用内购买,我想验证商店收据。我想通过使用Apple的itunes API从互联网上的随机机器验证这一点。交易完成后,收据存储在Parse中。我正在关注Apple developer website上的指南。首先我从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),所以我猜它与事务本身有关。有没有人见过这个?
谢谢!
答案 0 :(得分:1)
我在搜索相同的错误消息后登陆这里。我最终解决了这个问题 - 我能给出的最佳建议是仔细检查收据是否有效以及您是否将其发布到正确的URL。当我使用无效收据时(或者可能只是错误的收据 - 它是应用收据,而不是应用内购买收据),我收到了您的确切错误,并且在使用有效的沙盒收据时发布了类似的错误生产'验证网址。
我最初使用来自http://images.worldofapple.com/validating_051110.pdf的示例收据数据,在对其进行uudecoding并将其重新编码为base64之后。我试着发帖到:
两者都给出了相同的错误{"status":21002, "exception":"java.lang.IllegalStateException"}
。我现在怀疑根本原因是这是一个应用收据,而不是应用内购买收据。
然后我从https://gist.github.com/sauloarruda/2559455
收到另一个示例收据在https://buy.itunes.apple.com/verifyReceipt我得到了同样无用的回复:
{"status":21007}
最后在https://sandbox.itunes.apple.com/verifyReceipt我收到了预期的回复:
{
"receipt":{"original_purchase_date_pst":"2012-04-30 08:05:55 America/Los_Angeles", "original_transaction_id":"1000000046178817", "original_purchase_date_ms":"1335798355868", "transaction_id":"1000000046178817", "quantity":"1", "product_id":"com.mindmobapp.download", "bvrs":"20120427", "purchase_date_ms":"1335798355868", "purchase_date":"2012-04-30 15:05:55 Etc/GMT", "original_purchase_date":"2012-04-30 15:05:55 Etc/GMT", "purchase_date_pst":"2012-04-30 08:05:55 America/Los_Angeles", "bid":"com.mindmobapp.MindMob", "item_id":"521129812"}, "status":0}