<?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微信H5支付是微信支付服务中的一种,适用于在移动端网页上进行支付的场景。这个压缩包提供的是一套完整的PHP实现微信H5支付的代码,包括了前端展示和后端处理逻辑,使得开发者能够快速集成到自己的项目中。以下是...
2. wafer-session-server-master.zip:这可能是关于会话管理的服务器端代码,用于处理用户的登录状态和会话信息,确保用户在小程序中的操作能够得到正确的服务响应。 3. wafer-master.zip:这可能是整个Wafer SDK或...
微信公众号开发,小程序开发服务器端验证代码(PHP)
本API的PHP实现提供了服务器端处理支付请求的全部功能,包括订单创建、预支付、支付结果查询以及退款等关键操作。下面我们将详细探讨相关知识点。 1. **微信小程序支付流程** - **订单创建**:在用户准备支付时,...
在IT行业中,编程语言是构建数字世界的基石,而PHP作为一种广泛应用的服务器端脚本语言,尤其在网页开发中占据重要地位。"微信时间代码"这个话题实际上是在谈论如何利用PHP来获取并显示当前系统时间。这是一项基础但...
PHP语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要应用于服务器端的脚本程序。 2. **PHP在微信游戏开发中的作用**: - **后端逻辑处理**:通过PHP处理游戏的逻辑运算,如玩家数据管理、游戏进度保存...
微信公众号开发,微信平台连接个人服务器时用于验证的代码文件;用法:上传部署到服务器即可
微信扫码控制器代码是实现这一功能的关键部分,它连接了用户、微信服务器和应用程序之间的交互流程。本文将详细解析“微信PC端扫码控制器代码”的核心概念、工作原理以及相关知识点。 首先,我们来看...
3. **验证签名**:signature是使用微信服务器的公钥对header和payload进行RSA-SHA256加密得到的,服务器端需要使用私钥来验证签名的正确性,以确保数据在传输过程中未被篡改。 4. **解析解密后的数据**:解密后的...
当用户支付成功,微信服务器会发送通知到此URL,服务器端需要验证这些通知的合法性,并根据通知内容进行相应的业务处理,比如更新订单状态、发货等。 6. **安全与证书**: 文件`1218891802_20140425185952.pfx`可能...
文件包含电商、外卖、天气、记账、考试、理财、游戏、音乐、地图、旅游、视频工具等50多款各行各业的微信模版小程序代码集合,后端语言采用PHP和java,适合新手学习或者二开,再或者直接使用都是可以的,源码搭建...
- 部署时,确保PHP环境正常运行,将PHP端代码部署到服务器,并配置好URL以供小程序调用。 - 修改`config.php`中的AppID和AppSecret为实际的微信小程序配置信息。 - 测试时,首先在小程序端模拟用户授权登录,检查...
【基于PHP微信名片制作代码.zip】是一个包含微信名片制作程序的压缩包,主要适用于那些希望在微信平台上创建个性化名片的用户。此程序的核心是利用PHP编程语言,结合微信的开放接口,来实现用户友好的、功能丰富的...
在此项目中,微信小程序作为前端,负责展示数据和用户交互,而PHP服务器端则专注于数据处理和业务逻辑,两者通过API接口进行通信,如RESTful API,实现数据交换。 4. **网上商城功能**: 一个完整的网上商城系统通常...
总的来说,这个PHP微信开放平台扫码登录源码涵盖了整个扫码登录的流程,包括获取授权、交换令牌、获取用户信息以及创建/绑定用户账户等步骤。通过研究和实践这个源码,开发者可以更好地理解和掌握微信扫码登录的实现...
PHP是一种广泛使用的服务器端脚本语言,尤其适合Web开发。在实现微信企业号二次验证接口时,PHP将扮演处理请求和响应的角色。以下是实现这一功能的关键步骤: 1. **配置开发者模式**:首先,你需要在微信企业号的...
PHP代码应包含证书的加载和管理逻辑,确保在请求微信服务器时使用正确的证书。 5. **回调通知处理**: 支付完成后,微信服务器会向商户服务器发送异步通知,告知支付结果。PHP代码需要实现一个接收并验证这些通知...
尽管标题中提到了PHP,但实际上代码全部由JavaScript组成,且与微信服务器端交互相关的PHP代码未包含在内。此外,这段代码需要运行在支持`DeviceMotionEvent`的移动设备上,如智能手机等,才能正常工作。对于希望在...
PHP作为广泛使用的服务器端脚本语言,是实现微信支付接口的重要工具。此实例为PHP微信支付V3版本,包含了最新的支付流程和技术细节。 1. **微信支付V3简介** 微信支付V3是微信官方推出的新一代支付接口,提供了...
当用户在Ectouch商城中选择微信支付并完成付款后,微信支付服务器会返回一个支付结果通知(通常是异步的XML数据)。这个通知包含了交易的状态信息,如交易号、支付金额等。Ectouch系统需要正确地接收并解析这个通知...