File size: 4,026 Bytes
ac8e3c3
 
2121d78
 
 
 
 
 
 
 
 
 
 
 
 
 
ac8e3c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2121d78
 
 
ac8e3c3
 
f905452
2121d78
 
f905452
2121d78
f905452
 
 
2121d78
 
f905452
2121d78
 
 
f905452
 
 
 
 
 
 
ac8e3c3
2121d78
 
ac8e3c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2121d78
ac8e3c3
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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()