StoreKit ガイドから:
ユーザーが非消費型製品または購入済みの更新可能なサブスクリプションを購入しようとすると、アプリケーションは復元トランザクションではなく、そのアイテムの通常のトランザクションを受け取ります。ただし、ユーザーがその製品に対して再度請求されることはありません。アプリケーションは、これらのトランザクションを元のトランザクションと同じように扱う必要があります。
これは、私が取り組んでいるアプリに大きな問題をもたらします。アプリ内購入による販売のために、パブリッシャーから大量のコンテンツのライセンスを取得しています。このコンテンツの一部を販売する (つまり、ユーザーが支払う) たびに、サーバーがサーバー上の API を呼び出してトランザクションを報告する必要があります。これは会計上の目的であり、最終的には、彼らとの合意に従って、月末に支払う金額を決定するために使用されます.
SO や他の場所で、restoreCompletedTransactions をかなり頻繁に呼び出し、ユーザーが既に購入したものをデバイス上でローカルに理解して、再度購入できないようにすることに関するいくつかの提案を読みました。これは、サーバー側で実装できるはずのもののように思えます。ただし、Apple サーバーから返されるレシートは、StoreKit ガイドで約束されているように、購入と再購入でまったく同じです。
この種の状況で、StoreKit からの支払いコールバックが有効なアカウンティング メカニズムとして信頼できない場合 (「支払われた」対「支払われなかった」)、トランザクション トラフィックに関する他のリアルタイムの洞察を利用できますか? 私たちが協力している発行元が、iTunes Connect から実際の支払った金額を得るために、月末から 45 日待たなければならないと言ったら、満足しないと思います。