本文目录一览:
PHP 的API接口
使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道,请求的来源是什么,有可能是别人非法调用我们的接口,获取数据,因此就要使用安全验证
原理
从图中可以看得很清楚,前台想要调用接口,需要使用几个参数生成签名。
时间戳:当前时间
随机数:随机生成的随机数
口令:前后台开发时,一个双方都知道的标识,相当于暗号
算法规则:商定好的运算规则,上面三个参数可以利用算法规则生成一个签名。前台生成一个签名,当需要访问接口的时候,把时间戳,随机数,签名通过URL传递到后台。后台拿到时间戳,随机数后,通过一样的算法规则计算出签名,然后和传递过来的签名进行对比,一样的话,返回数据。
算法规则
在前后台交互中,算法规则是非常重要的,前后台都要通过算法规则计算出签名,至于规则怎么制定,看你怎么高兴怎么来。
我这个算法规则是
时间戳,随机数,口令按照首字母大小写顺序排序
然后拼接成字符串
进行sha1加密
再进行MD5加密
转换成大写。
PHP版调用淘宝API提示25签名错误Invalid signature
Invalid signature
你的appkey无效,这个API是在你对应的appkey生成的SDK文件里面的吗?
换个appkey试试
微信支付遇到签名验证失败的解决方法
1.下单的签名方式使用MD5方式
2.利用下单获取到的prepay_id,来进行调起支付阶段的paySign的签名
3.如果提示签名验证失败:
①首先检查你的5个参数是否完整:timeStamp,nonceStr,package,signType,paySign
②signType 必须是MD5,官方demo不是MD5,改为MD5,这也是大坑,当然我自己用python 写的时候直接用的MD5
③在做paySign签名的时候,需要6个参数,上述5个参数去掉paySign(不参与签名),加上appId(注意是大写I,这是个大坑,这个错了那签名必然失败)和key
④如果上述步骤没问题还是失败,那么去验证以下你的签名是否通过
⑤还有一点签名的时候必须把所有英文全部转为大写
4.欢迎评论,多多交流