I'm trying to implement something that sounds similar to your approach. In our case our target audience is children, hence we're not expecting the consumer to be the person paying, and that the parent might buy several copies, one for each child. Hence the normal model (of one thing per customer) doesn't work.
As licencing (per child) is actually dealt with by our servers, any payments (we're handling them as a consumables), have to be actioned on the app, then the token passed to the server to be verified, then the server updates the licenses, and the next time the child concerned interrogates their licences, they perceive the payment to have been actioned. The app then has to mark them as consumed, even though activation is not something it has direct control of. Instead it seems the only option is to manage a table of all of the purchaseTokens, and mark them internally as consumed, and so the app has to periodically ask if any of the tokens pending for the current (google) user, need consuming, and tick them off when they do. As an extension to this, we have to over complicate the payment process by checking ourselves if the child requesting (or the google user that's paying) should be blocked from proceeding, in case they have payments that might be pending from another child.
It would be so much simpler, if google were to allow the server to mark the consumable as used, but I've yet to find a solution. Lets hope APIv4 has it.