结算流程用真实下单证据修正:新卡代填 iframe vault、订单号正则、登录态判据
- 新卡代填改用真实 DOM 结构:卡号/有效期分别托管在 Rakuten PCI 代付 vault 的 跨域 iframe 里,此前按 autocomplete/name 猜的 selector 在主文档里根本找不到 元素;持卡人姓名字段改用「名義人」标签相对定位,不用 placeholder 示例文案 (TARO RAKUTEN 只是示例用户名,不是稳定标识) - 订单号正则修正 实体导致的分隔符匹配失败(2026-08-13 真实下单验证) - login_runner._is_logged_in 改用与 AuthSession 一致的 __INITIAL_STATE__ 判据, 修掉此前误判「已登录」导致保存无效 storage_state 的问题 - 新增 CheckoutBlockedError:站点风控拦截(session upgrade/3DS)转 needs_human, 不当普通失败重试 - account.yaml 支持 phone / payment.credit-card 字段 - data/evidence/(真实 PII)加入 .gitignore Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -108,6 +108,9 @@ class Settings(BaseSettings):
|
||||
# 下单金额上限(日元)。实际应付金额超过该值时拒绝提交,防止解析出错或
|
||||
# 页面改版导致买到远超预期的订单。设为 0 表示不设上限(不建议)。
|
||||
order_max_total_yen: int = 30000
|
||||
# 自动下单时在支付方式页选择的选项文案(按可见文案匹配,非 value/id)。
|
||||
# 2026-08-11 未经真实确认页验证:见 site_interact.py::_select_payment_method。
|
||||
order_payment_method: str = "クレジットカード"
|
||||
|
||||
# ---- 自动重登(仅交易服务,需要 account.yaml)----
|
||||
# 检测到登录态失效时,是否在 require_logged_in 内自动触发重登。需要项目根
|
||||
|
||||
@@ -172,6 +172,23 @@ class OrderGuardError(AppError):
|
||||
super().__init__(message=message, code="ORDER_GUARD", err_code=5004, retryable=False)
|
||||
|
||||
|
||||
class CheckoutBlockedError(AppError):
|
||||
"""结算流程被站点风控拦截(session upgrade 二次验证 / 3DS / 短信验证等)
|
||||
|
||||
对应 docs/order-gateway.md §10.1:这类阻断不是本服务的 bug,也不是普通的请求失败,
|
||||
是站点主动要求人工验证。实测记录(data/evidence/checkout-research-20260811/NOTES.md):
|
||||
session upgrade 密码页多次自动提交均未能确认稳定通过,行为更像是站点对自动化环境
|
||||
的针对性降级,而非偶发网络问题——**不适合原地重试**,重试只会累积同账号的失败验证
|
||||
次数,增加被风控盯上/锁定的风险。
|
||||
|
||||
worker 收到这类错误应停在当前进度并上报 needs_human,交人工用有头浏览器接管当前
|
||||
登录态完成验证,而不是当成普通失败(retryable/FAILED)处理。
|
||||
"""
|
||||
|
||||
def __init__(self, message: str = "结算流程被站点风控拦截,需人工介入"):
|
||||
super().__init__(message=message, code="CHECKOUT_BLOCKED", err_code=5005, retryable=False)
|
||||
|
||||
|
||||
# ---- 下单任务编排(仅网关进程 app.gateway.main 使用)----
|
||||
# 下单不可逆,因此任务队列侧的错误一律标记 retryable=False——重复入队/重投
|
||||
# 都可能变成重复下单。详见 docs/order-gateway.md §8。
|
||||
|
||||
Reference in New Issue
Block a user