I wouldn’t be comfortable returning that the purchase was granted until it was actually processed successfully.
Purchasing the same developer product calls 'ProcessReceipt' one more time each time it is purchased
Yeah, this could definitely use more clear documentation about what guarantees are made.
It is possible for ProcessReceipt to the called for the exact same purchase over multiple servers, but if you have returned PurchaseGranted the chances of this happening would be insanely small (only would happen if the web was not able to receive the purchase granted request). I think recording purchases in this way is reasonable because worse case you just give someone a little more than they paid for.
YES! we need more Documentation!