Android - is field purchaseState in receipt Payload reliable?

When i get the receipt → Payload->json:
{\"orderId\":…,\"packageName\":…,\"productId\":…",\"purchaseTime\":…,\"purchaseState\":0,\"developerPayload\":…}

is purchaseState reliable? because when i test a success action it return 0, if you look at this document from google, the state 0 mean unspecified
https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState

Do we follow the number like google, or we use other meaning? right now, i want to know if the state is purchased or pending?

Another question is in developerPayload, there is a field “is_updated”, what is the meaning of this field? what for? do we have any document to explain these field

I ask all this questions is to regconize subscription state like “In Grace Period” or “On Hold”, if anyone happen to know how to implement in Unity IAP please let me know.

Are you returning Pending from ProcessPurchase? When you initialize IAP, all products left in Pending state will trigger ProcessPurchase, are you seeing this? Put Debug.Log statements in all your purchase methods, and provide the device logs as an attachment here. I am not familiar with the fields that you mention, you will want to inspect them during your testing to confirm. How To - Capturing Device Logs on Android

What i mention is when ProcessPurchase is a success, and callback with a receipt, code example below

public PurchaseProcessingResult ProcessPurchase (PurchaseEventArgs args)
        {
            if (args == null || args.purchasedProduct == null) return PurchaseProcessingResult.Pending;

            if (!IsInitialized ()) {
                // ... we are done here.
                return PurchaseProcessingResult.Pending;
            }
            bool isSandBox = false;
            bool isValidate = false;
            string token = "";
            var isSubscription = (args.purchasedProduct.definition.type == ProductType.Subscription);

            if (ConfigManager.Instance.GameConfigs.SECURE_IAP) {
                if (Application.platform == RuntimePlatform.Android ||
                                Application.platform == RuntimePlatform.IPhonePlayer ||
                                Application.platform == RuntimePlatform.OSXPlayer) {
                    try {
                        var result = validator.Validate (args.purchasedProduct.[B]receipt[/B]); <- What I Ask Is Here
                        foreach (IPurchaseReceipt productReceipt in result) {

                        }
                    } catch {
                       
                        return PurchaseProcessingResult.Complete;
                    }
                }
            } else {
  
            }
}

Did you see the bold receipt above?? it will based on this document (see Google Play section)

What i want to know is if the purchaseState in json data is the same value with Purchase.PurchaseState  |  Android Developers

Because, if it is the same value, when i test purchase success it must return 1, but right now, when i debug show log, the value is 0

Purchase state will be false at this point because the transaction hasn’t completed (you’re still in ProcessPurchase). You will only be able to check this flag during IAP initialization. See the Sample IAP project https://discussions.unity.com/t/700293