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


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里使用Dom操作Xml
Sep 20 Javascript
ExtJS GridPanel 根据条件改变字体颜色
Mar 08 Javascript
购物车选中得到价格实现示例
Jan 26 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
JS实现的多张图片轮流播放幻灯片效果
Jul 22 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
Aug 02 Javascript
Js调用Java方法并互相传参的简单实例
Aug 11 Javascript
vue.js入门教程之计算属性
Sep 01 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
Jan 22 Javascript
angular第三方包开发整理(小结)
Apr 19 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
Apr 09 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
Apr 11 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中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
python读文件逐行处理的示例代码分享
2013/12/27 Python
Python安装第三方库的3种方法
2015/06/21 Python
Python进程间通信之共享内存详解
2017/10/30 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
Python批量启动多线程代码实例
2020/02/18 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
浅谈django 重载str 方法
2020/05/19 Python
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
探矿工程师自荐信
2014/01/24 职场文书
财务出纳岗位职责
2014/02/03 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
转让协议书范本
2014/04/15 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
机关保密工作承诺书
2015/05/04 职场文书
外出听课学习心得体会
2016/01/15 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
MyBatis 动态SQL全面详解
2021/10/05 MySQL
详解在OpenCV中如何使用图像像素
2022/03/03 Python
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android