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


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 Event事件学习第一章 Event介绍
Feb 07 Javascript
js 禁用只读文本框获得焦点时的退格键
Apr 25 Javascript
js改变鼠标的形状和样式的方法
Mar 31 Javascript
javascript实现tab切换特效
Nov 12 Javascript
jQuery移动web开发中的页面初始化与加载事件
Dec 03 Javascript
浅谈angular懒加载的一些坑
Aug 20 Javascript
轻松实现js选项卡切换效果
Sep 24 Javascript
如何在JavaScript中优雅的提取循环内数据详解
Mar 04 Javascript
微信小程序生成分享海报方法(附带二维码生成)
Mar 29 Javascript
Vue3.0数据响应式原理详解
Oct 09 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 Javascript
微信小程序自定义底部弹出框功能
Nov 18 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
ThinkPHP的Widget扩展实例
2014/06/19 PHP
PHP序列化操作方法分析
2016/09/28 PHP
PHP new static 和 new self详解
2017/02/19 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
jquery简单体验
2007/01/10 Javascript
js类中获取外部函数名的方法
2007/08/19 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
js实现数字滚动特效
2019/12/16 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python将一组数分成每3个一组的实例
2018/11/14 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
python列表生成器迭代器实例解析
2019/12/19 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
任意存:BOXFUL
2018/05/21 全球购物
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
数据库方面面试题
2012/04/22 面试题
小学生寒假家长评语
2014/04/16 职场文书
工作岗位说明书模板
2014/05/09 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书