question

secretplacestudio avatar image
secretplacestudio asked

iOS Reciept Validation Failed - Request Timeout

Hello,

We are trying to validate iOS receipt, but ValidateIOSReceipt function always returns error.

Request Type or Compress API Data settings not helping.

Project Id: 4140

Environment:

  • Unity3D 2019.1.1
  • Latest Playfab SDK
  • iOS 10.3.3 (Sandbox)

What we checked out:

  1. Check Apple's add-on settings (OK)
  2. Check ITC product id and Playfab product id (OK)
  3. Check receipt with https://sandbox.itunes.apple.com/verifyReceipt (SUCCESS)
  4. Check request with Postman and ValidateiOSReceipt (SUCCESS)
  5. Check other playfab functions (SUCCESS)
  6. Android receipt validation (SUCCESS)

Request:

{
    "CurrencyCode": "RUB",
    "PurchasePrice": 149,
    "ReceiptData": "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"
}

Response:

Purchase Failed
UnityEngine.Logger:Log(LogType, Object)
SP.Services.Purchases.<>c__DisplayClass50_0:<Purchase>b__1(SFError)
SP.Services.Purchases.<>c__DisplayClass72_0:<OnTransactionUpdated>b__1(PlayFabError)
PlayFab.Internal.<Post>d__12:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 48)
{
  "SFErrorCode": -1,
  "CustomErrorCode": 1123,
  "ErrorMessage": "/Client/ValidateIOSReceipt: Request timeout"
}

Response Glossary:

  • SFErrorCode = Game Internal Custom Code
  • Error Message = PlayfabError.GenerateErrorReport
  • CustomErrorCode = PlayfabError.Error (parsed to int)

How it works?

public void OnTransactionUpdated(ISN_SKPaymentTransaction transaction)
{
    //Transactions have been updated.
    //Let's act accordinaly
    SFDebug.Log("transaction JSON: " + JsonUtility.ToJson(transaction));
    SFDebug.Log("OnTransactionComplete: " + transaction.ProductIdentifier);
    SFDebug.Log("OnTransactionComplete: state: " + transaction.State);
    SFDebug.Log(transaction.Product.Dump());

    switch (transaction.State)
    {
        case ISN_SKPaymentTransactionState.Purchasing:
            //No actions is reuiredhere, we probably don't even have a ProductIdentifier
            //but we can use this callback to show preloader for example, 
            //since we know that user is currently
            //working on this transaction
            break;

        case ISN_SKPaymentTransactionState.Purchased:
        case ISN_SKPaymentTransactionState.Restored:
            
            //Our product has been succsesly purchased or restored
            //So we need to provide content to our user depends on productIdentifier
            
            SFDebug.Log("Validation of IOS Reciept");
            var receipt = ISN_SKPaymentQueue.AppStoreReceipt;
            var request = new ValidateIOSReceiptRequest
            {
                CurrencyCode = transaction.Product.PriceLocale.CurrencyCode,
                PurchasePrice = (int) transaction.Product.Price,
                ReceiptData = receipt.AsBase64String
            };

            SFDebug.Log(request.Dump());
            
            PlayFabClientAPI.ValidateIOSReceipt(request, result =>
                {
                    SFDebug.Log("Validation Completed");
                    onPurchaseCompleted?.Invoke();
                },
                error =>
                {
                    SFDebug.Log("Validation Failed");
                    onPurchaseFailed?.Invoke(new SFError((int) error.Error, error.GenerateErrorReport()));
                });

            ISN_SKPaymentQueue.FinishTransaction(transaction);
            break;
        case ISN_SKPaymentTransactionState.Deferred:
            //iOS 8 introduces Ask to Buy, which lets parents approve any 
            //purchases initiated by children
            //You should update your UI to reflect this deferred state, 
            //and expect another Transaction Complete to be called again 
            //with a new transaction state 
            //reflecting the parent’s decision or after the transaction times out. 
            //Avoid blocking your UI or gameplay while waiting 
            //for the transaction to be updated.
            break;
        case ISN_SKPaymentTransactionState.Failed:
            //Our purchase flow is failed.
            //We can unlock intrefase and repor user that the purchase is failed. 
            SFDebug.Log("Transaction failed, code: " + transaction.Error.Code);
            SFDebug.Log("Transaction failed, description: " + transaction.Error.Message);
            onPurchaseFailed?.Invoke(new SFError(transaction.Error.Code, transaction.Error.Message));
            //at this point we just need to finish the transaction
            ISN_SKPaymentQueue.FinishTransaction(transaction);
            break;
    }

    if (transaction.State == ISN_SKPaymentTransactionState.Failed)
    {
        SFDebug.Log("Error code: " + transaction.Error.Code + "\n" + "Error description:" +
                  transaction.Error.Message);
    }
    else
    {
        SFDebug.Log("product " + transaction.ProductIdentifier + " state: " + transaction.State.ToString());
    }
}
apisunity3dIn-Game EconomyPartner Add-onsPlayer Inventory
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Marcus Nixon avatar image
Marcus Nixon answered

If your ValidateIOSReceipt API call works with your receipt through Postman, then the issue may not be on the PlayFab side. After confirming in Postman, does ValidateIOSReceipt work when making the call from Unity? If not, can you provide a trace log with Fiddler or similar tool so that we can analyze the request and response?

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

secretplacestudio avatar image
secretplacestudio answered

@Marcus Nixon I found only this... Looks like facebook is analyzing everything

{     "format":"json",   "custom_events":"[{\"fb_iap_product_type\":\"inapp\",\"fb_transaction_id\":\"1000000527310257\",\"_ui\":\"no_ui\",\"_logTime\":1557781427,\"fb_transaction_date\":\"2019-05-13 23:52:06+0300\",\"fb_num_items\":1,\"_valueToSum\":149,\"_implicitlyLogged\":\"1\",\"receipt_id\":\"receipt_1\",\"_eventName\":\"fb_mobile_purchase\",\"fb_currency\":\"RUB\",\"fb_description\":\"Small Ironium Pack\",\"fb_content_id\":\"currency.hard.1\",\"fb_content_title\":\"Small Ironium Pack\"}]",   "application_tracking_enabled":"1",   "extinfo":"[\"i2\",\"studio.secretplace.ttf\",\"72\",\"0.6.1\",\"12.1.4\",\"iPad5,3\",\"en_RU\",\"GMT+3\",\"NoCarrier\",1024,768,\"2.00\",3,60,4,\"Europe\\\/Moscow\"]",   "event":"CUSTOM_APP_EVENTS",   "anon_id":"XZ75D4EB97-CF5C-4515-ACF4-148C1B7A746D",   "advertiser_tracking_enabled":"1",   "include_headers":"false",   "receipt_data":"receipt_1::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\/Qrk8H9Pm\/KwfU8qY9SGsAlCnYO3v6Z\/v\/Ca\/VbXqxzUUkIVonMQ5DMjoEC0KCXtlyxoWlph5AQaCYmObgdEHOwCl3Fc9DfdjvYLdmIHuPsB8\/ijtDT+iZVge\/iA0kjAgMBAAGjggHXMIIB0zA\/BggrBgEFBQcBAQQzMDEwLwYIKwYBBQUHMAGGI2h0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3NwMDMtd3dkcjA0MB0GA1UdDgQWBBSRpJz8xHa3n6CK9E31jzZd7SsEhTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MIIBHgYDVR0gBIIBFTCCAREwggENBgoqhkiG92NkBQYBMIH+MIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LmFwcGxlLmNvbS9jZXJ0aWZpY2F0ZWF1dGhvcml0eS8wDgYDVR0PAQH\/BAQDAgeAMBAGCiqGSIb3Y2QGCwEEAgUAMA0GCSqGSIb3DQEBBQUAA4IBAQANphvTLj3jWysHbkKWbNPojEMwgl\/gXNGNvr0PvRr8JZLbjIXDgFnf4+LXLgUUrA3btrj+\/DUufMutF2uOfx\/kd7mxZ5W0E16mGYZ2+FogledjjA9z\/Ojtxh+umfhlSFyg4Cg6wBA3LbmgBDkfc7nIBf3y3n8aKipuKwH8oCBc2et9J6Yz+PWY4L5E27FMZ\/xuCk\/J4gao0pfzp45rUaJahHVl0RYEYuPBX\/UIqc9o2ZIAycGMs\/iNAGS6WGDAfK+PdcppuVsq1h1obphC9UynNxmbzDscehlD86Ntv0hgBgw2kivs3hi1EdotI9CO\/KBpnBcbnoB7OUdFMGEvxxOoMIIEIjCCAwqgAwIBAgIIAd68xDltoBAwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTEzMDIwNzIxNDg0N1oXDTIzMDIwNzIxNDg0N1owgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKOFSmy1aqyCQ5SOmM7uxfuH8mkbw0U3rOfGOAYXdkXqUHI7Y5\/lAtFVZYcC1+xG7BSoU+L\/DehBqhV8mvexj\/avoVEkkVCBmsqtsqMu2WY2hSFT2Miuy\/axiV4AOsAX2XBWfODoWVN2rtCbauZ81RZJ\/GXNG8V25nNYB2NqSHgW44j9grFU57Jdhav06DwY3Sk9UacbVgnJ0zTlX5ElgMhrgWDcHld0WNUEi6Ky3klIXh6MSdxmilsKP8Z35wugJZS3dCkTm59c3hTO\/AO0iMpuUhXf1qarunFjVg0uat80YpyejDi+l5wGphZxWy8P3laLxiX27Pmd3vG2P+kmWrAgMBAAGjgaYwgaMwHQYDVR0OBBYEFIgnFwmpthhgi+zruvZHWcVSVKO3MA8GA1UdEwEB\/wQFMAMBAf8wHwYDVR0jBBgwFoAUK9BpR5R2Cf70a40uQKb3R01\/CF4wLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2NybC5hcHBsZS5jb20vcm9vdC5jcmwwDgYDVR0PAQH\/BAQDAgGGMBAGCiqGSIb3Y2QGAgEEAgUAMA0GCSqGSIb3DQEBBQUAA4IBAQBPz+9Zviz1smwvj+4ThzLoBTWobot9yWkMudkXvHcs1Gfi\/ZptOllc34MBvbKuKmFysa\/Nw0Uwj6ODDc4dR7Txk4qjdJukw5hyhzs+r0ULklS5MruQGFNrCk4QttkdUGwhgAqJTleMa1s8Pab93vcNIx0LSiaHP7qRkkykGRIZbVf1eliHe2iK5IaMSuviSRSqpd1VAKmuu0swruGgsbwpgOYJd+W+NKIByn\/c4grmO7i77LpilfMFY0GCzQ87HUyVpNur+cmV6U\/kTecmmYHpvPm0KdIBembhLoz2IYrF+Hjhga6\/05Cdqa3zr\/04GpZnMBxRpVzscYqCtGwPDBUfMIIEuzCCA6OgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQXBwbGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNVBAMTDUFwcGxlIFJvb3QgQ0EwHhcNMDYwNDI1MjE0MDM2WhcNMzUwMjA5MjE0MDM2WjBiMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQXBwbGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNVBAMTDUFwcGxlIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkkakJH5HbHkdQ6wXtXnmELes2oldMVeyLGYne+Uts9QerIjAC6Bg++FAJ039BqJj50cpmnCRrEdCju+QbKsMflZ56DKRHi1vUFjczy8QPTc4UadHJGXL1XQ7Vf1+b8iUDulWPTV0N8WQ1IxVLFVkds5T39pyez1C6wVhQZ48ItCD3y6wsIG9wtj8BMIy3Q88PnT3zK0koGsj+zrW5DtleHNbLPbU6rfQPDgCSC7EhFi501TwN22IWq6NxkkdTVcGvL0Gz+PvjcM3mo0xFfh9Ma1CWQYnEdGILEINBhzOKgbEwWOxaBDKMaLOPHd5lc\/9nXmW8Sdh2nzMUZaF3lMktAgMBAAGjggF6MIIBdjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH\/BAUwAwEB\/zAdBgNVHQ4EFgQUK9BpR5R2Cf70a40uQKb3R01\/CF4wHwYDVR0jBBgwFoAUK9BpR5R2Cf70a40uQKb3R01\/CF4wggERBgNVHSAEggEIMIIBBDCCAQAGCSqGSIb3Y2QFATCB8jAqBggrBgEFBQcCARYeaHR0cHM6Ly93d3cuYXBwbGUuY29tL2FwcGxlY2EvMIHDBggrBgEFBQcCAjCBthqBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMA0GCSqGSIb3DQEBBQUAA4IBAQBcNplMLXi37Yyb3PN3m\/J20ncwT8EfhYOFG5k9RzfyqZtAjizUsZAS2L70c5vu0mQPy3lPNNiiPvl4\/2vIB+x9OYOLUyDTOMSxv5pPCmv\/K\/xZpwUJfBdAVhEedNO3iyM7R6PVbyTi69G3cN8PReEnyvFteO3ntRcXqNx+IjXKJdXZD9Zr1KIkIxH3oayPc4FgxhtbCS+SsvhESPBgOJ4V9T0mZyCKM2r3DYLP3uujL\/lTaltkwGMzd\/c6ByxW69oPIQ7aunMZT7XZNn\/Bh1XZp5m5MkL72NVxnn6hUrcbvZNCJBIqxw8dtk2cXmPIS4AXUKqK1drk\/NAJBzewdXUhMYIByzCCAccCAQEwgaMwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkCCA7rV4fnngmNMAkGBSsOAwIaBQAwDQYJKoZIhvcNAQEBBQAEggEAab2H\/LnLW9S5SbTQNu5yBX4kjBibfWE7eGHVyFAsVLdcxED3aleGGwZOSmcP37vM9qa0NJPN+YQ0VRO+NlabFdhcMqbuVMBABmCYbZWicWvBj7Zc5aF0nVKXINwytY9xoriKMHW5JCWkKO2hGd0Rtv4HVi\/wziGDnsI\/JUNPpNQrtHYGlNdoPFQGl8VfOqKzQCoL8nKQRMoG8PWSIeinh9nv7kFpFvoKj8C9dSgYCPbIwADq9+X65LIlSvOFXx9T97ziobVB4jEZWFbwmf22gxn9Zzp8tPN\/Y+zBUyaJoNL9d+xT3qyU+EQ7pbpE6M9EirXpORxz9XGdlKQnmHGspA==;;;",   "sdk":"ios",   "url_schemes":"[\"fb182519885629634\"]"}
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

secretplacestudio avatar image
secretplacestudio answered

To connect iPad to Fiddler i must setup http proxy on iPad, therefore all my requests will go through PC, and soooo. I've got success response from playfab :/ But when im disabling proxy through PC everything goes back and nothing works again...

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

xinliu avatar image
xinliu answered

Hi, I'm having the same issue. The validation works on unity editor but not on device under Unity 2019. However on Unity 2018 it works well both in editor and on device. Have you tried using Unity 2018? If you can make it work on Unity 2018 as well, it might be a compatibility problem between Unity 2019 and Playfab. @secretplacestudio

4 comments
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

secretplacestudio avatar image secretplacestudio commented ·

I'll try this. Also as i said before i have no idea why the same request works from: iOS with unity 2019 with http proxy through fiddler setup...

0 Likes 0 ·
Marcus Nixon avatar image Marcus Nixon secretplacestudio commented ·

We are currently investigating this issue and trying to determine where the problem lies between PlayFab, Unity 2019 and iOS.

0 Likes 0 ·
xinliu avatar image xinliu Marcus Nixon commented ·

So is there any updates on this?

0 Likes 0 ·
Show more comments
xinliu avatar image
xinliu answered

Haven't tested it, but Unity 2019.1.4 has just been released recently, and the problem may be solved because in the release notes it says "iOS: Fixed larger than 2k payloads not sent by UnityWebRequest when HTTP/2" (link: https://unity3d.com/unity/whats-new/2019.1.4). Will test tomorrow.

2 comments
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Marcus Nixon avatar image Marcus Nixon commented ·

@XinLiu Please post your results so that others can be helped if they run into this issue.

0 Likes 0 ·
xinliu avatar image xinliu Marcus Nixon commented ·

Now verified: the Unity 2019.1.4 fixed this issue. At least it will return the expected result when I use a used receipt, rather than returning a "service unavailable".

0 Likes 0 ·
secretplacestudio avatar image
secretplacestudio answered

Verified: the Unity 2019.1.4, 2019.1.5 fixed this issue.

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.