sandbox test hasReceipt alway false? but in testfight is working well?

i use this code to init the purchase in my game start, but it seen no work in sandbox(xcode run), and it work
in testfight tester?
IEnumerator waiuntilInit()

{

InitializePurchasing();

yield return new WaitUntil(() => IsInitialized());

UnityEngine.Purchasing.Product monthPurchased = m_StoreController.products.WithID(SUSidpermonth);

UnityEngine.Purchasing.Product yearPurchased = m_StoreController.products.WithID(SUSidperyear);

if (monthPurchased != null)

{
if (monthPurchased.hasReceipt)

{

isPurchased = true;

}

}}

else

{

noPay();

}

any ideas?

The receipt validation will always come back as false on sandbox. This is perfectly normal for the Sandbox environment and the return of false shows that the validation is working.

So in Testfight is return true(if tester purchased)?also mean working

Does that mean that it’s (by design) not possible to purchase IAPs AND then deinstall app, reinstall, test Restore mechanism? Talking about iOS local builds / test flight.