Cómo Enviar Comprobantes en Binance P2P con Python y WebSocket
📩 Envío Automático de Recibos a los Vendedores en Binance P2P Chat Usando WebSocket y Python
En un artículo anterior explicamos cómo enviar mensajes automáticos en el chat P2P de Binance (Envío automático de mensajes a Binance P2P Chat con WebSocket y Python).
En esta ocasión aprenderás a enviar un comprobante de pago (recibo) directamente al vendedor dentro del chat de Binance P2P, utilizando WebSocket y Python.
Esta función es clave si estás construyendo un bot de arbitraje P2P, un sistema de pagos automatizado o una herramienta de gestión de operaciones cripto.
🔐 Cómo Obtener las Credenciales del Chat para WebSocket
Antes de enviar mensajes o imágenes, debemos recuperar tres valores esenciales:
chatWssUrllistenKeylistenToken
Estos datos permiten establecer la conexión WebSocket con el servidor de Binance.
📦 Función retrieveChatCredential()
def retrieveChatCredential():
# You Api Key on binance
api_key = "11111"
# You Apy Secret on binance
api_secret = "11111"
base_url = "https://api.binance.com"
endpoint = "/sapi/v1/c2c/chat/retrieveChatCredential"
timestamp = int(time.time() * 1000)
query_string = f"timestamp={timestamp}"
signature = hmac.new(
secret_key.encode('utf-8'),
query_string.encode('utf-8'),
hashlib.sha256
).hexdigest()
headers = {
"clientType": "web",
"X-MBX-APIKEY": api_key
}
url = f"{base_url}{endpoint}?{query_string}&signature={signature}"
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
else:
print("Error:", response.status_code, response.text)
return None
Once the credentials are retrieved, we construct the connection URL:
We use the websocket-client library to establish a connection and listen for real-time events from the P2P chat
chatWssUrl = res_detail['data']['chatWssUrl']
listenKey = res_detail['data']['listenKey']
listenToken = res_detail['data']['listenToken']
chat_wss_url = f"{chatWssUrl}/{listenKey}?token={listenToken}&clientType=web"
🔌 Conexión al WebSocket
def connect_to_websocket():
global reconnect_attempts, ws
reconnect_attempts = 0
ws = websocket.WebSocketApp(
chat_wss_url,
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close
)
ws.run_forever()
📡 Los controladores (on_open, on_message, on_error, on_close) manejan los eventos de la conexión y reconectan automáticamente en caso de error.
✉️ Envío del Recibo de Pago
Cuando el comprador realiza la transferencia al vendedor, el bot puede enviar automáticamente el comprobante de pago (imagen) al chat.
def send_receipt(order_no: str, file_path: str):
message_uuid = generate_uuid()
timestamp = int(time.time() * 1000)
query_string = f"timestamp={timestamp}"
signature = hmac.new(
api_secret.encode('utf-8'),
query_string.encode('utf-8'),
hashlib.sha256
).hexdigest()
if not os.path.exists(file_path):
print(f"File not found: {file_path}")
return
# 1️⃣ Get the file name (any name is possible)
image_name = os.path.basename(file_path)
headers = {
"clientType": "web",
"X-MBX-APIKEY": api_key
}
parameters = {
"timestamp": timestamp,
"signature": signature
}
payload = {...}
📁 Ejemplo de uso:
file_path = r"C:\webSocetBinance\receipt.jpg"
send_receipt("22764965405709934592", file_path)
Full implementation:
import uuid
import websocket
import time
import hmac
import hashlib
import requests
import json
import os
# You Api Key on binance
api_key = "111"
# You Apy Secret on binance
api_secret = "111"
def retrieveChatCredential():
base_url = "https://api.binance.com"
endpoint = "/sapi/v1/c2c/chat/retrieveChatCredential"
timestamp = int(time.time() * 1000)
query_string = f"timestamp={timestamp}"
signature = hmac.new(
api_secret.encode('utf-8'),
query_string.encode('utf-8'),
hashlib.sha256
).hexdigest()
headers = {
"clientType": "web",
"X-MBX-APIKEY": api_key
}
url = f"{base_url}{endpoint}?{query_string}&signature={signature}"
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
else:
print("Error:", response.status_code, response.text)
return None
res_detail = retrieveChatCredential()
if res_detail:
chatWssUrl = res_detail['data']['chatWssUrl']
listenKey = res_detail['data']['listenKey']
listenToken = res_detail['data']['listenToken']
chat_wss_url = f"{chatWssUrl}/{listenKey}?token={listenToken}&clientType=web"
# print("WebSocket URL:", chat_wss_url)
else:
raise Exception("Failed to obtain credentials for WebSocket.")
def generate_uuid():
return str(uuid.uuid4())
def send_receipt(order_no: str, file_path: str):
message_uuid = generate_uuid()
timestamp = int(time.time() * 1000)
query_string = f"timestamp={timestamp}"
signature = hmac.new(
api_secret.encode('utf-8'),
query_string.encode('utf-8'),
hashlib.sha256
).hexdigest()
if not os.path.exists(file_path):
print(f"File not found: {file_path}")
return
# 1️⃣ Get the file name (any name is possible)
image_name = os.path.basename(file_path)
headers = {
"clientType": "web",
"X-MBX-APIKEY": api_key
}
parameters = {
"timestamp": timestamp,
"signature": signature
}
payload = {...}
def on_open(ws):
global ws_connection
ws_connection = ws
print("WebSocket connection established for Chat")
def on_message(ws, message):
try:
parsed_message = json.loads(message)
print(f"parsed_message: {parsed_message}")
except json.JSONDecodeError:
print("Error JSON:", message)
def on_error(ws, error):
print("Error WebSocket:", error)
def on_close(ws, close_status_code, close_msg):
global reconnect_attempts
print("WebSocket connection closed.", close_msg)
if reconnect_attempts < 5:
reconnect_attempts += 1
print(f"Attempting to reconnect ({reconnect_attempts})...")
time.sleep(5)
connect_to_websocket()
else:
print("The maximum number of reconnection attempts has been reached.")
reconnect_attempts = 0
ws_connection = None
def connect_to_websocket():
global reconnect_attempts, ws
reconnect_attempts = 0
ws = websocket.WebSocketApp(
chat_wss_url,
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close
)
ws.run_forever()
connect_to_websocket()
file_path = r"C:\webSocetBinance\receipt.jpg"
send_receipt("22764965405709934592", file_path)
Result:

Video Demo · Binance P2P Chat
Automatización del Chat de Binance P2P con Python y WebSocket
Mira cómo Python y WebSocket pueden utilizarse para automatizar la comunicación en tiempo real dentro del chat de Binance P2P, incluyendo el envío de mensajes relacionados con órdenes P2P activas.
Demostración práctica de la automatización de mensajes en Binance P2P Chat utilizando Python y una conexión WebSocket en tiempo real.
Automatización en Tiempo Real
Beneficios de Automatizar el Chat de Binance P2P
La automatización del chat de Binance P2P permite conectar los eventos de una orden con acciones de mensajería en tiempo real. En lugar de enviar manualmente cada confirmación, un bot en Python puede reaccionar al estado de la operación y comunicarse con el comprador o vendedor mediante WebSocket.
Comunicación Más Rápida
Envía confirmaciones y mensajes relacionados con la operación sin esperar una intervención manual del trader.
Menos Acciones Manuales
Reduce tareas repetitivas como informar que un pago fue enviado o compartir información relacionada con una orden P2P.
Integración con Bots P2P
La mensajería puede formar parte de una lógica más amplia que monitorea órdenes, pagos y cambios de estado en Binance P2P.
Procesamiento de Múltiples Órdenes
Un sistema basado en eventos puede gestionar la comunicación asociada a diferentes operaciones sin depender de un flujo completamente manual.
Integración Lista para Usar
Integración de Binance P2P Chat WebSocket con Python
Si necesitas una implementación funcional sin desarrollar toda la integración del chat de Binance P2P desde cero, ofrecemos una integración Binance P2P Chat WebSocket para Python diseñada para bots P2P y sistemas de automatización.
El stack en Python proporciona las funciones principales necesarias para integrar la comunicación en tiempo real del chat de Binance P2P en tu propia aplicación:
Mensajes Automáticos
Envía mensajes automáticamente a compradores o vendedores directamente en el chat de Binance P2P.
Comprobantes de Pago
Envía imágenes de comprobantes de pago como parte de un flujo P2P automatizado.
Conexión WebSocket
Mantén comunicación WebSocket en tiempo real y procesa eventos del chat de Binance P2P.
Integración con Bots
Integra la mensajería de Binance P2P en bots de trading y herramientas de automatización desarrolladas en Python.
En lugar de implementar desde cero toda la capa de mensajería WebSocket, los desarrolladores pueden utilizar esta integración como base para crear sistemas personalizados de automatización Binance P2P.
Automatización P2P Completa
Del Chat Automatizado al Procesamiento Completo de Órdenes P2P
Para operaciones que requieren más que mensajería automática, P2Pay Binance Bot amplía la automatización al procesamiento de órdenes Binance P2P.
El sistema puede monitorear órdenes P2P, coordinar flujos de procesamiento de pagos y enviar automáticamente notificaciones y mensajes a través del chat de Binance P2P, reduciendo las acciones manuales durante la gestión de operaciones.