testapi / app.py
aiqtech's picture
Update app.py
2121d78 verified
raw
history blame
4.03 kB
import gradio as gr
import requests
from bs4 import BeautifulSoup
def extract_info_from_html(html_content):
soup = BeautifulSoup(html_content, 'html.parser')
# Example: Extract order number and buyer name
order_number = soup.find('input', {'name': 'ordr_idxx'})['value'] if soup.find('input', {'name': 'ordr_idxx'}) else 'Not found'
buyer_name = soup.find('input', {'name': 'buyr_name'})['value'] if soup.find('input', {'name': 'buyr_name'}) else 'Not found'
return {
"order_number": order_number,
"buyer_name": buyer_name,
# Add more extracted fields as needed
}
def request_batch_key(onfftid, pay_type, method, cert_type, order_no, user_nm, user_phone2, product_nm,
card_user_type, card_no, expire_date, auth_value, password, tot_amt):
url = "https://store.onoffkorea.co.kr/fix/index.php"
payload = {
"onfftid": onfftid,
"pay_type": pay_type,
"method": method,
"cert_type": cert_type,
"order_no": order_no,
"user_nm": user_nm,
"user_phone2": user_phone2,
"product_nm": product_nm,
"card_user_type": card_user_type,
"card_no": card_no,
"expire_date": expire_date,
"auth_value": auth_value,
"password": password,
"tot_amt": tot_amt
}
headers = {
'Accept': 'application/json', # ์š”์ฒญ์ด JSON์„ ์„ ํ˜ธํ•œ๋‹ค๊ณ  ์„œ๋ฒ„์— ์•Œ๋ฆฝ๋‹ˆ๋‹ค
'Content-Type': 'application/x-www-form-urlencoded', # ํผ ๋ฐ์ดํ„ฐ๋กœ ์ „์†ก
}
try:
response = requests.post(url, data=payload, headers=headers)
response.raise_for_status()
# Check if the response is JSON
try:
return response.json()
except requests.exceptions.JSONDecodeError:
# If not JSON, assume it's HTML and extract information
extracted_info = extract_info_from_html(response.text)
return {
"status": "HTML response received",
"extracted_info": extracted_info,
"raw_html": response.text[:1000] # First 1000 characters of HTML for reference
}
except requests.exceptions.RequestException as e:
return {
"error": str(e),
"status_code": getattr(e.response, 'status_code', None),
"raw_response": getattr(e.response, 'text', None)
}
# The request_payment function can be updated similarly
with gr.Blocks() as demo:
gr.Markdown("# API ์—ฐ๋™ ํ…Œ์ŠคํŠธ")
with gr.Tab("์นด๋“œ ๋ฐฐ์น˜ํ‚ค ๋ฐœ๊ธ‰ ์š”์ฒญ"):
onfftid = gr.Textbox(label="์˜จ์˜คํ”„์ฝ”๋ฆฌ์•„ TID")
pay_type = gr.Textbox(label="๊ฒฐ์ œ ํƒ€์ž…", value="fixKey")
method = gr.Textbox(label="๋ฉ”์†Œ๋“œ", value="request")
cert_type = gr.Radio(["0", "1"], label="์ธ์ฆ ์—ฌ๋ถ€", value="0")
order_no = gr.Textbox(label="์ฃผ๋ฌธ๋ฒˆํ˜ธ")
user_nm = gr.Textbox(label="์ฃผ๋ฌธ์ž ์ด๋ฆ„")
user_phone2 = gr.Textbox(label="์ฃผ๋ฌธ์ž ์—ฐ๋ฝ์ฒ˜")
product_nm = gr.Textbox(label="์ƒํ’ˆ๋ช…")
card_user_type = gr.Radio(["0", "1"], label="์นด๋“œ ํƒ€์ž…", value="0")
card_no = gr.Textbox(label="์นด๋“œ๋ฒˆํ˜ธ")
expire_date = gr.Textbox(label="์œ ํšจ๊ธฐ๊ฐ„(YYMM)")
auth_value = gr.Textbox(label="์ฃผ๋ฏผ(์‚ฌ์—…์ž)๋“ฑ๋ก๋ฒˆํ˜ธ")
password = gr.Textbox(label="์นด๋“œ๋น„๋ฐ€๋ฒˆํ˜ธ ์•ž 2์ž๋ฆฌ")
tot_amt = gr.Number(label="๊ฒฐ์ œ๊ธˆ์•ก")
batch_key_button = gr.Button("๋ฐฐ์น˜ํ‚ค ๋ฐœ๊ธ‰ ์š”์ฒญ")
batch_key_output = gr.JSON(label="์‘๋‹ต ๊ฒฐ๊ณผ")
batch_key_button.click(
request_batch_key,
inputs=[onfftid, pay_type, method, cert_type, order_no, user_nm, user_phone2, product_nm,
card_user_type, card_no, expire_date, auth_value, password, tot_amt],
outputs=batch_key_output
)
# The "์นด๋“œ ๋ฐฐ์น˜ํ‚ค ๊ฒฐ์ œ ์Šน์ธ ์š”์ฒญ" tab can be updated similarly
demo.launch()