1. 默认模块
Wayflow
  • 默认模块
    • 接入指南
    • 认证与签名
    • 加密与解密
    • Webhook 通知
    • 错误码与重试
    • 关于SDK
      • SDK 使用指南
      • PHP 快速开始
      • Java 快速开始
      • Node.js / TypeScript 快速开始
      • Python 快速开始
      • Go 快速开始
    • 卡产品组
      • 卡产品组列表(分页)
        POST
      • 卡产品组列表(非分页)
        POST
      • 卡产品组详情
        POST
    • 卡产品
      • 卡产品相关字典
        • 费用模型字典
        • 舍入模式字典
      • 卡产品列表(分页)
        POST
      • 卡产品列表(非分页)
        POST
      • 卡产品详情
        POST
    • 卡钱包
      • 卡钱包划转
        • 卡钱包转出
        • 卡钱包转入
      • 卡钱包相关字典
        • 交易订单状态字典
        • 交易订单流向字典
        • 交易订单审批状态字典
      • 卡钱包查询
        • 卡钱包列表(分页)
        • 卡钱包列表(非分页)
        • 卡钱包详情
    • 卡片交易
      • 交易查询
        • 卡片交易列表(分页)
        • 卡片交易列表(非分页)
        • 卡片交易详情
      • 卡片交易相关字典
        • 交易类型字典
        • 交易状态字典
        • 交易商户国家字典
        • 交易资金流向字典
    • 卡钱包交易
      • 卡钱包交易订单
        • 卡钱包转账订单列表(分页)
        • 卡钱包转账订单列表(非分页)
        • 卡钱包转账订单详情
        • 取消卡钱包转账订单
      • 卡钱包交易流水
        • 卡钱包流水列表(分页)
        • 卡钱包流水列表(非分页)
        • 卡钱包流水详情
    • 卡片
      • 卡片查询
        • 卡片列表(分页)
        • 卡片列表(非分页)
        • 卡片详情
        • 查询卡片敏感信息
      • 卡片发行
        • 发卡预检
        • 发卡
      • 卡片更新
        • 消费控制配置示例
        • 更新卡片消费规则
        • 更新卡片别名
      • 卡片状态操作
        • 卡片冻结
        • 卡片解冻
        • 卡片注销
      • 卡片任务
        • 发卡任务详情
        • 发卡任务明细(分页)
        • 批量修改卡片状态
        • 卡片状态任务明细(分页)
        • 卡片状态任务详情
      • 商户查询
        • 商户列表(分页)
        • 商户详情
      • 卡片相关字典
        • 卡片状态字典
        • 国家字典
        • 消费限制类型字典
        • 消费限额周期字典
        • 时区字典
  1. 默认模块

加密与解密

用 PHP SDK 加密和解密#

初始化#

安装 SDK 后,配置四份密钥。以下示例中的文件路径、API Key 请替换为自己的配置。

1. 加密发卡请求#

$payload 是按发卡接口填写的业务参数;$idempotencyKey 是业务侧生成并保存的幂等键,同一业务重试复用。
SDK 自动生成加密信封并签名,不需要自行加密或再次包装 Body。另两种加密发卡接口使用相同方法,替换路径和业务参数即可。

2. 解密卡片敏感信息#

请求发送普通 JSON。保存本次请求 ID,响应验签成功后,将 data 和本地请求 ID 交给 SDK 解密。
post() 自动验签;decryptSensitiveEnvelope() 自动核对指纹、重建 AAD 并解密。任一步抛出异常时停止处理。

3. 接收 Webhook#

在回调地址的 PHP 处理程序中使用同一份本地配置:
handle() 自动验签、检查接收方并解密。失败时不返回成功;不要先解析再重新序列化原始请求体。

接收顺序:验签 → 校验指纹并重建 AAD → 解密 → 校验明文。 签名规则统一见认证与签名。

准备配置#

配置用途
平台鉴权公钥验证响应和 Webhook 签名
平台加密公钥及指纹加密发送给平台的请求
客户端加密私钥及配对公钥指纹解密并核对信封接收密钥
接收方 API Key 业务 IDWebhook 接收方校验及 AAD;从开发者中心对应 API Key 取得
指纹格式为 SHA256:<64 位小写 hex>,摘要对象为公钥的 SPKI DER 字节。指纹不匹配时,到开发者中心核对该 API Key 登记的加密公钥及轮换记录;不要直接信任信封提供的指纹。

信封与算法#

{
  "algorithm": "RSA-OAEP-AES-256-GCM",
  "keyFingerprint": "SHA256:<公钥指纹>",
  "encryptedKey": "<标准 Base64>",
  "ciphertext": "<标准 Base64>",
  "aad": "<标准 Base64>"
}
Webhook 信封另含 envelopeVersion: 1。敏感 API 响应的信封位于 data,Webhook 信封是整个请求体。
项目规则
密钥包装RSA-OAEP,SHA-256、MGF1-SHA-256,空 Label
内容加密AES-256-GCM,32 字节密钥、12 字节 IV、16 字节 Tag
ciphertext 布局将 IV、密文、Tag 按顺序拼接,再进行 Base64 编码
明文UTF-8 JSON
严格校验 Base64、算法及长度。GCM 认证失败立即终止,不解析或使用部分解密结果。兼容字段 encryptedPayload 不作为解密输入。

三种 AAD#

四段以 | 连接后取 UTF-8 字节。使用本地上下文重建,再与严格 Base64 解码后的信封 aad 做长度校验及常量时间比较。
场景第 1 段第 2 段第 3 段第 4 段
加密请求本次请求 ID接口 routeTemplate本次 X-Timestamp平台加密公钥指纹
敏感响应本次请求 ID空字符串加密时间戳客户端加密公钥指纹
Webhook投递 ID固定字符串 webhookX-SlaunchX-Timestamp本地接收方 API Key 业务 ID
四段之间仅添加分隔符,不添加空格。敏感响应第二段为空,实际包含连续两个 |。

敏感响应时间戳#

当前生产从信封 aad 获取第三段时间戳。先完成响应验签,再严格解析四段;仅提取时间戳,用本次发送的请求 ID 和本地公钥指纹重建完整 AAD。不要采用回显的请求 ID 或指纹替代本地值。
时间戳由 GCM 的 AAD 认证校验,不可替换成 X-Response-Timestamp。格式和 AAD 比对通过后仍须完成 GCM 认证。

Webhook 接收方#

核对 X-SlaunchX-Key-Id 等于本地配置的接收方 API Key 业务 ID。AAD 第四段使用本地值,不是公钥指纹。解密后再次核对 deliveryBizId 和 eventType 与已验签请求头一致。

加密请求#

以下发卡接口必须发送加密信封:
POST /card-products/10010105/cards/create
POST /card-products/10010106/shared/cards/create
POST /card-products/10010106/prepaid/cards/create
发卡预检发送普通 JSON。其他接口仅在接口定义明确标注加密时使用。
1.
准备业务参数、持久化的幂等键及请求 ID。
2.
使用本次时间戳构造 AAD,生成信封。
3.
信封只序列化一次,对实际发送字节签名。
4.
发送 X-Request-Id、X-Platform-Encryption-Key-Id 及接口要求的幂等键。
使用 SDK 时传入业务参数和加密选项即可,不手动包装第二层信封。建议先完成发卡预检;单张和多张均通过返回的批次 ID 查询结果。

查询卡片敏感信息#

调用 POST /card-products/cards/sensitive/reveal 时,请求发送普通 JSON,不包装加密信封;响应的 data 是加密信封,按上述顺序验签和解密。解密后的明文字段:
字段类型与校验
pan字符串,12–19 位数字
cvv字符串,3–4 位数字
expiryMonth整数,1–12
expiryYear整数
私钥及 PAN、CVV、解密明文仅在受控服务端流程内使用,不写入日志或错误报告。
Node.js 的 Fetch 响应头使用 headers.get();Node HTTP 服务端的 Webhook 请求头是小写键对象,例如 req.headers['x-slaunchx-timestamp']。不要混用两种读取方式。
首次调用示例见 SDK 指南,各语言加密和接收器接口以对应交付版本的 README 为准。
修改于 2026-09-15 15:47:06
上一页
认证与签名
下一页
Webhook 通知
Built with