title: Check If a user has already purchased a product in SwiftyStoreKit
body: <p>I implemented in-app Purchases and I am using SwiftyStoreKit.
  Everything works fine but want to check if the user has already purchased the product. I want when the user goes in the inappropriate page to show a button. If its bought then to shows "Open" if not "theprice". I can't quite understand how I can achieve that.</p>
  
  <p>The viewDidLoad() :</p>
  
  <pre><code>
  let inAppPurchaseId = "iD"
      let sharedSecret = "shared secret"
  
  override func viewDidLoad() {
          super.viewDidLoad()
  
          SwiftyStoreKit.retrieveProductsInfo([inAppPurchaseId]) { result in
              if let product = result.retrievedProducts.first {
                  let priceString = product.localizedPrice!
                  print("Product: \(product.localizedDescription), price: \(priceString)")
                  self.buyBtn.setTitle("Buy guides for "+"\(priceString)", for: .normal)
  
  
                  self.verifyPurchase(with: self.inAppPurchaseId, sharedSecret: self.sharedSecret)
  
              }
              else if let invalidProductId = result.invalidProductIDs.first {
                  print("Invalid product identifier: \(invalidProductId)")
              }
              else {
                  print("Error: \(String(describing: result.error))")
              }
          }
  
      }
  </code></pre>
  
  <p>Here is the receipt verification and thee purchaseProduct function.</p>
  
  <pre><code>func purchaseProduct(with id: String) {
          SwiftyStoreKit.retrieveProductsInfo([id]) { result in
              if let product = result.retrievedProducts.first {
                  SwiftyStoreKit.purchaseProduct(product, quantity: 1, atomically: true) { result in
                      switch result {
                      case .success(let product):
                          // fetch content from your server, then:
                          if product.needsFinishTransaction {
                              SwiftyStoreKit.finishTransaction(product.transaction)
                          }
                          self.buyBtn.setTitle("Open", for: .normal)
                          print("Purchase Success: \(product.productId)")
                      case .error(let error):
                          switch error.code {
                          case .unknown: print("Unknown error. Please contact support")
                          case .clientInvalid: print("Not allowed to make the payment")
                          case .paymentCancelled: break
                          case .paymentInvalid: print("The purchase identifier was invalid")
                          case .paymentNotAllowed: print("The device is not allowed to make the payment")
                          case .storeProductNotAvailable: print("The product is not available in the current storefront")
                          case .cloudServicePermissionDenied: print("Access to cloud service information is not allowed")
                          case .cloudServiceNetworkConnectionFailed: print("Could not connect to the network")
                          case .cloudServiceRevoked: print("User has revoked permission to use this cloud service")
                          default: print((error as NSError).localizedDescription)
                          }
                      }
                  }
              }
          }
      }
  
      func verifyPurchase(with id: String, sharedSecret: String) {
          let appleValidator = AppleReceiptValidator(service: .production, sharedSecret: sharedSecret)
          SwiftyStoreKit.verifyReceipt(using: appleValidator) { result in
              switch result {
              case .success(let receipt):
                  let productId = id
                  // Verify the purchase of Consumable or NonConsumable
                  let purchaseResult = SwiftyStoreKit.verifyPurchase(
                      productId: productId,
                      inReceipt: receipt)
  
                  switch purchaseResult {
                  case .purchased(let receiptItem):
                      print("\(productId) is purchased: \(receiptItem)")
                  case .notPurchased:
                      self.purchaseProduct(with: self.inAppPurchaseId)
                      print("The user has never purchased \(productId)")
                  }
              case .error(let error):
                  print("Receipt verification failed: \(error)")
              }
          }
      }
  </code></pre>
  
  <p>I want check when the view loads what title the button should have and if the product has been bought.</p>