diff --git a/UI_V2/flask_server.py b/UI_V2/flask_server.py index c47ce48..c51604d 100644 --- a/UI_V2/flask_server.py +++ b/UI_V2/flask_server.py @@ -34,8 +34,8 @@ def healthz(): @app.post("/api/payments/ipn") def ipn(): try: - raw = request.data - data = verify_ipn(raw) + # Pass the whole request object, not just request.data + data = verify_ipn(request) app.logger.info("IPN OK: %s", data) return jsonify({"ok": True, "data": data}), 200 except Exception as e: diff --git a/UI_V2/helpers/netopia.py b/UI_V2/helpers/netopia.py index d5432f3..a9436ae 100644 --- a/UI_V2/helpers/netopia.py +++ b/UI_V2/helpers/netopia.py @@ -269,13 +269,10 @@ def start_card_payment( return svc.start_payment(req) -def verify_ipn(raw_body: bytes, settings: Optional[NetopiaSettings] = None) -> Dict[str, Any]: - """Verify an IPN payload coming from NETOPIA. Returns the decoded data. - - Raise an exception if verification fails. - """ +def verify_ipn(request_obj: Any, settings: Optional[NetopiaSettings] = None) -> Dict[str, Any]: + """Verify an IPN payload coming from NETOPIA using the full request object.""" svc = _build_payment_service(settings) - return svc.verify_ipn(raw_body) + return svc.verify_ipn(request_obj) def get_status(*, ntp_id: Optional[str] = None, order_id: Optional[str] = None, settings: Optional[NetopiaSettings] = None) -> Dict[str, Any]: