Cómo conectar un sistema de pago
El sistema de pago está integrado en Telegram. Para aceptar pagos dentro del mensajero, necesitas:
- Conectar un sistema de pago a tu bot usando BotFather.
- Ir a la configuración del bot deseado y seleccionar "Pagos" del menú.


Sigue las instrucciones para conectar un sistema de pago disponible y copia el token proporcionado.



Cómo facturar a un cliente
Para enviar una factura en Telegram, usa el método y especifica los parámetros requeridos.
tg_send_invoice(provider_token, platform_id, title, description, currency, prices, photo_url, payload, protect_content, disable_notification, need_name, need_phone_number, need_email, reply_to_message_id, reply_markup, message_thread_id, provider_data)
| Parámetros de la función | Descripción del parámetro |
|---|---|
| **!** provider_token | (parámetro obligatorio) token obtenido de BotFather después de conectar el sistema de pago |
| **!** platform_id | (parámetro obligatorio) ID del destinatario: identificador de usuario, grupo o canal |
| **!** title | (parámetro obligatorio) título del producto, de 1 a 32 caracteres |
| **!** description | (parámetro obligatorio) descripción del producto, de 1 a 255 caracteres |
| **!** currency | (parámetro obligatorio) moneda de pago (**EUR**, USD, UAH, etc.; para más detalles https://core.telegram.org/bots/payments#supported-currencies ) |
| prices |
Un array de arrays que contiene los detalles de precios del producto y servicios adicionales (entrega, empaque, etc.). Se muestra en la página de pago. El monto se puede especificar como un número entero (ej., 125) o un número decimal usando un punto (ej., 120.25).
Por ejemplo: [["producto", 2000], ["IVA", 20.75], ["empaque", 100]] |
| photo_url | URL de la imagen del producto |
| payload | La primera parte del callback de pago, por defecto es tg_payment |
| protect_content | 1 - proteger contra copia y capturas de pantalla, 0 - sin protección |
| disable_notification | 1 - enviar con notificación, 0 - sin notificación |
| need_name | 1 - requerir nombre completo del usuario para completar el pedido, 0 - no solicitar nombre |
| need_phone_number | 1 - requerir número de teléfono del usuario para completar el pedido, 0 - no solicitar número de teléfono |
| need_email | 1 - requerir correo electrónico del usuario para completar el pedido, 0 - no solicitar correo electrónico |
| reply_to_message_id | ID del mensaje al que responder; si deseas enviar la factura como un mensaje separado, usa dos comillas simples ('') |
| reply_markup | Teclado con el primer botón configurado como tipo pay |
| message_thread_id | ID del tema (disponible para supergrupos con la funcionalidad de foro habilitada) |
| provider_data | Datos de la factura en formato JSON que se enviarán al proveedor del servicio de pago. El sistema de pago debe proporcionar descripciones detalladas de los campos requeridos. |
¡IMPORTANTE! Todos los parámetros deben pasarse en el orden especificado en la función. Si necesitas especificar un parámetro en particular y omitir otros, deja valores vacíos o valores como se especifica en la documentación para los parámetros que no necesitas.
Ejemplo:

Si alguno de los parámetros need_name, need_phone_number o need_email está habilitado, se le pedirá al usuario que proporcione esa información antes de completar el pago. Tras un pago exitoso, los datos se guardan en las variables de cliente correspondientes.
Ejemplo:

Resultado: se solicitan datos antes del pago.
Callback de pago
Si un pago es exitoso, se enviará un callback con el siguiente contenido al chat del usuario:
tg_payment 1372995196 120.75 USD 2ff747b9-000f-5000-b000-16d7e3517aa', donde
- course_pay - payload - el payload de la solicitud original de creación de factura;
- 1372995196 - el ID del chat donde se envió originalmente la factura;
- 120.75 - el monto total del pago;
- USD - la moneda;
- 2ff747b9-000f-5000-b000-16d7e3517aa9 - el ID del pago en el sistema del comerciante.

Adicionalmente, si se solicitaron el nombre, número de teléfono y/o correo electrónico del usuario, las variables correspondientes se asignarán al cliente:
tg_payment_name, tg_payment_phone y tg_payment_email

Se enviará un callback de pago exitoso a los mensajes directos del usuario con el bot.
El usuario debe tener un chat existente con el bot (es decir, debe haber iniciado o suscrito al bot) antes de realizar el pago. De lo contrario, el bot no puede enviarle el mensaje directo.
Una vez recibido el webhook de pago, el pago se confirmará automáticamente mediante el método answerPreCheckoutQuery. https://core.telegram.org/bots/api#answerprecheckoutquery
Mensaje fijado con un botón de pago
Debes usar la función de fijar mensaje después de conectar el sistema de pago.
tg_pin_chat_message(platform_id, message_id, disable_notification)
| Parámetros de la función | Descripción |
|---|---|
| **!** platform_id | ID del chat de Telegram * |
| message_id | ID del mensaje a fijar |
| disable_notification | Este parámetro define si se debe enviar una notificación a todos los miembros del chat sobre el mensaje recién fijado. Las notificaciones siempre están deshabilitadas en canales y chats privados.
Para deshabilitar notificaciones, establece el parámetro disable_notification en 1; de lo contrario, usa 0. |
Ejemplo:
Paso 1:
prices = [["curso", 100], ["IVA", 20.75]]
result=tg_send_invoice('381764678:TEST:129736', platform_id, 'Curso sobre cursos', 'Crear cursos es fácil', 'USD', prices, 'https://salebot.pro/promo.png', 'course_pay','0', '0', '1', '1', '1', '', '{"inline_keyboard": [[{"text":"Pagar", "pay":"True"}]]}')
Paso 2:
Como resultado del primer paso, recibirás una respuesta de la cual debes extraer el valor message_id usando la función get().
res=get(result,'result')
m_id=get(res,'message_id')

Luego, fija el mensaje: tg_pin_chat_message(#{platform_id}, #{m_id}, 1)
Ejemplo: conjunto mínimo de parámetros
prices = [["súper curso", 100]]
result= tg_send_invoice('381764678:TEST:129736', platform_id, 'Curso sobre cursos', 'Crear cursos es súper fácil', 'USD', prices)

Ejemplo: teclado
prices = [["curso", 100], ["IVA", 20.75]]
tg_send_invoice('381764678:TEST:129736', platform_id, 'Curso sobre cursos', 'Crear cursos es fácil', 'USD', prices, 'https://mavibot.ai/promo.png', 'course_pay','0', '0', '1', '1', '1', '', '{"inline_keyboard": [[{"text":"Pagar", "pay":"True"}], [{"text":"Otro botón", "callback_data": "Otro botón"}]]}')
