(支付宝)RSA密钥调试工具的一个坑

最近在开发支付宝支付,在支付宝后台配置的时候,发现了一个问题,困扰了我半天,终于找到了问题,来记录一下.

支付宝开放平台后台需要我们填RSA公钥(由于我填过了,所以这里是修改),如下图:

深度截图_选择区域_20190627150706.png

深度截图_选择区域_20190627150854.png

下一步将我辛辛苦苦生成的公钥添加进去,贴心的支付宝还给我提供了一个”验证功能”避免我们在对接的时候由于公钥/私钥不对而导致的失败:

深度截图_选择区域_20190627151113.png

深度截图_选择区域_20190627151335.png

调试工具上面写着:”请将JSON串 {“a”:”123″}使用填写公钥对应的私钥签名”.

赶紧用我自己的签名方法签名试一下.

深度截图_选择区域_20190627151713.png深度截图_选择区域_20190627151729.png

嗯!很好,我的程序一如既往的让我满意.

于是我把这个签名粘贴到支付宝的调试工具里测试.

WHAT?失败了!

深度截图_选择区域_20190627151942.png

紧接着,我花了几个小时来找bug,曾一度怀疑我的签名和验签方法就是个摆设.但是然并卵,于是我翻出支付宝官方给的demo找问题,结果找到了如下一段:

深度截图_选择区域_20190627152430.png

按照这段逻辑来理解的话,那应该是将json串'{“a”:”123″}’,转成对应的URL参数a=123,于是我再次尝试,

深度截图_选择区域_20190627152740.png

我的程序自然很赏脸,将签名粘贴到支付宝调试工具,终于通过了

深度截图_选择区域_20190627152947.png

法克!支付宝啊支付宝,能不能严谨点?害得我浪费了大半天的时间啊!

如果你也遇到了同样的问题,希望本问恰好帮助到了你.