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


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 相关文章推荐
javascript实现划词标记+划词搜索功能
Mar 06 Javascript
JS加ASP二级域名转向的代码
May 17 Javascript
Jquery练习之表单验证实现代码
Dec 14 Javascript
js中查找最近的共有祖先元素的实现代码
Dec 30 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
Jan 13 Javascript
关于Javascript与iframe的那些事儿
Jul 04 Javascript
JavaScript实现N皇后问题算法谜题解答
Dec 29 Javascript
jQuery中:button选择器用法实例
Jan 04 Javascript
javascript连续赋值问题
Jul 08 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
Jun 21 Javascript
用jquery快速解决IE输入框不能输入的问题
Oct 04 Javascript
解决ele ui 表格表头太长问题的实现
Nov 13 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中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
PHP编程风格规范分享
2014/01/15 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
vue.js中created方法作用
2018/03/30 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
Python统计单词出现的次数
2018/04/04 Python
python 实现识别图片上的数字
2019/07/30 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
Python 找出英文单词列表(list)中最长单词链
2020/12/14 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
科室工作的个人自我评价
2013/10/30 职场文书
楼面部长岗位职责范本
2014/02/14 职场文书
出纳员的岗位职责
2014/02/22 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
孔庙导游词
2015/02/04 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
师德师风培训感言
2015/08/03 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
MySQL 字符集 character
2022/05/04 MySQL