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


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 相关文章推荐
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
Jan 30 Javascript
Javascript常考语句107条收集
Mar 09 Javascript
javascript获得网页窗口实际大小的示例代码
Sep 21 Javascript
js给onclick赋值传参数的两种方法
Nov 25 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
Mar 17 Javascript
jQuery 重复加载错误以及修复方法
Dec 16 Javascript
详解 javascript中offsetleft属性的用法
Nov 11 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
Aug 05 Javascript
jquery文字填写自动高度的实现方法
Nov 07 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
Dec 27 Javascript
vue.js指令和组件详细介绍及实例
Apr 06 Javascript
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
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
mysql总结之explain
2012/02/27 PHP
PHP读取PDF内容配合Xpdf的使用
2012/11/24 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
php实现微信企业转账功能
2018/10/02 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
毕业生就业自荐信
2013/12/04 职场文书
参观考察邀请函范文
2014/01/29 职场文书
气象学专业个人求职信
2014/03/15 职场文书
建筑节能汇报材料
2014/08/22 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
2015年底工作总结范文
2015/05/15 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
Django如何与Ajax交互
2021/04/29 Python
Golang中channel的原理解读(推荐)
2021/10/16 Golang
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫
Mysql如何查看是否使用到索引
2022/12/24 MySQL