5

アプリ内購入を検証するための新しい VerificationController の実装を検討しています: http://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidation/_index.html

また、トランザクションを検証する方法の例がどこかにあるのではないかと思い- (BOOL)verifyPurchase:(SKPaymentTransaction *)transaction;ます。サーバーからのデータを受信したときに購入を検証するには、それだけでは不十分であり、内部で実装する必要があるようです。

もう 1 つの質問は、KNOWN_TRANSACTIONS_KEY とは何か、またそれをどのように入力するかについての手がかりを誰かが持っている場合、それは購入の製品 ID だけですか?

4

4 に答える 4

5

ここで完全な実装を見つけることができます: https://github.com/evands/iap_validation

于 2012-07-25T14:41:25.683 に答える
5

ファイル「VerificationController.m」で、次の関数を確認します。

- (void)saveTransactionId:(NSString *)transactionId

KNOWN_TRANSACTIONS_KEY は NSUserDefaults に書き込まれるキーです。だから私たちはそれに触れる必要はありません。

iTunes Connectにログイン>アプリの管理> (アプリをクリック) > アプリ内購入の管理>共有シークレットの表示または生成(ページの左下)のリンクをクリックすると、次のように表示されます。

共有シークレットは、アプリ内購入のレシートを取得するために当社のサーバーを呼び出すときに使用する固有のコードです。

[生成] をクリックするだけです。

于 2012-07-24T02:34:04.840 に答える
1

トランザクションが完了状態のいずれかに変化したときに、トランザクションで検証を実行する必要があります。

SKPaymentTransactionStatePurchased 
SKPaymentTransactionStateRestored

関数を呼び出します。

[[VerificationController sharedInstance] verifyPurchase:transaction];

おっしゃるとおり、戻り値を見るだけでは不十分です。関数は非同期です。次のコードを VerificationController.m に追加する必要があります。

#warning Validation succeeded. Unlock content here.

VerificationController.m には、エラーに対処する必要がある #warning を含む行が他にもいくつかあります。

base64 に関しては、次のライブラリを使用して確認することをお勧めします。

http://www.imthi.com/blog/programming/iphone-sdk-base64-encode-decode.php

となると

 KNOWN_TRANSACTIONS_KEY 

ITC_CONTENT_PROVIDER_SHARED_SECRET

私も、それらが何のために、なぜ、いつ必要なのかを知りたいです。

于 2012-07-23T16:11:15.030 に答える