You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在UPI DeepLink URI中生成sign参数值

我来帮你拆解UPI DeepLink里sign参数的生成逻辑,这部分完全遵循UPI官方的签名规范,步骤清晰且有明确的规则约束:

核心前提

首先要明确:sign参数是用来验证DeepLink合法性的签名,必须由收款方(商户)的后端服务器生成——绝对不能在客户端生成,否则会导致私钥泄露,带来严重的安全风险。

具体生成步骤

  1. 拼接待签名的原始字符串
    UPI规范要求必须按照固定的参数顺序拼接,顺序为:pa → pn → am → cu → tn。每个参数格式为key=value,参数之间用&连接,注意不要包含sign参数本身。
    举个实际例子:
    假设参数值为:

    • pa=jane@axisbank
    • pn=Jane Smith
    • am=299.99
    • cu=INR
    • tn=Payment for Laptop Repair
      那么待签名的原始字符串就是:
    pa=jane@axisbank&pn=Jane Smith&am=299.99&cu=INR&tn=Payment for Laptop Repair
    

    注意:参数值要保留原始格式(比如pn里的空格不需要转义),顺序绝对不能错——UPI支付应用验证签名时会严格按这个顺序重新拼接,顺序错误会直接导致验证失败。

  2. 使用商户私钥进行签名
    用你在UPI支付服务商处注册获得的RSA私钥,通过SHA-256withRSA算法对上述原始字符串进行签名。这一步必须在后端服务器执行,私钥要严格保密,绝不允许暴露在客户端代码中。

  3. 将签名结果转为Base64编码
    签名后得到的是二进制数据,需要将其转换为Base64编码的字符串,这个字符串就是最终的sign参数值。

完整示例

把生成的sign值加入DeepLink后,最终的URI会是这样:

upi://pay?pa=jane@axisbank&pn=Jane Smith&am=299.99&cu=INR&tn=Payment for Laptop Repair&sign=abc123XYZ...(这里是Base64编码后的签名)

关键注意事项

  • 必须严格遵守参数顺序,这是签名验证通过的核心前提。
  • 所有参数值要和实际传递的完全一致,不能有额外的空格、转义错误。
  • 签名操作必须在后端完成,私钥绝对不能明文存储或在客户端使用。
  • 如果你使用的是第三方UPI支付SDK,部分SDK会提供封装好的签名接口,直接调用即可,但底层逻辑还是遵循上述步骤。

内容的提问来源于stack exchange,提问作者Rahul Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 16:40:50