chatbot_server / service /CallBackService.py
kltn21110's picture
Upload 239 files
325b400 verified
import httpx
import yaml
from fastapi.responses import HTMLResponse, RedirectResponse
with open("config.yaml", "r") as f:
config = yaml.safe_load(f)
base_backend_java = config["callback_urls"]
base_frontend = config["frontend"]
async def momo_group_callback(orderId: str, resultCode:str):
url = f"""{base_backend_java["base"]}/{base_backend_java["momo"]["group"]["android"]["callback"]}"""
params = {"orderId": orderId,
"resultCode": resultCode
}
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params)
if response.status_code == 200:
data = response.json()
status = data.get("status")
return {"status": status}
else:
return {"error": response.status_code, "message": response.text}
async def momo_callback(orderId: str, resultCode:str):
url = f"""{base_backend_java["base"]}/{base_backend_java["momo"]["single"]["android"]["callback"]}"""
params = {"orderId": orderId,
"resultCode": resultCode
}
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params)
if response.status_code == 200:
data = response.json()
status = data.get("status")
return {"status": status}
else:
return {"error": response.status_code, "message": response.text}
async def payos_callback(orderCode: int):
url = f"""{base_backend_java["base"]}/{base_backend_java["payos"]["single"]["android"]["callback"]}"""
params = {"orderCode": orderCode}
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params)
return response.json()
async def group_payos_callback(orderCode: int):
url = f"""{base_backend_java["base"]}/{base_backend_java["payos"]["group"]["android"]["callback"]}"""
params = {"orderCode": orderCode}
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params)
return response.json()
async def zalo_group_callback(app_trans_id: str):
url = f"""{base_backend_java["base"]}/{base_backend_java["zalo"]["group"]["android"]["callback"]}"""
params = {"app_trans_id": app_trans_id}
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params)
if response.status_code == 200:
data = response.json()
status = data.get("status")
return {"status": status}
else:
return {"error": response.status_code, "message": response.text}
async def zalo_callback(app_trans_id: str):
url = f"""{base_backend_java["base"]}/{base_backend_java["zalo"]["single"]["android"]["callback"]}"""
params = {"app_trans_id": app_trans_id}
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params)
if response.status_code == 200:
data = response.json()
status = data.get("status")
return {"status": status}
else:
return {"error": response.status_code, "message": response.text}
async def vnpay_callback(params):
url = f"""{base_backend_java["base"]}/{base_backend_java["vnpay"]["single"]["android"]["callback"]}"""
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params,timeout=90.0)
async def vnpay_group_callback(params):
url = f"""{base_backend_java["base"]}/{base_backend_java["vnpay"]["group"]["android"]["callback"]}"""
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params,timeout=90.0)
from fastapi.responses import HTMLResponse, RedirectResponse
async def android_payos_callback( status: str = None, orderCode: str = None):
try:
result = await payos_callback(int(orderCode))
print(result)
except Exception as e:
print("Lỗi khi gọi payos_callback:", e)
if status != "PAID":
# Redirect khi bị hủy
return RedirectResponse(url=f"""{base_frontend["android_redirect_base"]}?status=-49""")
else :
return RedirectResponse(url=f"""{base_frontend["android_redirect_base"]}?status=1""")
async def android_group_payOs_callback(status: str = None, orderCode: str = None):
try:
result = await group_payos_callback(int(orderCode))
print(result)
except Exception as e:
print("Lỗi khi gọi payos_callback:", e)
if status != "PAID":
return RedirectResponse(url=f"""{base_frontend["android_redirect_base"]}?status=-49""")
else :
return RedirectResponse(url=f"""{base_frontend["android_redirect_base"]}?status=1""")
async def payos_callback(orderCode: int):
url = f"""{base_backend_java["base"]}/{base_backend_java["payos"]["single"]["android"]["callback"]}"""
params = {"orderCode": orderCode}
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params)
return response.json()
async def web_payos_callback(code: str = None, id: str = None, cancel: bool = None, status: str = None, orderCode: str = None):
query_params = []
if code is not None:
query_params.append(f"code={code}")
if id is not None:
query_params.append(f"id={id}")
if cancel is not None:
query_params.append(f"cancel={str(cancel).lower()}")
if status is not None:
query_params.append(f"status={status}")
if orderCode is not None:
query_params.append(f"orderCode={orderCode}")
query_string = "&".join(query_params)
try:
result = await payos_callback(int(orderCode))
return RedirectResponse(url=f"""{base_frontend["base"]}/{base_frontend["web_redirect_paths"]["payos"]}?{query_string}""")
except Exception as e:
return RedirectResponse(url=f"""{base_frontend["base"]}/{base_frontend["web_redirect_paths"]["payos"]}?{query_string}""")