本文实例为大家分享了PHP微信接口类,供大家参考,具体内容如下

/**

* wechat php test

*/

//define your token

//定义TOKEN秘钥

define("TOKEN", "weixin");

//实例化微信对象

$wechatObj = new wechatCallbackapiTest();

//验证成功后注释valid方法

//$wechatObj->valid();

//开启自动回复功能

$wechatObj->responseMsg();

//定义类文件

class wechatCallbackapiTest

{

//实现valid验证方法:实现对接微信公众平台

public function valid()

{

//接受随机字符串

$echoStr = $_GET["echostr"];

//valid signature , option

//进行用户数字签名验证

if($this->checkSignature()){

//如果成功,则返回接受到的随机字符串

echo $echoStr;

//退出

exit;

}

}

//定义自动回复功能

public function responseMsg()

{

//get post data, May be due to the different environments

//接受用户端发送过来的xml数据

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

//extract post data

//判断xml数据是否为空

if (!empty($postStr)){

/* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,

the best way is to check the validity of xml by yourself */

libxml_disable_entity_loader(true);

//通过simplexml进行xml解析

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

//接受微信的手机端

$fromUsername = $postObj->FromUserName;

//微信公众平台

$toUsername = $postObj->ToUserName;

//接受用户发送的关键词

$keyword = trim($postObj->Content);

//1.接受用户消息类型

$msgType = $postObj -> MsgType;

//时间戳

$time = time();

//文本发送模板

$textTpl = "

%s

0

";

//

//如果用户发送的是文本类型文件,执行以下

if($msgType == 'text'){

if(!empty( $keyword ))

{

/*这是一个实例

//如果发送文本信息

$msgType = "text";

//回复内容

if($keyword == "李楠"){

$contentStr = "叫我干嘛";

}else{

$contentStr = "叫我干嘛";

}

//格式化xml模板,参数与上面的模板是一一对应的.fromUsername和头Username是相反的,只写带%s的

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

//将xml信息返回给客户端

echo $resultStr;

*/

if($keyword == "?" || $keyword == "?"){

$msgType = "text";

$contentStr = "1.特种服务号码\n2.通讯服务号码";

$resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);

echo $resultStr;

}elseif($keyword == 1){

$msgType = "text";

$contentStr = "1.匪警:110\n2.火警:119\n3.急救:120";

$resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);

echo $resultStr;

}elseif($keyword == 2){

$msgType = "text";

$contentStr = "1.中国移动:10086\n2.中国联通:10010";

$resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);

echo $resultStr;

}

}else{

echo "不能不说话";

}

}

//接受图片信息

if($msgType == "image"){

//如果发送文本信息

$msgType = "text";

//回复内容

$contentStr = "你发送的是图片文件";

//格式化字符串

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

//将xml信息返回给客户端

echo $resultStr;

}

if($msgType == "voice"){

//如果发送文本信息

$msgType = "text";

//回复内容

$contentStr = "你发送的是语音文件";

//格式化字符串

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

//将xml信息返回给客户端

echo $resultStr;

}

if($msgType == "video"){

//如果发送文本信息

$msgType = "text";

//回复内容

$contentStr = "你发送的是视频文件";

//格式化字符串

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

//将xml信息返回给客户端

echo $resultStr;

}

if($msgType == "shortvideo"){

//如果发送文本信息

$msgType = "text";

//回复内容

$contentStr = "你发送的是小视频文件";

//格式化字符串

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

//将xml信息返回给客户端

echo $resultStr;

}

if($msgType == "location"){

//如果发送文本信息

$msgType = "text";

//回复内容

$contentStr = "你发送的是地理位置文件";

//格式化字符串

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

//将xml信息返回给客户端

echo $resultStr;

}

if($msgType == "link"){

//如果发送文本信息

$msgType = "text";

//回复内容

$contentStr = "你发送的是连接文件";

//格式化字符串

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

//将xml信息返回给客户端

echo $resultStr;

}

/*

//判断用户发送关键词是否为空

if(!empty( $keyword ))

{

//如果发送文本信息

$msgType = "text";

//回复内容

$contentStr = "大家好,我是hero";

//格式化字符串

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

//将xml信息返回给客户端

echo $resultStr;

}else{

echo "Input something...";

}

*/

}else {

echo "";

exit;

}

}

private function checkSignature()

{

// you must define TOKEN by yourself

//判断是否定义了TOKEN,如果没有就抛出一个异常

if (!defined("TOKEN")) {

throw new Exception('TOKEN is not defined!');

}

$signature = $_GET["signature"];//接受微信加密签名

$timestamp = $_GET["timestamp"];//接受时间戳

$nonce = $_GET["nonce"];//接受随机数

$token = TOKEN;//把TOKEN常量赋值给$token

//把相关参数组装成数组

$tmpArr = array($token, $timestamp, $nonce);

// use SORT_STRING rule

//排序

sort($tmpArr, SORT_STRING);

//把排序后的数组转换成字符串

$tmpStr = implode( $tmpArr );

//通过哈希算法加密

$tmpStr = sha1( $tmpStr );

//与加密签名进行对比

if( $tmpStr == $signature ){

//相同返回true

return true;

}else{

//不同返回false

return false;

}

}

}

?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

php微信 api,PHP微信API接口类相关推荐

  1. 个人微信号二次开发sdk协议,微信个人号开发API接口

    个人微信号二次开发sdk协议,微信个人号开发API接口 微信SDK程序概要说明 个人微信号开发sdk非微信ipad协议.非mac协议,非安卓协议,api可实现微信99%功能: 无需扫码登录.可收发朋友 ...

  2. 微信公众平台卡券API接口开发指南

    文章目录 说明 卡券术语介绍 卡券生命周期流程图 准备 申请开发账号 公众平台开发配置 公众号开发信息配置 填写服务器配置并验证有效性 申请微信认证及开通微信卡券功能 卡券分类 普通卡券 会员卡券 朋 ...

  3. 微信支付Native下单API接口正确调用姿势

    商户Native支付下单接口,微信后台系统返回链接参数code_url,商户后台系统将code_url值生成二维码图片,用户使用微信客户端扫码后发起支付. 文档地址:微信支付-开发者文档 目录 一.N ...

  4. 替代微信ipad协议的api接口

    安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sd ...

  5. python pc微信 接收信息_GitHub - ericadver/WechatPCAPI: 微信PC版的API接口,可通过Python调用微信获取好友、群、公众号列表,并收发消息等功能。...

    WechatPCAPI 微信PC版的API接口,可通过Python调用微信获取好友.群.公众号列表,并收发消息等功能.可用于二次开发在线微信机器人.微信消息监控.群控软件.开发界面作多个微信控制软件等 ...

  6. python 微信公众号网页接口调用_GitHub - micsem00/WechatPCAPI: 微信PC版的API接口,可通过Python调用微信获取好友、群、公众号列表,并收发消息等功能。...

    WechatPCAPI 微信PC版的API接口,可通过Python调用微信获取好友.群.公众号列表,并收发消息等功能.可用于二次开发在线微信机器人.微信消息监控.群控软件.开发界面作多个微信控制软件等 ...

  7. python的读取微信界面_GitHub - lchb000/WechatPCAPI: 微信PC版的API接口,可通过Python调用微信获取好友、群、公众号列表,并收发消息等功能。...

    WechatPCAPI 微信PC版的API接口,可通过Python调用微信获取好友.群.公众号列表,并收发消息,接受转账.好友请求.入群请求,群管理等功能.可用于二次开发在线微信机器人.微信消息监控. ...

  8. python 接收微信pc端_GitHub - linhuisheng/WechatPCAPI: 微信PC版的API接口,可通过Python调用微信获取好友、群、公众号列表,并收发消息等功能。...

    WechatPCAPI 微信PC版的API接口,可通过Python调用微信获取好友.群.公众号列表,并收发消息等功能.可用于二次开发在线微信机器人.微信消息监控.群控软件.开发界面作多个微信控制软件等 ...

  9. 微信公众平台自定义菜单接口API指南

    微信公众平台开发模式自定义菜单接口API指南 开发实现方法,请查看 微信公众平台开发(58)自定义菜单 简介 开发者获取使用凭证(如何获取凭证)后,可以使用该凭证对公众账号的自定义菜单进行创建.查询和 ...

  10. java 朋友圈分享接口_微信发朋友圈api接口调用代码

    微信发朋友圈api接口调用代码,推送微信朋友圈.发朋友圈 /** * 触发推送朋友圈列表 * @author wechatno:tangjinjinwx * startTime传秒 * @blog h ...

最新文章

  1. Linux中Eclipse开发android的配置问题
  2. python3默认编码格式_python3 中文乱码与默认编码格式设定方法
  3. 一些让人恶心的代码片段
  4. Hystrix之Dashboard的常见问题
  5. 斥资近1亿港元,小米二次回购
  6. HDU - 5934
  7. Oracle Golden Gate概要
  8. matlab的四维图像数据可视化
  9. 青少年python编程竞赛加分_《笨方法学Python》加分题17
  10. 最长公共子序列(POJ1458)
  11. 64位Java开发平台的选择,如何区分JDK,Tomcat,eclipse的32位与64版本
  12. Application.mk文件官方使用说明
  13. hαbits的意思_h【snail吧】_百度贴吧
  14. Stellar Phoenix Office Repair(Office修复工具)v6.2绿色版
  15. 使用计算机要遵循哪些规则,中国大学MOOC:\\\在计算机网络的定义中,把众多计算机有机连接起来要遵循规定的约定和规则,称之为( )。\\\;...
  16. vb安装过程中 ntvdm.exe[9696]中发生未处理的win32异常
  17. python分割pdf文档
  18. Spring基于XMLMysql | 注解Mysql的简单IOC案例
  19. 完美融入云原生的无代码平台 iVX编辑器实战
  20. R语言第一课:R和Rstudio

热门文章

  1. AR涂涂乐项目之识别图制作制作地球仪线框二
  2. 记录自己关于Linux的学习和RHCSA、RHCE认证相关
  3. 物联网发展的尴尬境况:理想与现实仍有差距
  4. php如何采集,php采集入门教程,教你如何写采集
  5. tween.js--使用/教程/实例
  6. Python一小时开发彩色动态二维码生成器,并使用虚拟化境进行打包发布EXE程序。
  7. 仲裁器设计(4)Weighted Round Robin
  8. Unity3d 真实的植物渲染
  9. (二十一)查询我的订单
  10. 周末假期,去一趟安化云台山风景区