Spaces:
Sleeping
Sleeping
| 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}""") | |