bizz84 / SwiftyStoreKit

Lightweight In App Purchases Swift framework for iOS 8.0+, tvOS 9.0+ and macOS 10.10+ ⛺
MIT License
6.58k stars 795 forks source link

SwiftyStoreKit.ReceiptStatus.malformedOrMissingData #643

Open jbarros35 opened 3 years ago

jbarros35 commented 3 years ago

Question

Please explain your question in detail here.

I can't undestand whats happening. I'm on sandbox, I can't validate the receipt of a renewable subscription.

▿ 1 element ▿ 0 : 2 elements


SwiftyStoreKit.purchaseProduct(productId, completion: { result in
            switch result {
                case .success(let purchase):
                    print("Purchase Success: \(purchase.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)
                    }
                }
        })

        let appleValidator = AppleReceiptValidator(service: .sandbox, sharedSecret: "mysecret")
        SwiftyStoreKit.verifyReceipt(using: appleValidator) { result in
            switch result {
            case .success(let receipt):
                // Verify the purchase of Consumable or NonConsumable
                let purchaseResult = SwiftyStoreKit.verifySubscription(
                    ofType: .autoRenewable,
                                productId: productId,
                                inReceipt: receipt)

                switch purchaseResult {
                    case .purchased(let expiryDate, let items):
                        print("\(productId) is valid until \(expiryDate)\n\(items)\n")
                    case .expired(let expiryDate, let items):
                        print("\(productId) is expired since \(expiryDate)\n\(items)\n")
                    case .notPurchased:
                        print("The user has never purchased \(productId)")
                }
            case .error(let error):
                print("Receipt verification failed: \(error)")
            }
        }
jbarros35 commented 3 years ago

This is the result of fetch receipt

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

I'm trying to directly post this to apple, doesnt works at all

peterng014 commented 2 years ago

I got the same issue here? anybody has idea please?

ronnie-codes commented 2 years ago

Go to your Xcode Scheme, select Run and then Options and change StoreKit Configuration to None. This was the fix for me anyway. This storekit configuration is a new local testing feature as of Xcode 12.

MostafaAZ1994 commented 1 year ago

Anyone solve this issue, Please??

thanksloving commented 1 year ago

I got the same issue.

boyXiong commented 1 year ago

I got the same issue.