qq 登录修复
This commit is contained in:
@@ -480,6 +480,8 @@ def main() -> int:
|
||||
p.add_argument("--role-name", default=None, help="游戏角色名称;默认使用模板当前角色")
|
||||
p.add_argument("--zone-id", default=None, help="游戏区服 ID;默认使用模板当前区服")
|
||||
p.add_argument("--zone-name", default=None, help="游戏区服名称")
|
||||
p.add_argument("--area", default=None, help="游戏大区 ID(QQ 平台与 zoneid 不同,来自角色查询的 partition_info)")
|
||||
p.add_argument("--partition", default=None, help="游戏分区 ID(QQ 平台可为空)")
|
||||
p.add_argument("--pf", default=None, help="支付平台标识;由角色选择器按 Android/iOS 写入")
|
||||
p.add_argument("--output", default=None)
|
||||
p = msub.add_parser("pay", help="mall 下单 -> goods web_save -> 微信支付二维码(纯 Python)")
|
||||
@@ -624,8 +626,17 @@ def _apply_card_selection(payload: dict, args) -> None:
|
||||
zone_id = getattr(args, "zone_id", None)
|
||||
if zone_id:
|
||||
product["zoneid"] = zone_id
|
||||
product["area"] = zone_id
|
||||
payload["zoneid"] = zone_id
|
||||
# QQ 平台的大区(area)与 zoneid 不同,来自角色查询的 partition_info;
|
||||
# 必须用真实 area,否则 PlaceOrder 校验角色失败(gamerole err)。
|
||||
area = getattr(args, "area", None)
|
||||
if area:
|
||||
product["area"] = area
|
||||
elif zone_id:
|
||||
product["area"] = zone_id
|
||||
partition = getattr(args, "partition", None)
|
||||
if partition is not None:
|
||||
product["partition"] = partition
|
||||
zone_name = getattr(args, "zone_name", None)
|
||||
if zone_name:
|
||||
product["zonename"] = zone_name
|
||||
@@ -696,12 +707,22 @@ def cmd_mall_auto(args) -> int:
|
||||
out.write_text(raw, encoding="utf-8")
|
||||
js = json.loads(raw)
|
||||
ret = js.get("result_code")
|
||||
if ret == "0":
|
||||
cr = json.loads(js["data"]["call_reply"])
|
||||
print(f"✅ 仅CK全自动下单成功! token={cr['data']['token'][:24]}...")
|
||||
try:
|
||||
call_reply = json.loads(js["data"]["call_reply"])
|
||||
except (KeyError, TypeError, json.JSONDecodeError):
|
||||
call_reply = {}
|
||||
# PlaceOrder 业务失败(如 10014 gamerole err)时外层 result_code 仍可能为 0,
|
||||
# 必须检查 call_reply 的 result_code,避免把失败当成功后再崩溃。
|
||||
inner_ret = call_reply.get("result_code")
|
||||
if ret == "0" and str(inner_ret) in ("0", "None", ""):
|
||||
data = call_reply.get("data") or {}
|
||||
token = str(data.get("token") or "")[:24]
|
||||
print(f"✅ 仅CK全自动下单成功! token={token or '(无 token)'}...")
|
||||
print(f" 响应已保存 → {out}")
|
||||
return 0
|
||||
print(f"❌ 下单失败 ret={ret} ({js.get('result_info', '')})")
|
||||
detail = js.get("result_info", "") or call_reply.get("result_info", "") or ""
|
||||
print(f"❌ 下单失败 ret={ret} inner={inner_ret} ({detail})")
|
||||
print(f" 响应已保存 → {out}")
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user