# 1. 商户订阅事件通知 - 签名流程

# 签名流程

  • 参与加密的参数:不包括字节类型参数,如文件、字节流,剔除 sign 字段,剔除值为空的参数(包括:null 和空值);
  • 按照第一个字符的键值 ASCII 码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,以此类推;
  • 将排序后的参数与其对应值,组合成 参数=参数值 的格式,并且把这些参数用 & 字符连接起来,此时生成的字符串;
  • 将参数拼接的字符串结尾处拼接商户密钥 &secret=${secret} 形成最终原始字符串
  • 使用sha1算法对原始字符串进行加密

# 签名原字符串事例Java Demo

String originString = "amount=100.00&appId=f90addc4861540ef9312e87d8f360e08&version=1.0";
originString = originString + "&secret=xxxxxxx";
DigestUtils.sha1Hex(originString);