問題タブ [receipt]
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 - 同じ iTunes IAP レシートを 2 回検証しようとすると、2 回目は失敗しますか?
Apple の領収書検証サービスについて質問があります (ここで説明): https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573 -CH104-SW1
私の質問は次のとおりです。同じ正当な領収書を 2 回検証しようとすると、2 回目の検証試行は失敗しますか? おそらく、Apple のレシート検証サーバーは、これを同じレシートを 2 回使用してレシートの検証を無効にしようとしていると解釈するでしょうか? でも私にはわからない。サーバーが IAP レシートの 100% を無効と報告している状況があり、その理由を突き止めようとしています。それらが100%無効だとは思いません。
私たちが提携している会社もこれらの IAP 領収書を検証していることを知り、私たちよりも先に彼らの検証呼び出しが行われると確信しています。したがって、彼らの検証呼び出しが領収書を「使用」しているため、私たちの検証呼び出しが失敗するのではないかと思っています。
php - 21002 ステータスを返す appReceiptStoreURL の検証
アプリ内購入での購入と領収書の検証を処理するクラスを作成しました。少し前に、SKPaymentTransaction で transactionReceipt プロパティを使用していましたが、コードをかなり更新し、[NSBundle mainBundle] で appStoreReceiptURL を使用するようになりました。
基本的に、領収書は Apple のサーバーに適切な方法で送信されているようですが、ステータス コード 21002 が引き続き表示されます。アプリ内購入の領収書に関して、このステータスが何を意味するのかわかりません。
レシートを検証するローカル メソッドは次のとおりです。
サーバー上の重要な PHP 関数はこれを行います。
実際に実行される PHP スクリプトは次のとおりです。
java - CSC Java 領収書
通常の領収書と同じように、できるだけ書式を整えた領収書を作成する必要があります。名前と住所、時間と日付がすべて上部にあります。(これらはすべてユーザー入力である必要があります。)
メインコード
これは、アイテム配列リストのクラスです
配列リスト
コードをコンパイルすると、次に関する例外が発生しますException in thread "main" java.util.MissingFormatArgumentException: Format specifier '14s'
。この問題を解決するにはどうすればよいですか?
ios7 - アプリがデバイスに領収書を持たないios7の状況は何ですか
Apple ドキュメント [1] を読むと、アプリは、ダウンロード、更新、またはアプリ内購入が復元されると、更新されたレシートを取得します。まったく存在しない場合はありますか?
明確でないいくつかの特定のケース:
- ユーザーが ios6 にアプリをインストールしてから ios7 にアップデートした場合、レシートは失われますか?
- ユーザーがバックアップを復元する場合、レシートはバックアップ/復元に含まれますか?
この質問の理由は、アプリがサーバーからレシートを取得する必要があるときに、アプリのユーザーのうち何人がログイン プロンプトを表示するかを理解するためです。また、これが発生したときにオフラインであるため、何人のユーザーが問題に遭遇する可能性があるかを関連付けました。
[1] WWDC 2013 セッション 308: iOS7 および OSX での統合レシート (登録開発者のみ利用可能)
ios - iOS 7 で appStoreReceiptURL (NSData) によって返された無効なトランザクション レシート
次のメソッドを使用して領収書データを取得しています。
次のコードを使用して JSON レシートを読み取ります。
このdictionaryFromPlistData:
メソッドは、NSDictionary
によって返されたデータに対して適切なオブジェクトを返しtransactionReceipt
ますが、次を使用して返されたnil
データを使用して返されますappStoreReceiptURL
。その結果、有効な領収書が得られません!
上記のコードが iOS 7 で機能しないのはなぜですか?
繰り返しますが、によって返された をdictionaryFromPlistData:
正しく変換します。NSData
transaction.transactionReceipt
printing - OpenERP POS エプソンプリンター
ubuntu 13.10にレシートプリンターとしてEpson TM-T20をインストールしました。残念ながら、レシートの写真付きでA4サイズで印刷されています。80mm のレシート用紙に印刷するようにシステムを変更するのを手伝ってくれる人はいますか?
また、トランザクション後に iPad の OpenERP POS Web クライアントで印刷を押しても、何もしません。
どんな助けでも大歓迎です。
ios7 - ユーザーがサインインのために SKReceiptRefreshRequest をキャンセルしたことを検出しています
iOS7 のレシートを更新する必要がある場合、適切な方法は SKReceiptRefreshRequest を使用することです。これにより、ユーザーが Apple ID を使用してサインインするための Apple ダイアログが表示されます。また、キャンセルすることもできます。ユーザーがキャンセルを押したかどうかをどのように検出できますか? (もちろん、iOS6 では、これは[[SKPaymentQueue defaultQueue] restoreCompletedTransactions] のキャンセル イベントをキャッチすることで実行できます)。
SKReceiptRefreshRequest オブジェクトには、次の 2 つのメソッドを持つデリゲートがあります。
私のコードでは、ユーザーがキャンセルを押すかどうかに関係なく、requestDidFinish デリゲート メソッドが呼び出されます。
これが重要な理由は、ユーザーが [キャンセル] を押した場合に復元プロセスをキャンセルしたいからです。更新要求の後にレシートが存在しなかった場合、これは比較的簡単な場合があります。ただし、SKReceiptRefreshRequest の前にレシート (一部の購入を含む) がアプリに存在する場合があるため、ユーザーがサインイン ダイアログからキャンセルした場合、レシートはアプリに残ります。
これを行う方法について2つのアイデアがあります。
1) 更新リクエストの前に、バンドルからレシートを削除します。これに関する明らかな問題は、アプリがバンドルからファイルを削除できないことです (たとえば、「インストール後にバンドルからファイルを削除する」を参照)。私は試した。いいえ。
2) リフレッシュ要求の前と後のレシートのバイトをチェックします。それらが異なる場合、これはユーザーがキャンセルを押さなかったことを示しているはずです。違いがない場合、それがキャンセルを押したことを示しているかどうかはわかりません。領収書に購入が含まれている場合、更新された領収書には異なるトランザクション ID (ただし、同じ「元の」トランザクション ID) が必要であるため、バイトが異なると思います。領収書に購入が含まれていない場合、それについてはわかりません。
更新、11/9/15; キャンセルを押したユーザーへの代理応答が変更されたように見えることに気付きました。ここで、didFailWithErrorが呼び出されます。ただし、ユーザーのキャンセルを検出するという問題は残ります。ユーザーが [キャンセル] を押したことと、本物のエラーをどのように区別できますか? 私は iOS8.4 と iOS9.2 (ベータ) でテストしています。この識別性の欠如をバグとして Apple に報告しました (バグ #23476210)。
更新、11/10/15; この問題は、iOS 9.0.2では発生しません。3つのシステムすべてで、同じアプリバイナリを使用して、ほぼ同じ時間間隔でこれを試しました(3つのシステムすべてで20分以内):(A)iOS9.2(13C5050d):問題が発生します(didFailWithErrorが呼び出されます) (B) iOS9.0.2、問題は発生しません (requestDidFinish が呼び出されます)、(C) iOS8.4.1、問題は発生します。3 つのシステム バージョンすべてで、これはシミュレータではなく、実際のハードウェアで実行されます。