专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

微博支付之验证微博消息的真实性

微博支付,微博支付验证消息

因公司项目需求,需要接一下微博的一些接口、虽然看起来应该是跟微信公众平台的一样,但是无奈文档做的实在是太烂了,都没有一个明确的目录,幸亏之前接过微信公众平台,也算是有点经验。 【所谓验签】 在开发者首次使用事件推送服务时,需要先通过一次校验来和微博服务器建立首次连接;微博服务器发送GET请求到开发者填写的URL上,校验参数如下表所示:

校验参数字段 字段类型 字段说明
signature string 微博加密签名,signature结合了开发者appsecret参数和请求中的timestamp参数,nonce参数
timestamp string 时间戳
nonce string 随机数
echostr string 随机字符串

signature参数的加密规则为:将appsecret参数,timestamp参数,nonce参数进行字典排序后,将三个参数字符串拼接成一个字符串进行sha1加密;开发者收到请求后,首先通过加密后的signature参数来校验GET请求的真实性,如果确认此次GET请求来自微博服务器,原样返回echostr参数内容就可以成功建立首次连接,否则连接失败。

建立首次连接后,后续每次微博事件推送时也都会带上signature、timestamp、nonce三个参数,开发者依然可以通过对signature的校验判断此条消息的真实性。校验方式与首次建立连接一致。

<?php
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    $echostr = $_GET['echostr'];
    $token = YOUR_APP_SECRET;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    if( $tmpStr == $signature && $echostr){
        echo $echostr;
        exit;
    }else{
    ////DO something
    }

其实和微信开放平台的消息验证是一样的,只不过微博把token换成了appsecret字段,另外这个文档很难找,我还是百度才找到的相关说明。

文章永久链接:https://tech.souyunku.com/45234

未经允许不得转载:搜云库技术团队 » 微博支付之验证微博消息的真实性

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们