2017-09-20 2 views
0

J'essaie de restaurer l'achat in-app (abonnement non renouvelable) au cas où un utilisateur installe l'application sur un nouveau téléphone ou le réinstalle sur son téléphone. Je veux obtenir la date d'achat originale pour un achat en application en utilisant la méthodeSwift3 - Obtenir la date de transaction lors de la restauration des achats In-App

func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) { 

     for transaction in queue.transactions{ 
      let t : SKPaymentTransaction = transaction 
      let prodID = t.payment.productIdentifier as String 
      print("transaction finished",prodID) 
      if(prodID == "com.netvariant.FamousFaces.FullAccess"){ 
       print(">>>>>>>>>>>>>", t.original?.transactionDate) 
       print(">>>>>>>>>>>>>", t.transactionDate) 
       defaults.set("Y", forKey: "adPurchase") 
       NotificationCenter.default.post(name: Notification.Name(rawValue: "removeAds"), object: nil) 
       print("working") 
      } 

     } 
    } 

Le problème est la date de la transaction en retour nul dans les deux cas. Qu'est-ce qui m'a manqué dans le code? et est-ce la meilleure façon de gérer les achats restaurés?

Je veux obtenir la date pour calculer si la période d'abonnement des utilisateurs (1 mois) est terminée ou non. La restauration est réussie mais comme je l'ai mentionné la date à zéro.

Merci.

Répondre

1

Vous pouvez utiliser SwiftyStoreKit pour vérifier et effectuer un achat InApp. Sous le code pour vérifier que l'achat InApp a expiré ou non. Pour l'utilisateur ce code, votre SwiftyStoreKit dans votre projet.

let appleValidator = AppleReceiptValidator(service: .production) 
SwiftyStoreKit.verifyReceipt(using: appleValidator, password: "Enter your inapp secret key") { result in 
    switch result { 
    case .success(let receipt): 
     // Verify the purchase of a Subscription 
     let purchaseResult = SwiftyStoreKit.verifySubscription(
      type: .autoRenewable, // or .nonRenewing (see below) 
      productId: "Enter your inapp product key", 
      inReceipt: receipt) 

     switch purchaseResult { 
     case .purchased(let expiryDate, _): 

      print("Product is valid until \(expiryDate)") 
     case .expired(let expiryDate, _): 

      print("Product is expired since \(expiryDate)") 
     case .notPurchased: 
      print("The user has never purchased this product") 
     } 

    case .error(let error): 
     print("Receipt verification failed: \(error)") 
    } 
} 
+0

Comment est-ce que j'ai pu installer cette bibliothèque en utilisant des Pods? –

+0

Oui, vous pouvez installer à l'aide de Pods. Vérifiez ce lien: https://cocoapods.org/?q=SwiftyStoreKit – Hiren

+0

Merci. mais il y a un problème, j'ai acheté l'IAP avec le compte sandbox et la réponse est toujours "non acheté". Ai-je la bibliothèque pour acheter le produit ou je peux le faire depuis storekit? –