在做p2p配资平台,也就是公司的项目,遇到了一个问题:refund_fastpay_by_platform_nopwd接口服务器通知验签不通过
下面是实录:
通知服务器的POST过来的数据:
- 1.sign=Fm5dDlD0dMhj04f4xrFPf6nf5MWXb9pXGHCceZLIqkA2yo26z0HXxqMinJTxSlb2Y0eMg5fJ5J8J065aHYMgnijbxayiLkusW%2fMhNDSUNU09zcFpgMqoPve27BRVEuP04GN%2fXuGre%2fcO4HJaSLWwr8YiLHi6Dt6X5DTqOB3nhWY%3d&result_details=2013020157064863%5e0.00%5eSUCCESS%24yueke%40ykse.com.cn%5e2088601269538446%5e0.00%5eSUCCESS%7cjason_qq_ming%40qq.com%5e2088002104387632%5eyueke%40ykse.com.cn%5e2088601269538446%5e0.01%5eROYALTYER_NOT_SIGN_PROTOCOL¬ify_time=2013-02-07+16%3a46%3a49&sign_type=RSA¬ify_type=batch_refund_notify¬ify_id=853e7fc00b1e2de5ff192d25ac59997607&batch_no=201302071360226808128&success_num=1
我提取出来的待验证字符串:
- 1.batch_no=201302071360226808128¬ify_id=853e7fc00b1e2de5ff192d25ac59997607¬ify_time=2013-02-07 16:46:49¬ify_type=batch_refund_notify&result_details=2013020157064863^0.00^[email protected]^2088601269538446^0.00^SUCCESS|[email protected]^2088002104387632^[email protected]^2088601269538446^0.01^ROYALTYER_NOT_SIGN_PROTOCOL&success_num=1
商家的支付宝公钥没有问题(以前的即时到帐等接口的验签都正常)。
解决办法:
第一我想到的是:可以在异步通知里面借助于日志语句,看下返回验证语句里面具体是哪一个条件没有通过。
但因为是签约就失败,所以上述不成立。但是,可以借助于日志内容来判断究竟是哪一个条件不能成立。但是问题来了:
我按照文档将通知内容整理好之后去验签。
是验签不通过啊,是验签啊。
验签不是按项分的啊,是要组合成一个字符串然后送过去验签啊。
就是说问题应该是出在重新组合待签字符串时候出的问题,但是这个我是完全按照文档里面描述的流程去做的。
最后找出的原因是:移动和网关是两个的支付宝公钥是不同的!