import gradio as gr from PIL import Image import requests import openpyxl from openpyxl import load_workbook all_content = [] def append_to_excel(content): # Tên tệp Excel file_path = "lienhoan.xlsx" # Mở hoặc tạo mới tệp Excel try: workbook = load_workbook(file_path) sheet = workbook.active except FileNotFoundError: workbook = openpyxl.Workbook() sheet = workbook.active sheet.append(["Số thứ tự", "Nội dung"]) # Thêm tiêu đề cột # Tìm số thứ tự mới new_row_number = sheet.max_row # Thêm nội dung vào tệp Excel sheet.append([new_row_number, content]) # Lưu tệp Excel workbook.save(file_path) return f"Nội dung '{content}' đã được thêm vào dòng {new_row_number} của tệp {file_path}" def check_status_banking(): api_token = 'BDKRUEDQ7VPL6Z2HRMSGS3SEN0T4OA9NCFYAZ1BGK8LMQXBEQVUPY6IOFIIPMJB7' # URL API MBBank để lấy danh sách giao dịch ngân hàng url = 'https://my.sepay.vn/userapi/transactions/list' # Header với API Token headers = { 'Authorization': f'Bearer {api_token}', 'Content-Type': 'application/json' } # Tham số lọc (tùy chọn) params = { 'account_number': '73899918092007', # Thay thế bằng số tài khoản của bạn # 'transaction_date_min': '2023-01-01', # Thay thế bằng ngày bắt đầu # 'transaction_date_max': '2023-12-31', # Thay thế bằng ngày kết thúc 'limit': 1 # Số lượng giao dịch trả về } # Gửi yêu cầu GET tới API response = requests.get(url, headers=headers) # print(response) # Kiểm tra mã trạng thái HTTP của phản hồi # Kiểm tra mã trạng thái HTTP của phản hồi if response.status_code == 200: # In nội dung phản hồi JSON transactions = response.json() transaction_content = transactions['transactions'] for value in transaction_content: transaction_content = value['transaction_content'] all_content.append(transaction_content) print(all_content) return all_content else: print(f'Error: {response.status_code}') print(response.text) def get_qr_code(context_bank): amount = "50000" url = f"https://img.vietqr.io/image/MBBank-73899918092007-compact2.jpg?amount={amount}&addInfo={context_bank}&accountName=TRAN%20DINH%20NHAT" print(url) result = requests.get(url) with open("qr_code.png", "wb") as f: f.write(result.content) qr_image = Image.open("qr_code.png") return qr_image def display_info(): # Thông tin tài khoản account_name = "Trần Đình Nhật" account_number = "738999918092007" content = "Điền nội dung chuyển khoản" # Ảnh QR code return account_name, account_number, content def check_payment_status(content): # Giả sử kiểm tra trạng thái thanh toán và trả về thông báo print("content", content) content_banking = check_status_banking() for i in content_banking: if content in i: result = append_to_excel(content) return "Được rồi đó bạn iu" else: return "Tao chưa nhận được xiền, gửi lại mau thồn lằng" # Tạo form Gradio with gr.Blocks() as demo: with gr.Row(): with gr.Column(): qr_image = gr.Image(label="QR Code", type="pil") with gr.Column(): account_name = gr.Textbox(label="Tên tài khoản:", value="Trần Đình Nhật", interactive=False) account_number = gr.Textbox(label="Số tài khoản:", value="738999918092007", interactive=False) content = gr.Textbox(label="Nội dung:", value="chuyển khoản", interactive=True) get_qr_button = gr.Button("Lấy mã qr") get_qr_button.click(get_qr_code, inputs=content, outputs=qr_image) payment_status_output = gr.Textbox(label="Trạng Thái Thanh Toán", interactive=False) check_status_button = gr.Button("Check Trạng Thái Thanh Toán") check_status_button.click(check_payment_status, inputs=content, outputs=payment_status_output) with gr.Row(): gr.Markdown("© 2024 Trần Đình Nhật") # Hiển thị thông tin và ảnh get_qr_code(content) demo.load(display_info, outputs=[account_name, account_number, content]) # Chạy ứng dụng demo.launch(inline=False)