suspend fun purchase(customerId: String, orderId: String, token: String): FrakResult<Unit>
Records a purchase; same enqueue-then-send contract as track.