The six step flow is easy to follow, and the 10 second window for answerPreCheckoutQuery is the detail most worth highlighting, since missing it cancels the payment. Saving telegram_payment_charge_id before delivering the product is a good habit to call out too, because refunds depend on it. The long polling example with no libraries and no webhook also makes it simple to test the whole flow locally before deploying anything.