import gradio as gr import requests def card_authorization(onfftid, tot_amt, com_tax_amt, com_free_amt, com_vat_amt, card_no, install_period, user_nm, user_phone2, product_nm, expire_date, cert_type, card_user_type, auth_value, password, card_nm, order_no, pay_type): url = "https://store.onoffkorea.co.kr/payment/index.php" data = { "onfftid": onfftid, "tot_amt": tot_amt, "com_tax_amt": com_tax_amt, "com_free_amt": com_free_amt, "com_vat_amt": com_vat_amt, "card_no": card_no, "install_period": install_period, "user_nm": user_nm, "user_phone2": user_phone2, "product_nm": product_nm, "expire_date": expire_date, "cert_type": cert_type, "card_user_type": card_user_type, "auth_value": auth_value, "password": password, "card_nm": card_nm, "order_no": order_no, "pay_type": pay_type } response = requests.post(url, data=data) if response.status_code == 200: try: return response.json() except ValueError: return {"error": "Non-JSON response", "details": response.text} else: return {"error": "Request failed", "status_code": response.status_code} with gr.Blocks() as app: with gr.Tab("카드 결제 승인 요청"): with gr.Row(): with gr.Column(scale=1): onfftid = gr.Textbox(label="온오프코리아 TID", value="OFPT000000011017", readonly=True) tot_amt = gr.Number(label="결제금액", placeholder="금액을 입력하세요") com_tax_amt = gr.Number(label="과세승인금액", optional=True) com_free_amt = gr.Number(label="비과세승인금액", optional=True) com_vat_amt = gr.Number(label="부가세", optional=True) card_no = gr.Textbox(label="카드번호", placeholder="카드번호를 입력하세요") install_period = gr.Dropdown([str(i).zfill(2) for i in range(13)], label="할부기간 선택") user_nm = gr.Textbox(label="결제자명", placeholder="결제자의 이름을 입력하세요") user_phone2 = gr.Textbox(label="결제자 연락처", placeholder="연락처를 입력하세요") product_nm = gr.Textbox(label="상품명", placeholder="상품명을 입력하세요") expire_date = gr.Textbox(label="유효기간(YYMM)", placeholder="예: 2306") cert_type = gr.Radio(choices=["0 - 인증", "1 - 비인증"], label="인증여부 선택") card_user_type = gr.Radio(choices=["0 - 개인카드", "1 - 법인카드"], label="카드유형 선택") auth_value = gr.Textbox(label="인증번호", placeholder="개인은 주민번호 앞 6자리, 법인은 사업자등록번호") password = gr.Textbox(label="카드 비밀번호 앞 2자리", placeholder="비밀번호 앞 2자리") card_nm = gr.Textbox(label="카드사명", optional=True, placeholder="카드사명을 입력하세요") order_no = gr.Textbox(label="주문번호", optional=True, placeholder="주문번호를 입력하세요") pay_type = gr.Textbox(label="결제타입", value="card", readonly=True) submit_button = gr.Button("결제 승인 요청") result_area = gr.JSON(label="결과") submit_button.click( fn=card_authorization, inputs=[onfftid, tot_amt, com_tax_amt, com_free_amt, com_vat_amt, card_no, install_period, user_nm, user_phone2, product_nm, expire_date, cert_type, card_user_type, auth_value, password, card_nm, order_no, pay_type], outputs=result_area ) app.launch()