Pago en Telegram
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.
Ve a la configuración del bot deseado y selecciona "Pagos" en el 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)
! provider_token
(parámetro requerido) token obtenido de BotFather después de conectar el sistema de pago
! platform_id
(parámetro requerido) ID del destinatario: identificador de usuario, grupo o canal
! title
(parámetro requerido) título del producto, de 1 a 32 caracteres
! description
(parámetro requerido) descripción del producto, de 1 a 255 caracteres
! currency
(parámetro requerido) moneda de pago (EUR, USD, UAH, etc.; para más detalles https://core.telegram.org/bots/payments#supported-currencies )
prices
Una matriz de matrices que contiene los detalles de precios del producto y servicios adicionales (entrega, embalaje, etc.). Se muestra en la página de pago. El importe puede especificarse como un entero (por ejemplo, 125) o como un número decimal usando un punto (por ejemplo, 120.25).
Por ejemplo: [["product", 2000], ["VAT", 20.75], ["packaging", 100]]
photo_url
URL de la imagen del producto
payload
La primera parte de la devolución de llamada de pago, el valor predeterminado es tg_payment
protect_content
1 - proteger de copias y capturas de pantalla, 0 - sin protección
disable_notification
1 - enviar con notificación, 0 - sin notificación
need_name
1 - requerir el nombre completo del usuario para completar el pedido, 0 - no solicitar nombre
need_phone_number
1 - requerir el número de teléfono del usuario para completar el pedido, 0 - no solicitar teléfono
need_email
1 - requerir el 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 quieres enviar la factura como un mensaje separado, usa dos comillas simples ('')
reply_markup
Teclado con el primer botón configurado como tipo pagar
message_thread_id
ID del tema (disponible para supergrupos con la funcionalidad de foro habilitada)
provider_data
Datos de la factura en JSON formato que se enviará 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 concreto y omitir otros, deja valores vacíos o valores tal como se indica en la documentación para los parámetros que no necesites.
Ejemplo:

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

El resultado: se solicitan datos antes del pago.
Callback de pago
Si el pago se realiza correctamente, se enviará una devolución de llamada con el siguiente contenido al chat del usuario:
tg_payment 1372995196 120.75 USD 2ff747b9-000f-5000-b000-16d7e3517aa9, donde
course_pay - payload - la carga útil de la solicitud original de creación de la factura;
1372995196 - el ID del chat donde se envió originalmente la factura;
120.75 - el importe total del pago;
USD - la moneda;
2ff747b9-000f-5000-b000-16d7e3517aa9 - el ID del pago en el sistema del comerciante.

Además, si se solicitaron el nombre, el número de teléfono y/o el 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á una devolución de llamada 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 cuando se realiza el pago. De lo contrario, el bot no puede enviarle el mensaje directo.
Una vez recibida la webhook del 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 mensajes después de conectar el sistema de pago.
tg_pin_chat_message(platform_id, message_id, disable_notification)
! platform_id
ID del chat de Telegram *
message_id
ID del mensaje que se fijará
disable_notification
Este parámetro define si se debe enviar una notificación a todos los miembros del chat sobre el nuevo mensaje fijado. Las notificaciones siempre están desactivadas en canales y chats privados. Para desactivar las notificaciones, establece el disable_notification parámetro en 1; de lo contrario, usa 0.
Ejemplo:
Paso 1: prices = [["course", 100], ["VAT", 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 que debes extraer el message_id valor 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 = [["super course", 100]]
result= tg_send_invoice('381764678:TEST:129736', platform_id, 'Curso sobre cursos', 'Crear cursos es super fácil', 'USD', prices)

Ejemplo: teclado
prices = [["course", 100], ["VAT", 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": "Another button"}]]}')

Última actualización