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


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 concat数组累加 示例
Sep 03 Javascript
jquery多浏览器捕捉回车事件代码
Jun 22 Javascript
基于jquery的表格排序
Sep 11 Javascript
JQuery表格内容过滤的实现方法
Jul 05 Javascript
关于js数组去重的问题小结
Jan 24 Javascript
JavaScript 中 apply 、call 的详解
Mar 21 Javascript
JS实现多物体运动的方法详解
Jan 23 Javascript
关于vue-router的那些事儿
May 23 Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 Javascript
layui结合form,table的全选、反选v1.0示例讲解
Aug 15 Javascript
js里面的变量范围分享
Jul 18 Javascript
vue-drawer-layout实现手势滑出菜单栏
Nov 19 Vue.js
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设计模式 Command(命令模式)
2011/06/26 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
js打印纸函数代码(递归)
2010/06/18 Javascript
jQuery代码优化之基本事件
2011/11/01 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
利用Psyco提升Python运行速度
2014/12/24 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
如何手工释放资源
2013/12/15 面试题
办公室员工岗位工作职责
2014/03/10 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
php png失真的原因及解决办法
2021/11/17 PHP