問題タブ [receipt-validation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - iOS 7.0 以降のアプリの領収書をリモートで確認すると 21002 が返されますが、トランザクションの領収書では機能します
アプリの受信を確認しようとすると、常に 21002 エラー (不正な形式) が発生します。しかし、同じ php コードを使用してトランザクションの受信を確認することは問題なく機能します。
Xamarin C# (Objective-C と同じコード) の RestoreTransaction コールバックで、サンドボックス アプリの領収書を取得します。
php:
以前の 7.0 スタイルのトランザクション レシート:
同じ php コードで、Apple は成功を返します。SO と Apple のドキュメントを 1 日中読んでいますが、すべて問題ないように見えますが、新しいアプリの領収書は常に 21002 を返します。
ios - Apple Auto サブスクリプションの開発で更新ステータスを検出する方法は?
サーバーがレシートを検証する場合、Apple が自動サブスクリプションの expires_date を含む latest_receipt_info を返す方法があります。しかし、このチェックを行う時間と方法は? 毎日、サーバーがこのチェックを行うか、アプリが開いたときにこれを行うようにします。
更新状況を確認する良い方法はありますか?
ios - Swift 3 でのレシート検証の実装
私は Swift 3 で iOS アプリを開発しており、このチュートリアルに従ってレシート検証を実装しようとしています: http://savvyapps.com/blog/how-setup-test-auto-renewable-subscription-ios-app。ただし、チュートリアルは以前のバージョンの Swift を使用して記述されているようで、いくつかの変更を加える必要がありました。これが私の receiveValidation() 関数です:
この問題は、expirationDateFromResponse() メソッドを呼び出そうとすると発生します。このメソッドに渡される jsonResponse には、 のみが含まれていることがわかりますstatus = 21002;
。これを調べたところ、「領収書データ プロパティのデータの形式が正しくないか、欠落しています」という意味です。ただし、私がテストしているデバイスには、製品の有効なサンドボックス サブスクリプションがあり、サブスクリプションはこの問題を除けば正しく機能しているようです。領収書データの値が正しく読み取られてエンコードされるようにするために、他に何かする必要がありますか、またはこの問題を引き起こしている可能性のある他の問題はありますか?
編集:
storeRequest.httpBody を設定する別の方法を試しました。
ただし、このコードでアプリを実行すると、行に到達するとハングしますjsonData = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
。catch ブロックにたどり着くことさえできず、何もしなくなります。私がオンラインで見たものから、他の人は JSONSerialization.data を使用して Swift 3 でリクエスト httpBody を設定するのに問題があるようです。
ios - iOS: 有料の iOS アプリケーションをアプリ内購入で無料に変換しながら、有料ユーザーを追跡する
現在、AppStore に有料の iOS アプリケーションがあります。アプリ内購入で無料のアプリに変換する予定です。以前のバージョンでアプリケーションの料金を支払ったユーザーに対して、アプリ内購入を無料にしたいと考えています。これは、App Receipt Validation を介して実行できると思います。しかし、アプリケーションが有料から無料に変わると、レシートは更新され、購入の詳細は失われますか?
ios - iOS での起動時に App Store のレシートを検証 / 更新する必要がありますか?
領収書の検証に関するAppleのドキュメントには、起動直後に領収書の検証を実行するように書かれています。これは、 によって返されたパスでデータをチェックし、存在しない場合は[[NSBundle mainBundle] appStoreRecieptURL]
経由で更新し、検証することになります。SKReceiptRefreshRequest
前述のドキュメントは、iOS と macOS の両方を参照しています。
iOSでは実際に必要ですか?もしそうなら、なぜですか?ユーザーがジェイルブレイクされたデバイスでアプリを使用できないようにするためですか、またはアプリ ストアからアプリを購入していない場合 (この場合、アプリが無料かどうかは気にしません) ですか? それとも、アプリ内購入の復元や検証などの他の操作に影響がありますか? たとえば、アプリ内購入のトランザクションを検証するために、領収書データが既に存在している必要がありますか?
注: アプリ内サブスクリプションは使用していません。アプリ内購入がありますが、レシートを確認してサーバー側で購入を記録した後、レシートを使用していません。
ios - ユーザーがアプリ購入アイテム (アプリ購入システムの Apple アプリ ストア) で「消耗品」を返金したかどうかを検出します。
ユーザーがアプリ内購入をキャンセルしたかどうかを検出する唯一の方法は、ユーザーの iPhone から取得した領収書データを使用して、そのアイテムのキャンセル日がそこに存在するかどうかを確認することだとオンラインでこれまで読んだことがありますが、私が知る限り、このフィールドは、自動更新可能なサブスクリプション アイテムにのみ表示されます。
(少なくとも、アプリの購入について言及しているすべての投稿をオンラインで読んだ限りでは、消耗品についてはまったく言及されていません。)
消耗品はアプリ自体が取引を終了するまでレシートデータに保存されるのに対し、消耗品は常にレシートデータに保存されるため、アプリ自体が取引を終了すると、その商品の購入取引は、アプリ自体が取引を終了すると、レシートデータから永久に削除されます。アイフォン。
そこで私の質問は、ユーザーが消耗品である Apple からのアプリ内購入のキャンセルを要求した場合、同じアイテム トランザクションをレシート データに cancel_date フィールドが含まれているものとして返してもらえるのでしょうか?
これを確認した人を見たことがない。
誰かが cancel_date の例を含む領収書データベースの base64 文字列を提供できればうれしいです (それが合法である場合)。