IAP receipt verification error 21002

Steps:

  1. Configure iOS App IAP
  2. Run the app and purchasing
  3. finished with sandbox account
  4. Get the receipt data from Bundle.main.appStoreReceiptURL
  5. Verify the receipt

Result: receipt data error 21002

Analysis: the base64Encoding should be ok. It seems that the receipt data itself is wrong. How to find the root cause? Thanks!

Replies

The base64String is: MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwGggCSABIIBNDGCATAwDwIBAAIBAQQHDAVYY29kZTALAgEBAgEBBAMCAQAwKQIBAgIBAQQhDB9jb20uaWFjLlRXU1NIQXBwLklBQ0dhbWVCb29zdGVyMAsCAQMCAQEEAwwBMTAQAgEEAgEBBAhiyu9fBgAAADAcAgEFAgEBBBSN0wJ40KCypW9Hr6W6lMUldcvXODAKAgEIAgEBBAIWADAeAgEMAgEBBBYWFDIwMjQtMDItMjdUMDI6MzU6MTZaMFwCARECAQEEVDFSMAwCAgalAgEBBAMCAQEwEwICBqYCAQEECgwIY2FyZDAwMDMwDAICBqcCAQEEAwwBNjAfAgIGqAIBAQQWFhQyMDI0LTAyLTI3VDAyOjM1OjE2WjAeAgEVAgEBBBYWFDQwMDEtMDEtMDFUMDA6MDA6MDBaAAAAAAAAoIIDeDCCA3QwggJcoAMCAQICAQEwDQYJKoZIhvcNAQELBQAwXzERMA8GA1UEAwwIU3RvcmVLaXQxETAPBgNVBAoMCFN0b3JlS2l0MREwDwYDVQQLDAhTdG9yZUtpdDELMAkGA1UEBhMCVVMxFzAVBgkqhkiG9w0BCQEWCFN0b3JlS2l0MB4XDTIwMDQwMTE3NTIzNVoXDTQwMDMyNzE3NTIzNVowXzERMA8GA1UEAwwIU3RvcmVLaXQxETAPBgNVBAoMCFN0b3JlS2l0MREwDwYDVQQLDAhTdG9yZUtpdDELMAkGA1UEBhMCVVMxFzAVBgkqhkiG9w0BCQEWCFN0b3JlS2l0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA23+QPCxzD9uXJkuTuwr4oSE+yGHZJMheH3U+2pPbMRqRgLm/5QzLPLsORGIm+gQptknnb+Ab5g1ozSVuw3YI9UoLrnp0PMSpC7PPYg/7tLz324ReKOtHDfHti6z1n7AJOKNue8smUAoa4YnRcnYLOUzLT27As1+3lbq5qF1KdKvvb0GlfgmNuj09zXBX2O3v1dp3yJMEHO8JiHhlzoHyjXLnBxpuJhL3MrENuziQawbE/A3llVDNkci6JfRYyYzhcdtKRfMtGZYDVoGmRO51d1tTz3isXbo+X1ArXCmM3cLXKhffIrTX5Hior6htp8HaaC1mzM8pC1As48L75l8SwQIDAQABozswOTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIChDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzANBgkqhkiG9w0BAQsFAAOCAQEAsgDgPPHo6WK9wNYdQJ5XuTiQd3ZS0qhLcG64Z5n7s4pVn+8dKLhfKtFznzVHN7tG03YQ8vBp7M1imXH5YIqESDjEvYtnJbmrbDNlrdjCmnhID+nMwScNxs9kPG2AWTOMyjYGKhEbjUnOCP9mwEcoS+tawSsJViylqgkDezIx3OiFeEjOwMUSEWoPDK4vBcpvemR/ICx15kyxEtP94x9eDX24WNegfOR/Y6uXmivDKtjQsuHVWg05G29nKKkSg9aHeG2ZvV6zCuCYzvbqw45taeu3QIE9hz1wUdHEXY2l3H9qWBreYHY3Uuz/rBldDBUvig/1icjXKx0e7CuRBac9TzGCAY8wggGLAgEBMGQwXzERMA8GA1UEAwwIU3RvcmVLaXQxETAPBgNVBAoMCFN0b3JlS2l0MREwDwYDVQQLDAhTdG9yZUtpdDELMAkGA1UEBhMCVVMxFzAVBgkqhkiG9w0BCQEWCFN0b3JlS2l0AgEBMA0GCWCGSAFlAwQCAQUAMA0GCSqGSIb3DQEBCwUABIIBADziNLhtQpP79Xgj7h7fHcqA0m6jWbXMOCYGrP85hg/w8sKVfd+pxCAR+c1GCoruo3ogo/tDzqbZSOovnPYgJbSCo1HFL+ll2TTukvwL52AzYy9+CSXnL7zdSaBmYJBmXxS2bOItGSEqEDvzMlh/m1Rv+iZmDF+tS+EWd8HjQlODI99aMvEsZuEpX7rv9MYMltjbg4Kwq/wiEs1NtHO/KPaYt+ptjTgN+si8YyfFYQ5pGDrGzH/+qsXLl+lm/8OKXwLIwyz3L1xYACqb6dX3fjg6lCl6lwk+St1WwXAaCifbNOQUKm5lTt9e3itckY5IDsX1bh6l/QAknHVRZsY4dD4AAAAAAAA=

21002

The data in the receipt-data property is malformed or the service experienced a temporary issue. Try again.

https://developer.apple.com/documentation/appstorereceipts/status

Could you share more details?

Alternatively, if you are starting fresh with a new implementation, note that the verifyReceipt endpoint is deprecated. To validate in-app purchases on your server without using receipts, call the App Store Server API to get Apple-signed transaction and subscription information for your customers, or verify the AppTransaction and Transaction signed data that your app obtains using StoreKit 2. You can also get the same signed transaction and subscription information from the App Store Server Notifications V2.

  • Thans for your reply. We will try the App Store Server API.

Add a Comment

Can someone help to see why the receipt data above get 21002(malformed)? We have no idea how to fix the issue. Thanks in advance!