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


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 相关文章推荐
IE6下拉框图层问题探讨及解决
Jan 03 Javascript
JavaScript函数节流概念与用法实例详解
Jun 20 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
Aug 05 Javascript
javascript实现秒表计时器的制作方法
Feb 16 Javascript
9种改善AngularJS性能的方法
Nov 28 Javascript
javascript实现循环广告条效果
Dec 12 Javascript
解决vuex刷新状态初始化的方法实现
Aug 15 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
Sep 03 jQuery
mui js控制开关状态、修改switch开关的值方法
Sep 03 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
Mar 17 Javascript
vue-cli设置publicPath小记
Apr 14 Javascript
微信小程序开发打开另一个小程序的实现方法
May 17 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
漂亮但不安全的CTB
2006/10/09 PHP
默默小谈PHP&amp;MYSQL分页原理及实现
2007/01/02 PHP
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
javascript hasFocus使用实例
2010/06/29 Javascript
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
微信小程序日历组件使用方法详解
2018/12/29 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
python实现银行管理系统
2019/10/25 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
python 线程的五个状态
2020/09/22 Python
英国门把手公司:Door Handle Company
2019/05/12 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
remote接口和home接口主要作用
2013/05/15 面试题
勤俭节约倡议书
2014/04/14 职场文书
企业年度评优方案
2014/06/02 职场文书
2015年纪委工作总结
2015/05/13 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
Python实战之OpenCV实现猫脸检测
2021/06/26 Python