
最近接单了一个芸众商城对接万里牛ERP的单,其实逻辑上来说很简单,接口也比较好实现,但是当推送订单到ERP的时候一直返回签名错误,很奇特的是,有的订单可以,有的不行。
从这个情况来看,应该签名和程序逻辑是没有问题的,那么就开始核对对和不对的两个订单的数据,半天的时间发现没有什么大的区别,就在一筹莫展的时候,想到一个办法,就是把所有非必须的参数去掉,只留下必传的参数(其实这个也只是怀疑可能是某些非必须参数引起的问题),然后去掉之后测试,发现返回错误变了,也就是说签名是通过了,取而代之的是说buyer字段不能为空(其实这个字段是非必须字段,不知道为什么非必须却要求不能为空,存疑,先不管),然后检查对应的值,发现一个很申请的情况,就是可以过签名验证的字串内不含星号(*),不通过的有星号(*),果断过滤掉试一下看看
PHP
,果然,成功通过验证,,,
这个问题其实和其他的比如一个引号,一个分号等这种错误挺像的,因为接口错误提示并不足够详细,所以只能靠排查来调试,总的来说,像类似的问题文档应该有提醒才对,但还好结果是好的,希望对有遇到的朋友可以有所启发..