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


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 相关文章推荐
textarea中的手动换行处理的jquery代码
Feb 26 Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 Javascript
JS模块与命名空间的介绍
Mar 22 Javascript
js图片向右一张张滚动效果实例代码
Nov 23 Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 Javascript
js全选实现和判断是否有复选框选中的方法
Feb 17 Javascript
js实现简洁大方的二级下拉菜单效果代码
Sep 01 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
iconfont的三种使用方式详解
Aug 05 Javascript
写gulp遇到的ES6问题详解
Dec 03 Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
Apr 21 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
windows下apache搭建php开发环境
2015/08/27 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
Vue2.x-使用防抖以及节流的示例
2021/03/02 Vue.js
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
python实现报表自动化详解
2017/11/16 Python
python表格存取的方法
2018/03/07 Python
关于Python的一些学习总结
2018/05/25 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
Python pymongo模块常用操作分析
2018/09/01 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
村长贪污检举信
2014/04/04 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
草房子读书笔记
2015/06/29 职场文书