2016-05-04 27 views
0

私たちは最近、消耗品のみのアプリ内購入を持つアプリを発売しました。無効な領収書と「有効な」領収書で購入したものの、appleからの検証応答の「in_app」配列は空の配列です。そのような「有効な」領収書をユーザーがどのように形成しているかを知る必要がありますか?それはアプリのダウンロードではなく、アプリ内購入の領収書ですか?私は今、検証のために以下のチェックをしています。 Appleのjsonレスポンスで "in_app"フィールドを抽出し、空でない場合はproduct_idの一致をチェックします。私はこのチェックが十分であるか、より良いバカ証拠チェックであるかどうかを知る必要があります。アプリ購入で消耗品購入

答えて

0

すべてのアプリは領収書を持っています。 IAPを購入したアプリでは領収書にin_appフィールドがあります。あなたのユーザーは、偽の呼び出しをupdatedTransactionメソッドにプッシュしています。あなたは領収書を取得しています(購入しなかったIAPに起因する)し、サーバーに送信しています。他のユーザーは、領収書をどこかから交換することができます(30人の泥棒のうちの1人が購入し、その有効な領収書を抽出して29人の共同泥棒に送付します)。その領収書をデバイスに貼り付け、次にupdatedTransactionsへの呼び出しをプッシュすると、サーバは現在有効ではあるが重複した領収書を取得します。あなたのサーバは、領収書の日付をチェックして、それが最近のものより古くなっているか、またはあなたのサーバに同時送信する必要があるpaymentRequestより古いことを発見する必要があります。 (デバイスでデコードするほうが安全です - はるかに安全です)

***重複したtransaction_idに対してtransaction_idを確認することができました。残念ながら、restoreCompletedTransactionが元の購入と同じtransaction_idを返すので、もうこれを行うことはできません。私はAppleにそれについて話し、彼らは私を無視した。

+1

私は、消耗品の場合、重複したtransaction_idを確認して拒否できることに気づきました。 –

+0

ありがとうございます。私は "original_transaction_id"がベットだと分かりました。 –

+0

@ PeterB.Kramer壮大な統一領収書にユーザー全体の購入履歴がある場合、どのトランザクションが現在の購入に関連付けられているかをどのように判断できますか? – Learn2Code

関連する問題