|
|
@@ -67,7 +67,6 @@ class OfpayHelper:
|
|
|
"prizeId": "sku14117",
|
|
|
"prizeName": "数据采集成功",
|
|
|
"prizeAlias": "",
|
|
|
- # 假设 'randomCode' 是字符串,你需要给这个变量赋予适当的值
|
|
|
"prizeDesc": None,
|
|
|
"prizeDescUrl": "https://mstatic.ofpay.com/marketing/upload/ca2ed3a05b2846b7909debf2df8e3495.png",
|
|
|
"prizeBannerUrl": "https://mstatic.ofpay.com/marketing/upload/c4d1a0b94b50462eb0f040306a9badf4.png",
|
|
|
@@ -98,52 +97,21 @@ class OfpayHelper:
|
|
|
"payStatus": "2",
|
|
|
"discountPrice": "",
|
|
|
"activityPrice": "",
|
|
|
- # JSON 字符串需要解析为 Python 字典
|
|
|
- "customerInfo": {
|
|
|
- "device_id": "D29ED082-549A-4882-98FC-8BB881D1552B",
|
|
|
- "loginType": "interactiveIGoChoose",
|
|
|
- "gameAccount": "13430389115",
|
|
|
- "city_code": "440100",
|
|
|
- "cisno": "ZbHv0CEM2cGjx0DB9DXVJg==",
|
|
|
- "isNewUser": "0",
|
|
|
- "marketId": "M923156289016692736",
|
|
|
- "city_name": "广州市",
|
|
|
- "phone": "13430389115",
|
|
|
- "fromEntry": "APP",
|
|
|
- "currentTimeMillis": "1708910189982",
|
|
|
- "userUuid": "Pfd6kjTSmjCfQ8boswe1PpAmfgZW0acz",
|
|
|
- "cust_id": "Pfd6kjTSmjCfQ8boswe1PpAmfgZW0acz",
|
|
|
- "invitationCode": "BGCKWC"
|
|
|
- },
|
|
|
+ "customerInfo": "{\"device_id\":\"D29ED082-549A-4882-98FC-8BB881D1552B\",\"loginType\":\"interactiveIGoChoose\",\"gameAccount\":\"13430389115\",\"city_code\":\"440100\",\"cisno\":\"ZbHv0CEM2cGjx0DB9DXVJg==\",\"isNewUser\":\"0\",\"marketId\":\"M923156289016692736\",\"city_name\":\"广州市\",\"phone\":\"13430389115\",\"fromEntry\":\"APP\",\"currentTimeMillis\":\"1709515975349\",\"userUuid\":\"Pfd6kjTSmjCfQ8boswe1PpAmfgZW0acz\",\"cust_id\":\"Pfd6kjTSmjCfQ8boswe1PpAmfgZW0acz\",\"invitationCode\":\"BGCKWC\"}",
|
|
|
"callbackOrder": "",
|
|
|
"activityRechargeEffectStartTime": "",
|
|
|
"activityRechargeEffectEndTime": "",
|
|
|
"accountType": "",
|
|
|
"payFlag": "1",
|
|
|
"activityPayFlag": True,
|
|
|
- # JSON 字符串需要解析为 Python 字典
|
|
|
- "thirdInfo": {
|
|
|
- "faceValue": "30.00",
|
|
|
- "customGatewayId": "ZDY_ICBC_ZJWN",
|
|
|
- "showSign": "1",
|
|
|
- "xcxShowSign": "2",
|
|
|
- "order": "28",
|
|
|
- "toBPrice": "30.00",
|
|
|
- "showPhone": "1",
|
|
|
- "pointActivity": "HD0460132E7oLMG1mH",
|
|
|
- "stockShowSign": "2"
|
|
|
- },
|
|
|
+ "thirdInfo": "{\"faceValue\":\"20.00\",\"customGatewayId\":\"ZDY_ICBC_NJFH\",\"showSign\":\"1\",\"xcxShowSign\":\"2\",\"order\":\"24\",\"toBPrice\":\"19.20\",\"appId\":\"gh_58e6ebeaa1ea\",\"showFlag\":\"eCoffee-Tims\",\"showPhone\":\"1\",\"pointActivity\":\"HD046012y3VGiMMHzP\",\"stockShowSign\":\"2\"}",
|
|
|
"vendorVoucher": "",
|
|
|
"productUseMsg": "",
|
|
|
"proof": "",
|
|
|
"amount": 1,
|
|
|
"parentActivityNo": "",
|
|
|
"parentDetailId": "",
|
|
|
- # JSON 字符串需要解析为 Python 字典
|
|
|
- "subOrderExt": {
|
|
|
- "orderStatus": "",
|
|
|
- "payStatus": ""
|
|
|
- },
|
|
|
+ "subOrderExt": "{\"orderStatus\":\"\",\"payStatus\":\"\"}",
|
|
|
"logisticsNo": "",
|
|
|
"company": "",
|
|
|
"promoteId": "",
|
|
|
@@ -155,7 +123,11 @@ class OfpayHelper:
|
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
- self.domain = 'market-web.ofpay.com';
|
|
|
+ self.domain_name = 'market-web.ofpay.com';
|
|
|
+ self.host_ip = None;
|
|
|
+ ip_address = Utils.get_ip_address(self.domain_name);
|
|
|
+ if ip_address:
|
|
|
+ self.host_ip = ip_address;
|
|
|
self.db_conn = None;
|
|
|
self.connect_mysql();
|
|
|
|
|
|
@@ -184,18 +156,29 @@ class OfpayHelper:
|
|
|
break;
|
|
|
self.db_conn = db_conn;
|
|
|
|
|
|
+ def check_host_pass(self, host):
|
|
|
+ if self.host_ip:
|
|
|
+ if host != self.host_ip and host != self.domain_name:
|
|
|
+ return False;
|
|
|
+ else:
|
|
|
+ if host != self.domain_name:
|
|
|
+ return False;
|
|
|
+ return True;
|
|
|
+
|
|
|
+
|
|
|
def request(self, flow: http.HTTPFlow):
|
|
|
- if flow.request.host != self.domain:
|
|
|
+ if not self.check_host_pass(flow.request.host):
|
|
|
return;
|
|
|
url = flow.request.url;
|
|
|
path = flow.request.path;
|
|
|
request = flow.request;
|
|
|
|
|
|
def response(self, flow: http.HTTPFlow):
|
|
|
- if flow.request.host != self.domain:
|
|
|
+ if not self.check_host_pass(flow.request.host):
|
|
|
return;
|
|
|
url = flow.request.url;
|
|
|
path = flow.request.path;
|
|
|
+ print("###[OfpayHelper]path=%s"%path);
|
|
|
if path.startswith('/h5/union/api/interactiveIGoChoose/orderList'):
|
|
|
self.handle_orderlist(flow);
|
|
|
|
|
|
@@ -208,8 +191,15 @@ class OfpayHelper:
|
|
|
return;
|
|
|
account = None;
|
|
|
try:
|
|
|
- payload = jwt.decode(cookies['unionToken_interactiveIGoChoose'], verify=False);
|
|
|
- info_str = payload.get('customerInfo');
|
|
|
+ jwt_str = cookies['unionToken_interactiveIGoChoose'];
|
|
|
+ # payload = jwt.decode(jwt_str, '', algorithms=['HS256'], verify=False, options={'verify_signature':False});
|
|
|
+ # info_str = payload.get('customerInfo');
|
|
|
+ # 不依赖库,简单方法解析
|
|
|
+ jwt_data = Utils.parse_jwt(jwt_str);
|
|
|
+ info_str = None;
|
|
|
+ if jwt_data:
|
|
|
+ payload = jwt_data['payload'];
|
|
|
+ info_str = payload['customerInfo'];
|
|
|
if info_str:
|
|
|
customer_info = json.loads(info_str);
|
|
|
account = customer_info['phone'];
|
|
|
@@ -240,15 +230,14 @@ class OfpayHelper:
|
|
|
if rsp_params['code'] == 'success':
|
|
|
rsp_data = rsp_params['data'];
|
|
|
rsp_data['list'].insert(0, simple_data);
|
|
|
-
|
|
|
- response.set_text(json.dump(rsp_params));
|
|
|
+ response.set_text(json.dumps(rsp_params));
|
|
|
|
|
|
update_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S');
|
|
|
sql_query = f'''
|
|
|
- CALL UpdateElifeAccountData(%s, %s, %s, %s, %s, %s, %s, %, NOW());
|
|
|
+ CALL UpdateElifeAccountData(%s, %s, %s, %s, %s, %s, %s, %s, %s);
|
|
|
''';
|
|
|
- sql_params = (account, uuid, authorization, str(cookies), user_agent, market_id, event_visitor_id, capture_code , update_time);
|
|
|
+ sql_params = (account, uuid, authorization, repr(cookies), user_agent, market_id, event_visitor_id, capture_code , update_time);
|
|
|
cursor = self.db_conn.cursor();
|
|
|
-
|
|
|
cursor.execute(sql_query, sql_params);
|
|
|
+ self.db_conn.commit();
|
|
|
cursor.close();
|