iOSアプリだけでなく、Macでもアプリ内購入を行っています。
サンドボックス環境の領収書がhttps://buy.itunes.apple.com/verifyReceiptに対して検証されるときに私たちが理解していることは、ステータス コードとして 21007: を取得しますCargoBayStatusSandboxReceiptSentToProduction
。
これは iOS では完全に機能しますが、Mac アプリでは結果が異なります。
https://sandbox.itunes.apple.com/verifyReceiptを使用して検証した Mac アプリに有効なサンドボックス環境のレシートがあります。
https://buy.itunes.apple.com/verifyReceiptで同じ領収書を確認すると 、ステータス コードが 21007 に戻る必要がありますが、それが行われていません。代わりに、次の応答が返されます。
<html><head><title>Error</title></head><body>Your request produced an error. <BR>[newNullResponse]</body></html>
基本的に、検証のためにこのアプリを Mac アプリ ストアに送信し、Apple の担当者がテスト ID を使用すると、本番 URL のレシート検証のステータス コードで失敗するサンドボックスのレシートを取得し、レシートの検証のためにサンドボックスの URL にフォールバックできます。 . しかし、説明したように、応答には有効なステータス コードが含まれていません。
ターミナルで次のコマンドを実行しました。
Base 64 エンコーディングを使用して領収書をエンコードします。ここ
receipt
で、 は領収書ファイルのパスです。base64 -i receipt
領収書を確認するためにデータを送信します。
curl -d '{ "receipt-data": "<your b64 string here>" }' https://sandbox.itunes.apple.com/verifyReceipt
また
curl -d '{ "receipt-data": "<your b64 string here>" }' https://buy.itunes.apple.com/verifyReceipt
本番 URL の応答は次のとおりです。
<html><head><title>Error</title></head><body>Your request produced an error. <BR>[newNullResponse]</body></html>
理想的には、そうあるべきです{status code = 210007}
。以前にこの問題に直面した人はいますか? または、何か不足していますか?