SwiftyStoreKit icon indicating copy to clipboard operation
SwiftyStoreKit copied to clipboard

In the callback of “restorePurchases”, verifying that the purchase always returns "notPurchased"

Open nenhall opened this issue 2 years ago • 6 comments

Bug Report

I also encountered the same problem, and the product type is: nonConsumable; it can be verified during normal purchase, and every time the purchase is verified through restorePurchases, it will return notPurchased; The same operation, verify that there is no problem with autoRenewable;

The following code is not a complete code, it is my approximate operation at the time

SwiftyStoreKit.restorePurchases(atomically: true, applicationUsername: "") { results in
            let successPurchases = results.restoredPurchases
            successPurchases.forEach { purchase in
                SwiftyStoreKit.verifyReceipt(using: AppleReceipt, forceRefresh: forceRefresh) { verifyReceiptResult in
                  switch verifyReceiptResult {
                case .success(let receiptInfo):
                    switch product.type {
                    case .nonConsumable:
                        let verifyPurchase = SwiftyStoreKit.verifyPurchase(productId: product.rawValue, inReceipt: receiptInfo)
                        switch verifyPurchase {
                        case .purchased(let item):
                            appendLog("✅","purchased:", product.rawValue)
                            
                        case .notPurchased:
                            appendLog("⚠️","notPurchased:", product.rawValue)
                        }
                    }
                }
            }
       }
 }

To Reproduce Steps to reproduce the behavior: Step 1 : Call “restorePurchases()” method Step 2 : In the callback of restorePurchases(completion: ...) method, -> Call verifyReceipt(using: ...) method, and return case .success( receiptInfo ), -> Call verifyPurchase(productId: ...) method verifying that the purchase Step 3 : When the product type is nonConsumable, always return "notPurchased"

Additional : In the callback of restorePurchases(completion: ...),print results.restoredPurchases, It is able to see the corresponding commodity purchase record。

Expected behavior Able to restore purchase successfully,Actually it is a successfully purchased product。

Platform Information

  • OS: macOS 10.15、macOS11.x,
  • Purchase Type: non-consumable
  • Environment: [sandbox, production]
  • SwiftyStoreKit version: 0.16.3

nenhall avatar Aug 04 '21 02:08 nenhall

I also encountered this problem

forkdog avatar Aug 21 '21 10:08 forkdog

Same problem, in-app non-consumable purchase verification always fails. I've checked it on 3 different devices

Platform Information

OS: iOS 15.5 Purchase Type: non-consumable Environment: [sandbox, production] SwiftyStoreKit version: 0.16.1

aectannctx avatar Jun 30 '22 08:06 aectannctx

I have the same problem too

karalarbaris avatar Jun 30 '22 08:06 karalarbaris

Yes, same problem here as well!

frogg avatar Sep 14 '22 16:09 frogg

FYI, because of the issues with SwiftyStoreKit I refactored today one of my apps to StoreKit 2 - with the help of Mercato.

sabiland avatar Sep 14 '22 17:09 sabiland

I merged this PR which seems to have fixed it for me: https://github.com/bizz84/SwiftyStoreKit/pull/640

frogg avatar Sep 14 '22 17:09 frogg