1. 密钥配置
填入后自动派生商户公钥指纹(SHA-256),应与平台上该商户公钥指纹一致。
联调模式:本地生成模拟平台密钥对(位数跟随商户密钥;私钥仅存本次会话内存,用于「模拟平台响应」),生产环境请粘贴平台下发的真实公钥。
2. 构造请求(商户 → 网关)
SDK 代码片段(六语言)
基于 wop-sdk-spec 概念 API 推导,最终以官方 SDK 为准
片段为推导示例(wop-sdk-spec §2 概念 API),非可执行代码;接入请以官方 wop-<lang>-sdk(v0.1.0,MIT)为准
构造结果
调试:canonicalRequest(签名串原文)
canonicalRequest 逐段解析(每一行来自哪个字段)
差异检测:粘贴 / 修改你的 canonical,实时比对
每行状态:绿 = 与自动生成一致;红 = 同位置内容有差异;灰 = 未参与(手工串多出的行,或自动生成有而手工串缺失的行)
请求头(点击值可复制)
线上请求体(x-wop-content-digest 即对此串取摘要)
curl 命令
3. 验证平台报文(同步响应 / 异步回调)
粘贴平台侧报文(网关同步响应,或平台主动发起的异步回调)的头与体,逐项复核验签 / 摘要 / 解密。两类报文处理逻辑一致,仅 canonical 的 URI 不同:响应取网关 API 路径,回调取回调 URL 的 path。联调模式下也可直接本地模拟闭环。
校验顺序对齐 wop-sdk-spec v1.0-ratified(F6):验签 → digest 复核 → DEK 解包 → alg 族比对 → bulk 解密。
粘贴原始 HTTP 报文,自动解析填充(可选)
支持商户请求与平台响应(同步 / 异步回调)两个方向的 HTTP/1.1 报文:起始行 + 头 + 空行 + body。解析后自动填入下方各头字段与报文体;缺失或格式非法的字段逐项提示。
验证结果
解密后的报文明文
调试:报文 canonicalRequest
平台 → 商户回调 curl(用于自测您的回调接收端点;报文格式为推演契约)
平台错误码诊断(62 码公共契约字典)
粘贴平台返回的错误响应信封 {"code":"OP_GW_1022","msg":"…","traceId":"…"}(或整个错误响应报文、裸错误码),给出类别、含义、处置建议与可重试性。字典对齐网关公共契约(62 码,分类/对外语义冻结)。
黄金向量自测
内置 wop-specs 黄金向量(fixture 只读副本,禁手改),一键跑字节级断言:正向量(摘要 / AES-GCM 密文 / DEK 载荷 / OAEP 解包)必须一致,负向量(跨族 / 格式错误 / 尾位非规范 / MGF1 陷阱)必须拒绝;rsa2048 商户签名因上游黄金向量暂无 2048 条目,以 TEST-ONLY 教学向量对拍。全部通过才显示绿色横幅(横幅含教学向量注记)。
跨语言 canonical 对拍向量
javaUrlEncode / trimall / canonicalHeaders / buildCanonical 的字节级期望值(17 正向量 + 6 陷阱断言见上方断言结果)。供商户服务端跨语言实现(Java / Go / Python…)移植对拍:任一语言实现对下表输入逐条产出期望输出,即与本工具签名语义对齐。语义锚 = entry-wise 实现:逐项规范化键并携带各自值,再按码元升序排序。
示例契约(基于 wop-sdk-spec 与网关测试样例构建),待正式 OpenAPI 替换
数字信封图解(L0/L2)
签名与信封加密的层级关系:L2 报文的 digest 摘要对象是密文、DEK 经 RSA-OAEP 包装;演示密钥均为 TEST-ONLY(digest/信封对拍 wop-specs 黄金向量,商户签名钥 rsa2048 为本地教学向量)
层级图:出站构造(商户)与入站校验(网关)
交互演示:真实执行四步(密码学调用为真,非动画)
2签名产物(SHA256withRSA · 商户私钥)
3L2 信封(AES-256-GCM 密文 + RSA-OAEP DEK 包装)
错误路径演示:改坏一个字节,看拦截落在哪一步
前三项为 MITM 传输篡改(改任何入签头必先破签);末项为构造侧缺陷:损坏 DEK 后以商户私钥重签,签名/摘要均有效(未演示过则先按当前输入构造一次)