We get some fatal errors because of Spark.getPlayer() returning null in BuyVirtualGoodResponse (though only in a very small percent of the responses).
I think they're only in the responses to iOS or Google Play purchase requests.
Can you let us know the gameId of the game in question and we'll take a look at this for you. Is it possible that some of the players have somehow disconnected before the response has been sent ? We'll know more when we see the logs and the Cloud Code in your BuyVirtualGoodResponse.
Sure, I'll add the gameId in a support request.
I think some of the players may just normally disconnect between the request and response. I would think the response script should still execute normally once the request went through.
I guess the time between request-response is longer for in-app purchase requests due to receipt validation, leaving more time for the player to disconnect in between.