Race condition: Purchase fires before billing acknowledgment
logPurchase() is called in the buy-button handler, before the store confirms the transaction. Cancelled and declined purchases are reported to Meta as real revenue.
Fix: Gate the Purchase event on the billing ack callback; reconcile against the store's transaction queue on next launch.