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


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 相关文章推荐
jquerydom对象的事件隐藏显示和对象数组示例
Dec 10 Javascript
js实现数字每三位加逗号的方法
Feb 05 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
Nov 02 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
Dec 13 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
May 23 Javascript
微信小程序 Image API实例详解
Sep 30 Javascript
js实现扫雷小程序的示例代码
Sep 27 Javascript
浅谈Vue数据绑定的原理
Jan 08 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
Sep 03 Javascript
node 版本切换的实现
Feb 02 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
Jul 26 Javascript
在vscode 中设置 vue模板内容的方法
Sep 02 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
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
ThinkPHP标签制作教程
2014/07/10 PHP
用javascript实现无刷新更新数据的详细步骤 asp
2006/12/26 Javascript
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
python 判断是否为正小数和正整数的实例
2017/07/23 Python
python画折线图的程序
2018/07/26 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
董事长职责范文
2013/11/08 职场文书
会计工作决心书
2014/03/11 职场文书
爱国口号
2014/06/19 职场文书
财会专业大学生求职信
2014/09/26 职场文书
授权委托书
2015/01/28 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
创业计划书之酒店
2019/08/30 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby