微信刷脸支付获取调用凭证authinfo的时候,总是提示 rawdata无效
场景描述
终端、服务端、微信端;
终端调用刷脸SDK生成rawData,将rawdata传给服务端,由服务端拼装参数后透传给微信;
现象:微信侧一直返回【无效的rawdata数据】;
<xml>
<return_code>
<![CDATA[ERROR]]>
</return_code>
<return_msg>
<![CDATA[无效的RawData数据]]>
</return_msg>
<nonce_str>
<![CDATA[TjZgFf3PAa3iED4dJQnAT176UQEkIbvF]]>
</nonce_str>
<sign>
<![CDATA[4612A491476326824528828650BEAAF3]]>
</sign>
</xml>
排查过程
入参示例
<xml>
<appid>wxappid</appid>
<mch_id>mch_id</mch_id>
<sub_mch_id>sub_mch_id</sub_mch_id>
<nonce_str>ABCDEFGHi202104220916079199341</nonce_str>
<sign>8CD3547119E9EAF70A5E8323969FA01E</sign>
<sign_type>MD5</sign_type>
<organization_id>organization_id</organization_id>
<store_id>K12</store_id>
<store_name>K12</store_name>
<device_id>device_id</device_id>
<rawdata>IH7VF0j/CFvr8xoHDO4l+WzVAaan8Yra55FdlOhcU+iG1vGYNEsoHwVQFfeveGCldXLaN87TCdJDmCpZEisYA+SZcvc06aC+2XD8ktU56YUVd6KemxxXZU+3IS+lB9ZIysjy+jfuUjdItxXkfNumELjjzcyJGoSuMJUlQfxjVP8ibj3NsrKYoJDHpV0KS0PZzzAXssPTnUMfbW/Oed5hAXoX/JV7hrVlt8w2HVtDAQOTuQqhdGrbc9YWHF74E9m59dB3OIji87eYog1IoOdMDnDM+uStfoZJo/VYXGG4eO+e9TlFKwKkCTo+kMETZPs9xqfp6WcFrd+aqQQ7usqoAse8ZxyqS3iPyH4jNxMFnu/ebomi8fJIf6ZmG99kkqWtO+md/VmWYkE8BY33EtkMI0M8ogu3D/fcB7Zc+zPAuLsA+RPGvPLh6Et3nox5/70djJAwWT6JI6LeoezH77cPNHi03NKb47c3xZUgLjt4b9mgCPiG0yADtj+bSJhpNPdcTnLzos0e0xtcOwZxccxmzxR7XmgSGILtmknKV0RhBssBoy0yRfxVNEyYP6ltSfrBKeHWXUWZzdvtvGlINbgbAiLhiriWNk9QhaH/KLUT2P1Rym6Zg0fF02iCf2Gt+UEEA2InCezqxWWliKd013RtqwTd0aJIZno=</rawdata>
<now>1619054167</now>
<version>1</version>
</xml>
各种参数都检查了一遍,均没有发现问题;
原因
官方答复:先确认下设备时间是否正常,或者清除下缓存;
真正原因
谜底就在官方答复中;只是本地情况较复杂,比较难浮现
终端在生成rawdata之前从服务端同步了一次时间,同步的时间是错误的,导致终端和服务端时间差异太大,但是查看时间的时候发现不了这个问题;导致终端生成的rawdata始终是无效的;应该是rawdata中包括了时间信息,会和传入的now字段或者微信时间进行比对,差距超过5分钟以上则任务是无效的。