USEEPAY V1.0
中文
  • 中文
  • English
UseePay官网
产品文档
  • V2.0版本
  • V1.0版本
收单商户平台
UseePay官网
产品文档
  • V2.0版本
  • V1.0版本
收单商户平台
中文
  • 中文
  • English
  1. 请求签名指南
  • 全球收单
    • 产品说明
    • 集成模式
      • 跳转式收银台模式
      • 内嵌式收银台模式
      • Direct API模式
      • 插件模式
    • 集成之前
      • 开始之前(必读)📘
      • 在SandBox中集成接口
      • 在Prod中上线服务
      • 请求签名指南
        • 加签/验签Demo
        • 加签/验签机制
    • 开始集成
      • UseePay规范
        • 业务结果码(ResultCode)
        • 错误码(ErrorCode)
        • 货币单位和金额规范
        • 国家信息规范
      • 接口集成📗
        • 对象模型
        • 跳转式收银台接口
          • cashier 接口说明
          • paymentMethod参数说明
          • googlepay
            • GoogePay须知
            • googlepay
          • applepay
            • 判断当前设备是否支持applepay
            • applepay
          • wechat_native
            • 关于微信退款
            • wechat_native - 微信扫码支付
          • wechat_h5
            • 关于微信退款
            • wechat_h5 - H5支付
          • cashier 📌
          • credit_card
          • bancontact
          • boleto
          • giropay
          • Ideal
          • klarna
          • konbini
          • oxxo
          • payeasy
          • pix
          • sofort
        • 内嵌式收银台接口
          • 信用卡
            • 2.x 版本内嵌收银台
            • 内嵌订阅收银台
            • 版本更新说明
            • 1.x版本内嵌收银台
          • applepay & googlepay
            • 内嵌方式对接2.0.0
          • create token
        • Direct API接口
          • googlepay
            • GoogePay须知
            • googlepay
          • applepay
            • 判断当前设备是否支持applepay
            • ApplePay API接入流程
            • ApplePay API接入流程备份
            • ApplePay Merchant Identifier
            • applepay
            • ApplePay商户Session
          • wechat_native
            • 关于微信退款
            • wechat_native - 扫码支付
          • wechat_jsapi
            • 关于微信退款
            • 小程序支付
            • 微信公众号支付
            • wechat_jsapi - 微信原生支付
          • konbini
          • payeasy
          • klarna
          • alipay
          • alipay_cn/alipay_hk
          • giropay
          • sofort
          • Ideal
          • boleto
        • 订单相关接口
          • 订单通用接口
            • 订单查询Query
            • 订单退款Refund
            • 订单预授权完成(Capture)
            • 订单预授权撤销(Void)
          • 拒付接口
            • 拒付流程说明
            • 拒付查询
          • 通知接口
            • 交易通知
              • 同步/异步通知
              • webhook版本升级一览
              • webhook
            • 拒付通知
              • 拒付webhook
          • 物流接口
            • 物流信息上传 2.1版
            • 物流信息查询 2.1版
          • 订单数据拉取 - SFTP
            • SFTP
      • 测试资源-SandBox
        • UseePay测试卡💳
        • 信用卡测试案例
        • 本地化测试案例
        • ApplePay&& Google Pay测试用例
        • 退款测试案例
      • 插件集成
        • Shopify(直连内嵌收银台)
        • Shopify(跳转收银台 & Google pay & Apple pay)
        • Shopify(本地化 & Google pay & Apple pay)
        • Shoplazza店匠
        • Shopline
        • Shopline(Google pay & Apple pay)
        • AllValue有赞
        • Shopexpress微盟
        • Shopyy
        • Xshoppy
        • 2cshop
        • Meshop
        • UEESHOP
        • FPP
        • Shopbase(暂停使用)
        • Shoptop
        • Shopastro
        • Magento
        • Woocommerce/WordPress
        • OpenCart
        • PapPal支付绑定
        • Alipay支付绑定
        • 万全云
        • Fecify
        • magento - Wechat/Alipay/UseePay Payments
        • shopify其他
          • Afterpay分期付款组件展示
          • Googlepay&Applepay名称修改
          • 如何增加卡组织logo
          • UseePay商户订单号匹配Shopify店铺订单
    • MC收单平台操作手册
      • 商户号查找
      • Appld查找
      • 域名添加
      • 域名证明下载
      • Shopify-SecurityKey查找
      • 密钥查找
      • 交易订单查找
      • 订单失败原因查看
      • 退款查询
      • 退款处理
      • ARN查询方式
      • 银行账号添加
      • 提现操作
      • 黑名单添加
      • 白名单添加
      • 新增操作员设置
      • 添加邮箱提醒
      • 物流上传
      • 对账单下载&查询
      • 争议订单处理
      • 拒付处理
      • 拒付预警处理
      • 重置密码
    • 附录
      • 本地化汇总
      • FAQ
        • 常见问题解答
        • 集成和认证
        • ueeshop配置常见错误
        • ApplePay常见问题
        • 支付和预授权的区别
      • 过期文档
        • applepay&googlepay 内嵌1.0.0
        • 参数对象说明(过期)
  • 数据模型
    • 示例数据模型
      • Pet
      • OrderInfo
      • Category
      • Tag
  1. 请求签名指南

加签/验签机制

为什么需要对请求加签/验签?
📌基于安全策略规范,您与 UseePay 的所有交互请求必须在发送与接收环节均通过签名 / 验签机制实施双向核验。
📌发送端需基于特定加密算法生成请求签名,接收端则通过对应验签规则验证签名有效性,从而确保请求数据的真实性与完整性,以防范数据篡改、身份伪造,重放攻击等安全风险。
UseePay支持MD5、RSA、HMAC签名算法。(自建站用户请忽略HMAC秘钥)
请注意
无论是 MD5 还是 RSA 方式, sign 和 value trim后为空的 key-value 都不参与签名计算过程!

1. MD5秘钥#

1.1 获取MD5秘钥#

在 商户后台管理系统 -> 配置中心->密钥管理中点击获取MD5密钥
image.png
📌

1.2 MD5签名生成规则#

1
排序
步按照ASCII码升序的方式,对请求的payload进行排序
2
遍历并拼接
对第一步的排序结果,进行key-value 遍历, 对value trim后不为空的 key-value ,使用 URL 键值对的格式进行拼接,得到(key1=value1&key2=value2&...)格式的字符串
3
签名
在第2步取到字符串末尾,按照 “&pkey=商户的MD5密钥” 的形式拼接上商户的MD5秘钥, 然后对该字符串进行MD5, 得到的值即为签名值
如下(案例仅演示签名过程,对其他内容无任何参考意义)
1
原始请求体
   {
     version = 1.0,
     transactionType = pay,
     appId = 假设这里为空,
     amount = 1234,
     currency = USD
    }
2
排序后
 {
   amount = 1234,
   appId = 假设这里为空,
   currency = USD,
   transactionType = pay, 
   version = 1.0
 }
3
遍历并组合后
4
签名
在上述字符串末尾,按照 “&pkey=商户的MD5密钥” 的形式拼接上商户的MD5秘钥, 然后对该字符串进行MD5, 得到的值即为签名值sign

1.3 MD5加签流程#

商户加签:
1)用户获取MD5秘钥
2)用户按照MD5签名生成规则对请求负载生成签名值sign,并在请求中携带sign
UseePay加签:
1)UseePay获取提供给用户的MD5秘钥
2)UseePay按照签名规则对响应数据加签,并在响应数据中携带sign
MD5签名生成示例:

1.4 MD5验签流程#

商户验签:
1)商户按照MD5签名生成规则,对UseePay响应的数据进行MD5计算,得到一个计算值。
2)商户将这个计算结果与UseePay响应数据中的sign值进行比对。
比对一致代表来自UseePay的数据未被篡改,可以信任,否则不信任该响应数据。
UseePay验签:
1)UseePay按照MD5签名生成规则,对商户的请求数据进行MD5计算,得到一个计算值。
2)UseePay将计算结果与商户请求中的sign进行比对。
比对一致代表数据未被篡改,可以信任本次来自商户的请求,否则提示验签失败。
MD5验签示例:

2. RSA秘钥#

使用RSA签名时,共存在两个密钥对:UseePay密钥对(UseePay提供)和商户密钥对(商户提供)。
两个密钥对的公钥对双方公开,用于加签。私钥各自保密存储,用于验签。

2.1 RSA秘钥准备#

2.1.1 生成商户RSA密钥对#

访问RSA密钥对生成网站,如 http://www.metools.info/code/c80.html 生成一个RSA密钥对,RSA秘钥的长度为1024bit,秘钥格式为PKCS#8。如下:
image.png

2.1.2 上传商户RSA公钥#

在商户后台管理系统 -> 配置中心 -> 秘钥管理 -> RSA秘钥处上传RSA公钥
注意, 请将公钥字符串中的首行(-----BEGIN PUBLIC KEY-----)与尾行(------END PUBLICK KEY-----)删除, 然后将中间部分格式化为一行粘贴进去
image.png
无格式粘贴:
image.png

2.1.3 保存 UseePay RSA 公钥#

image.png
如上图, 请保存 UseePay RSA 公钥。
UseePay对所有的响应数据, 会使用UseePay RSA私钥进行签名, 并返回 sign 值, 你需要使用此处的UseePay RSA公钥进行验签。
📌

2.2 RSA签名生成规则#

1
排序
步按照ASCII码升序的方式,对请求的payload进行排序
2
遍历并拼接
对第一步的排序结果,进行key-value 遍历, 对value trim后不为空的 key-value ,使用 URL 键值对的格式进行拼接,得到(key1=value1&key2=value2&...)格式的字符串
3
签名
对第2步取到字符串, 用之前在网站中生成的商户 RSA 私钥做 base64, 得到一个 sign 值

2.3 RSA加签#

UseePay
1)UseePay在向商户响应的数据时,须使用UseePay的私钥进行签名,并在响应数据中携带签名值sign。
2)商户在接收到UseePay的响应数据后,使用UseePay密钥对的公钥(已公开)进行验签,以验证响应数据是否被篡改。
商户
1)商户响应给向UseePay的请求数据,须使用商户RSA的私钥进行签名,并在请求中携带签名值sign。
2)UseePay在收到商户的请求之后,使用商户上传的RSA公钥进行验签,以确保请求数据未被篡改。
RSA签名示例

2.4 RSA验签#

RSA验证签名需要按 RSA签名生成规则 对 response 生成 URL key-value 格式的字符串, 然后使用 UseePay RSA 公钥进行签名验证。
修改于 2025-09-04 02:29:00
上一页
加签/验签Demo
下一页
业务结果码(ResultCode)
Built with