Code前端首页关于Code前端联系我们

phpapi签名验证,PHP验证

terry 3年前 (2023-09-30) 阅读数 50 #PHP
文章标签 PHP dirname()

本文目录一览:

  • 1、PHP 的API接口
  • 2、PHP版调用淘宝API提示25签名错误Invalid signature
  • 3、微信支付遇到签名验证失败的解决方法

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.欢迎评论,多多交流

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门