微信公众号生成新浪短网址的实现(快速生成)


Posted in Javascript onAugust 18, 2019

有没有想过,向一个公众号发送长链接,然后公众号给你回复一个短网址?

其实很简单:

微信公众号生成新浪短网址的实现(快速生成)

<?php
define("TOKEN", "xiao");
//用于回复用户消息
function responseMsg(){
  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
  if (!empty($postStr)){
    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
    $fromUsername = $postObj->FromUserName;
    $toUsername = $postObj->ToUserName;
    $MsgT = $postObj->MsgType;
    $time = time();
    //如果用户发的text类型
    if($MsgT=="text"){
      $key = trim($postObj->Content);
      $textTpl = "<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[%s]]></MsgType>
            <Content><![CDATA[%s]]></Content>
            </xml>"; 
      $msgType = "text";

      //生成短网址
      $dwzapi = "http://api.t.sina.com.cn/short_url/shorten.json?source=3271760578&url_long=".$key;
      $dwzpost = file_get_contents($dwzapi);
      $dwzjsondecode = json_decode($dwzpost,true);

      //发送
      $contentStr = $dwzjsondecode[0]['url_short'];
      

      $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
      echo $resultStr;
      exit;

    }else{
      $textTpl = "<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[%s]]></MsgType>
            <Content><![CDATA[%s]]></Content>
            </xml>"; 
      $msgType = "text";
    
      //发送
      $contentStr = "请发送链接";
      

      $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
      echo $resultStr;
      exit;
    }

    //如果用户发的event(事件)类型
    if($MsgT=="event"){
      $Event = $postObj->Event;
      if ($Event==subscribe) {
        $contentStr = "欢迎关注";
      }else{
        $contentStr = "希望您下次关注,但您收不到此条消息了";
      }
      $textTpl = "<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[%s]]></MsgType>
            <Content><![CDATA[%s]]></Content>
            </xml>"; 
      $Title = $postObj->Title;
      $Description = $postObj->Description;
      $Url = $postObj->Url;
      $msgType = 'text';
      $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
      echo $resultStr;
      exit;
    }
  }else{
      echo "不对";
      exit;
  }
}

  $echoStr = $_GET["echostr"];
  //如果有$echoStr说明是对接
  if (!empty($echoStr)) {
    //对接规则
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    if( $tmpStr == $signature ){
      echo $echoStr;
    }else{
      echo "";
      exit;
    }
  }else{
    responseMsg();
  }
?>

配置方法:

1、登录公众号
2、打开基本配置

微信公众号生成新浪短网址的实现(快速生成)

3、填写上面代码的url

微信公众号生成新浪短网址的实现(快速生成)

Token在代码里面自己设置,要对应的,EncodingAESKey随机生成。

4、然后启用这个配置,然后去公众号发送一个url看看!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
批量实现面向对象的实例代码
Jul 01 Javascript
七夕情人节丘比特射箭小游戏
Aug 20 Javascript
javascript中sort() 方法使用详解
Aug 30 Javascript
基于Bootstrap3表格插件和分页插件实例详解
May 17 Javascript
详解AngularJS脏检查机制及$timeout的妙用
Jun 19 Javascript
JS+Ajax实现百度智能搜索框
Aug 04 Javascript
vue的事件绑定与方法详解
Aug 16 Javascript
基于JavaScript实现简单的音频播放功能
Jan 07 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
May 18 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
Jun 28 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
Aug 06 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 #Javascript
详解ES6 Promise的生命周期和创建
Aug 18 #Javascript
vue-cli3配置与跨域处理方法
Aug 17 #Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 17 #Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
Aug 17 #Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
Aug 17 #Javascript
微信小程序移动拖拽视图-movable-view实例详解
Aug 17 #Javascript
You might like
PHP与MySQL开发的8个技巧小结
2010/12/17 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
php将金额数字转化为中文大写
2015/07/09 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
js常用函数 不错
2006/09/08 Javascript
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
2013/09/23 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
Vue 自定义动态组件实例详解
2018/03/28 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
python实现人民币大写转换
2018/06/20 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
Python绘图实现显示中文
2019/12/04 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
异步传递消息系统的作用
2016/05/01 面试题
手术室护士自我鉴定
2013/10/14 职场文书
工作中的自我评价如何写好
2013/10/28 职场文书
积极分子思想汇报
2014/01/04 职场文书
个人优缺点自我评价
2014/01/27 职场文书
项目合作协议书
2014/09/23 职场文书