ストアの領収書を確認したいアプリ内購入があります。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"}
これは、「領収書データ プロパティのデータの形式が正しくありませんでした」に対応すると思います。--trace-ascii を使用して curl で操作全体をダンプしても、関連性があると思われるものは何も明らかになりませんでした。問題は接続自体にあるのではないと確信しています。
ここでちょっと困った。トランザクションが最後に見つかったように見えます (領収書データの数バイトを微調整すると、java.lang.IllegalArgumentException がスローされます)。そのため、トランザクション自体に関係があると推測しています。誰もこれを見たことがありますか?
ありがとう!