52 lines
1.4 KiB
Python

from flask import Flask, request
import requests
import os
from datetime import datetime
app = Flask(__name__)
LOGFILE = "/home/doc/alerts/ipn.log"
TELEGRAM_BOT_TOKEN = "8178867489:AAH0VjN7VnZSCIWasSz_y97iBLLjPJA751k"
TELEGRAM_CHAT_ID = "1559582356"
def send_telegram_alert(message):
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
data = {"chat_id": TELEGRAM_CHAT_ID, "text": message}
try:
requests.post(url, data=data)
except Exception as e:
print(f"Telegram error: {e}")
@app.route("/ipn", methods=["POST"])
def handle_ipn():
ipn_data = request.form.to_dict()
now = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC")
payer_email = ipn_data.get("payer_email", "unknown")
item_name = ipn_data.get("item_name", "unspecified")
payment_status = ipn_data.get("payment_status", "unknown")
amount = ipn_data.get("mc_gross", "n/a")
txn_id = ipn_data.get("txn_id", "n/a")
summary = f"""
PayPal IPN Alert
Item: {item_name}
Email: {payer_email}
Amount: ${amount}
Status: {payment_status}
Txn ID: {txn_id}
Time: {now}
""".strip()
with open(LOGFILE, "a") as log:
log.write(summary + "\n")
if payment_status.lower() == "completed":
send_telegram_alert(summary)
return "OK", 200
if __name__ == "__main__":
os.makedirs(os.path.dirname(LOGFILE), exist_ok=True)
app.run(host="0.0.0.0", port=8090)