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)

Parámetros de la función
Descripción del parámetro

! 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-currenciesarrow-up-right )

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.

circle-exclamation

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

  1. course_pay - payload - la carga útil de la solicitud original de creación de la factura;

  2. 1372995196 - el ID del chat donde se envió originalmente la factura;

  3. 120.75 - el importe total del pago;

  4. USD - la moneda;

  5. 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

circle-info

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.

circle-info

Una vez recibida la webhook del pago, el pago se confirmará automáticamente mediante el método answerPreCheckoutQuery. https://core.telegram.org/bots/api#answerprecheckoutqueryarrow-up-right

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)

Parámetros de la función
Descripción

! 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