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


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 相关文章推荐
window.open的功能全解析
Oct 10 Javascript
javascript删除数组元素并且数组长度减小的简单实例
Feb 14 Javascript
javascript判断chrome浏览器的方法
Mar 26 Javascript
jquery果冻抖动效果实现方法
Jan 15 Javascript
全面解析Bootstrap表单使用方法(表单控件)
Nov 24 Javascript
js下将金额数字每三位一逗号分隔
Feb 19 Javascript
漫谈JS引擎的运行机制 你应该知道什么
Jun 15 Javascript
EasyUI中在表单提交之前进行验证
Jul 19 Javascript
chrome浏览器如何断点调试异步加载的JS
Sep 05 Javascript
JS简单实现动态添加HTML标记的方法示例
Apr 08 Javascript
layui select获取自定义属性方法
Aug 15 Javascript
CocosCreator如何实现划过的位置显示纹理
Apr 14 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
php三元运算符知识汇总
2015/07/02 PHP
php简单的上传类分享
2016/05/15 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
浅析script标签中的defer与async属性
2016/11/30 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
python进阶教程之文本文件的读取和写入
2014/08/29 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
python tkinter界面居中显示的方法
2018/10/11 Python
解决安装python库时windows error5 报错的问题
2018/10/21 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
python 判断矩阵中每行非零个数的方法
2019/01/26 Python
Python2与Python3的区别点整理
2019/12/12 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
孔子观后感
2015/06/08 职场文书
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python