2017-02-03 39 views
2

私は顧客のサブスクリプションがすでに完了したことを検出したいので、私が提供していた施設を削除することができます。サブスクリプションの有効期限の計算の検出には、私は現在のiPhoneの日付と時間と私のアプリの助けを取ることができないのでアップルのサブスクリプションの有効期限を検出する

public void CheckIfSubscriptionIsActive(){ 
    ConfigurationBuilder builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); 
    // Get a reference to IAppleConfiguration during IAP initialization. 
    IAppleConfiguration appleConfig = builder.Configure<IAppleConfiguration>(); 
    if (!string.IsNullOrEmpty (appleConfig.appReceipt)) { 
     Debug.Log (appleConfig.appReceipt); 
//   InstantiateDebugText (DebugInfoPanel, "APP Receipt Base64 " + appleConfig.appReceipt); 
     var receiptData = System.Convert.FromBase64String (appleConfig.appReceipt); 
//   InstantiateDebugText (DebugInfoPanel, "receipt Data "+ receiptData); 
     AppleReceipt receipt = new AppleValidator (AppleTangle.Data()).Validate (receiptData); 
     InstantiateDebugText (DebugInfoPanel, "Apple receipt " + receipt); 
     foreach (AppleInAppPurchaseReceipt productReceipt in receipt.inAppPurchaseReceipts) { 
      Debug.Log ("PRODUCTID: " + productReceipt.productID); 
      Debug.Log ("PURCHASE DATE: " + productReceipt.purchaseDate); 
      Debug.Log ("EXPIRATION DATE: " + productReceipt.subscriptionExpirationDate); 
      Debug.Log ("CANCELDATE DATE: " + productReceipt.cancellationDate); 
      InstantiateDebugText (DebugInfoPanel, "PRODUCTID: " + productReceipt.productID); 
      InstantiateDebugText (DebugInfoPanel, "PURCHASE DATE: " + productReceipt.purchaseDate); 
      InstantiateDebugText (DebugInfoPanel, "EXPIRATION DATE: " + productReceipt.subscriptionExpirationDate); 
      InstantiateDebugText (DebugInfoPanel, "CANCELDATE DATE: " + productReceipt.cancellationDate); 
     } 
    } 

:私はAppleのサブスクリプションから細部のようなものを以下しているアプリケーションの各起動時に

、カスタムサーバー関連のものを使用していなかったので、私はAppleに完全に依存しています。

私は、自動更新可能な定期購読を使用していたため、購読期間に関する情報があります。

今、あなたの考えを共有してください、どのようにサブスクリプションが有効期限が切れているのを検出するのですか?

答えて

3

最初にAppstoreで領収書の金額を計算する必要があります。次からなっている 使用レシートデータ:

var receiptData = System.Convert.FromBase64String (appleConfig.appReceipt); 

あなたはしかし、状況から受信した状態で中継していないhere

からアップルのサーバとの領収書を検証する方法を確認することができます。自動返信受信の場合、受信が有効であっても期限切れであっても成功を返します。 これに応じて、領収書が発行されます。すべての領収書をループし、製品id =必須商品IDの「expires_date」フィールドを確認します。 「expires_date」にはepoch time.が含まれます。この日付が現在の日付よりも大きいかどうかを確認し、(productid = yourproducid & & expireDate> currentEpocDate)の領収書が見つかった場合、サブスクリプションは有効です。そうでない場合は期限切れになっているか、停止しているか、

{ 
    "receipt-data": "receiptData (string))" 
} 

をJSONを作成し、Appleのサーバにそれを投稿 - (https://sandbox.itunes.apple.com/verifyReceipt)。これに応じて、有効化ステータスの領収書を受け取ります。

注:テスト環境で

、URLとして https://sandbox.itunes.apple.com/verifyReceiptを使用しています。 プロダクションでは、URLとしてhttps://buy.itunes.apple.com/verifyReceiptを使用してください。

+0

お返事ありがとうございます。私は他の疑問を聞かせてください、1)サブスクリプションの有効期限をチェックするために、我々はカスタムサーバーに問い合わせる必要がありますか? 2)サブスクリプション期限情報は、Appleから直接取得できますか?カスタムサーバーに依存するのではなく、 – Siddharth

+0

アップルサーバーでサブスクリプションステータスを直接確認することができます。カスタムサーバーを使用していても、カスタムサーバーは受信確認のためにアップルサーバーに要求を送信する必要があります。私が追加したように:あなたは検証のためのURLを使うことができ、https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.htmlを一度チェックしてください。上記の – Darshana

+0

は、契約目的の有効期限の有効期限と現在の日付の比較を指定しましたが、これはどの目的のためですか?アップルがあなたの最後のメッセージごとにサブスクリプションステータスについて私に返信している場合。このことは私を混乱させる。カスタムサーバーを使用していないので、現在のiPhoneの日付を利用してサブスクリプションの検証を行うことができないためです。 – Siddharth

関連する問題