Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
nenhall opened this issue Aug 4, 2021 · 6 comments

Comments

@nenhall
Copy link

nenhall commented Aug 4, 2021

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
@forkdog
Copy link

forkdog commented Aug 21, 2021

I also encountered this problem

@aectannctx
Copy link

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

@karalarbaris
Copy link

I have the same problem too

@frogg
Copy link
Contributor

frogg commented Sep 14, 2022

Yes, same problem here as well!

@sabiland
Copy link

sabiland commented Sep 14, 2022

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

@frogg
Copy link
Contributor

frogg commented Sep 14, 2022

I merged this PR which seems to have fixed it for me: #640

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants