<?php
//引入微信提供的包省的找依赖库
include_once "wxBizMsgCrypt.php";
//你自己的token、分配给你的appid和密码
define("TOKEN", "yourtoken");
define("APPID", "wxb21b4b3b11111111");
define("APPSECRET", "se8c89e213c8efab31d53fc98s6d2222");
$wechatObj = new wechatCallbackapiTest();
//验证服务器
if(isset($_GET["openid"])){
//检查token
$access_token = $wechatObj->getToken();
$wechatObj->responseMsg();
}else if (isset($_GET["echostr"])){
//服务器token验证
$wechatObj->valid();
}else{
echo "empty";
}
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
public function responseMsg()
{
$postStr = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");
//$fp = fopen("./post_data.txt", "w+");
//fwrite($fp, $postStr);
//fclose($fp);
$postObj = simplexml_load_string($postStr,'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = trim($postObj->MsgType);
switch($RX_TYPE)
{
case "text":
$resultStr = $this->handleText($postObj);
break;
case "event":
$resultStr = $this->handleEvent($postObj);
break;
default:
$resultStr = "Unknow msg type: ".$RX_TYPE;
break;
}
echo $resultStr;
}
//文本消息
public function handleText($postObj)
{
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
if(!empty( $keyword ))
{
$msgType = "text";
$contentStr = "你好啊^_^";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}
public function handleEvent($object)
{
$contentStr = "";
switch ($object->Event)
{
//关注事件
case "subscribe":
$contentStr = "感谢您关注【我爱财】"."\n"."微信号:happysoul0";
break;
default :
$contentStr = "Unknow Event: ".$object->Event;
break;
}
$resultStr = $this->responseText($object, $contentStr);
return $resultStr;
}
//输出返回信息
public function responseText($object, $content, $flag=0)
{
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>";
$resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
return $resultStr;
}
//获取token并写入本地
function getToken(){
//写入本地的文件名,虽然这样不安全,暂时可以这么调试
$fileName = "./happysoul_access_token.json";
$appid=APPID;
$appsecret=APPSECRET;
if(!is_file($fileName)){
$f = fopen($fileName, "w");
fclose($f);
}
$file = file_get_contents($fileName,true);
$result = json_decode($file,true);
if (time() > $result['expires']){
$data = array();
$data['access_token'] = $this->getNewToken($appid,$appsecret);
$data['expires']=time()+7000;
$jsonStr = json_encode($data);
$fp = fopen($fileName, "w");
fwrite($fp, $jsonStr);
fclose($fp);
return $data['access_token'];
}else{
return $result['access_token'];
}
}
function getNewToken($appid,$appsecret){
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";
$access_token_Arr = $this->https_request($url);
return $access_token_Arr['access_token'];
}
function https_request ($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$out = curl_exec($ch);
curl_close($ch);
return json_decode($out,true);
}
}
?>
附件是微信提供的包,包含 java php c++ c# python
公众平台 - 开发 - 基本配置 (服务器配置)记得验证好了服务器之后要点启用
关注了你的人给你公众号发消息才能发送到你的服务器上
分享到:
相关推荐
微信公众号开发,小程序开发服务器端验证代码(PHP)
微信公众号开发,微信平台连接个人服务器时用于验证的代码文件;用法:上传部署到服务器即可
文件包含电商、外卖、天气、记账、考试、理财、游戏、音乐、地图、旅游、视频工具等50多款各行各业的微信模版小程序代码集合,后端语言采用PHP和java,适合新手学习或者二开,再或者直接使用都是可以的,源码搭建...
微信小程序网上商城PHP代码(包括客户端和服务器端),完整代码,可运行
微信小程序获取OpenID +php后端完整源代码。里面包含完整的PHP后台程序和微信小程序端程序,简单修改里面的配置信息就可以运行。
微信小程序录音并将录音文件上传到服务器源码,包含小程序端录音及播放功能,以及服务器端php上传处理代码。
适用于微信小程序支付的时候,服务器端的预支付和支付接口,以及支付结果回调通知!
微信小程序的PHP端支付功能代码,需要放在小程序信任域名所在服务器的根目录。
开发技术:微信小程序客户端 + PHP后台服务器端 + mysql数据库 客户端用户通过可以浏览所有人发布的表白信息,如果用户要发布和管理自己的表白信息,需要通过发送手机短信息验证码注册成为平台用户,注册成功后就...
开发技术:微信小程序客户端 + PHP后台服务器端 + mysql数据库 客户端用户通过可以浏览所有人发布的失物信息和招领信息,如果用户要发布和管理自己的失物招领信息,需要通过发送手机短信息验证码注册成为平台用户,...
1、服务器端使用开源项目wordpress,需要PHP+MYSQL环境,把server目录下文件拷贝至虚拟主机,修改wp-config.php的数据库配置信息, 批量替换server/sql目录下的sql文件中的域名为你的域名并导入数据库。后台地址:你的...
Android应用源码仿微信聊天项目源码。服务器php端代码已经一起打包了。
开发技术:微信小程序客户端 + PHP后台服务器端 + mysql数据库 客户端用户通过可以浏览所有人发布的表白信息,如果用户要发布和管理自己的表白信息,需要通过发送手机短信息验证码注册成为平台用户,注册成功后就...
开发技术:微信小程序客户端 + PHP后台服务器端 + mysql数据库 客户端用户通过可以浏览所有人发布的失物信息和招领信息,如果用户要发布和管理自己的失物招领信息,需要通过发送手机短信息验证码注册成为平台用户,...
主机必须支持php+mysql,建议联系我们购买云服务器,更安全,更稳定,更好的选择 1、运行http://你的域名/install 注意:安装时,请不要修改数据库前缀ecm_ 2、进入后台http://你的域名/admin 3、在后台导航的...
此项目采用客户端+服务器架构模式,主要实现了客户端功能开发和服务器端api接口的开发!实现了微信小程序用户授权登录后进行商品的查询,按照分类查询商品,提交商品到购物车,提交订单付款购买,其中付款接口采用的...
服务器端采用Thinkphp5.0开发接口,服务器端采用了统一的自定义验证框架层和异常处理层,整个项目才用了面向对象的设计方法,以及面向切面编程AOP思想,是学习的精品资料! -------- 不懂运行,下载完可以私聊问,可...
PHP代码,可适用于移动端。前端H5,直接部署服务器端。
本文实例为大家分享了微信小程序支付PHP具体代码,供大家参考,具体内容如下 服务器端获取 openid Getopenid.php <?php header('Content-type: application/json; charset=UTF-8'); $APPID=;//填写小程序...
打开PHP后端目录/PHP/,找到config.php,修改为您的API信息,并将PHP代码上传到您的网站空间或者服务器。获得一个URL:http://xxxxx/AccessToken_get.php 2、小程序端: ①打开微信小程序目录/wechat_mini_program/...