Webhook 配置与验签(专业版)
输入
| 字段 | 必填 | 说明 |
|---|---|---|
| endpoint | 是 | 回调URL |
| events | 是 | 订阅事件列表 |
| verify_note | 否 | 验签要点文本 |
输出
回调配置 + 验签要点校验 + 重试计划
Python 引擎(可独立运行)
# -*- coding: utf-8 -*-
def gen_webhook(endpoint, events):
if not endpoint.startswith("https://"):
return None, "回调地址必须为https,拒绝明文"
cfg = {"endpoint": endpoint, "events": events,
"confirm": ["平台后台配置回调", "订阅所需事件", "开通对应权限"]}
return cfg, "OK"
def verify_signature(note=""):
required = ["timestamp", "签名", "防重放", "2xx"]
missing = [k for k in required if k not in note]
if missing:
return False, f"验签要点缺: {missing}"
return True, "验签要点齐全"
def retry_plan(attempts=3, base=1, cap=16):
return [min(base * (2 ** i), cap) for i in range(attempts)]
硬性规则
- 非https回调地址拒绝
- 验签必须含 timestamp/签名/防重放/2xx 四要素,缺则校验不过
- 重试默认3次指数退避,封顶16秒
示例
gen_webhook("https://a.com/hook", ["order"]) → cfg含确认项
verify_signature("含timestamp+签名+防重放+2xx") → True
retry_plan() → [1, 2, 4]