119 lines
4.8 KiB
PHP
119 lines
4.8 KiB
PHP
<?php
|
||
|
||
/**
|
||
* @author Any
|
||
* @description KISS
|
||
* @date 2021年6月2日
|
||
* @version 1.0.0
|
||
*
|
||
* _____LOG_____
|
||
*
|
||
*/
|
||
namespace app\modules\api\controllers;
|
||
|
||
use app\modules\api\behaviors\LoginBehavior;
|
||
use app\models\common\CommonAddressActionForm;
|
||
use app\models\common\CommonAddressListForm;
|
||
use app\models\common\CommonAddressEditForm;
|
||
use app\models\Address;
|
||
use app\modules\api\models\WindowsApiForm;
|
||
|
||
|
||
class WechatController extends Controller
|
||
{
|
||
private $_msg_template = array(
|
||
'text' => '<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>',//文本回复XML模板
|
||
'image' => '<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[image]]></MsgType><Image><MediaId><![CDATA[%s]]></MediaId></Image></xml>',//图片回复XML模板
|
||
'music' => '<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[music]]></MsgType><Music><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><MusicUrl><![CDATA[%s]]></MusicUrl><HQMusicUrl><![CDATA[%s]]></HQMusicUrl><ThumbMediaId><![CDATA[%s]]></ThumbMediaId></Music></xml>',//音乐模板
|
||
'news' => '<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>%s</ArticleCount><Articles>%s</Articles></xml>',// 新闻主体
|
||
'news_item' => '<item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item>',//某个新闻模板
|
||
);
|
||
/**
|
||
* @微信入口
|
||
*/
|
||
public function actionIndex(){
|
||
/*if(!empty($_GET["signature"]) && !empty($_GET['echostr'])){
|
||
return $this->checkSignature();
|
||
}*/
|
||
return $this->responseMsg();
|
||
}
|
||
|
||
private function checkSignature()
|
||
{
|
||
$signature = $_GET["signature"];
|
||
$timestamp = $_GET["timestamp"];
|
||
$nonce = $_GET["nonce"];
|
||
$token = "3dxh";
|
||
$tmpArr = array($token, $timestamp, $nonce);
|
||
sort($tmpArr, SORT_STRING);
|
||
$tmpStr = implode( $tmpArr );
|
||
$tmpStr = sha1( $tmpStr );
|
||
if( $tmpStr == $signature ){
|
||
return $_GET['echostr'];
|
||
}else{
|
||
return false;
|
||
}
|
||
}
|
||
|
||
public function responseMsg(){
|
||
$xml_str = file_get_contents("php://input");
|
||
/*
|
||
获得请求时POST:XML字符串
|
||
不能用$_POST获取,因为没有key
|
||
*/
|
||
\Yii::info("进入",'wxpay');
|
||
$msg = "";
|
||
if(!empty($xml_str)){
|
||
// 解析该xml字符串,利用simpleXML
|
||
// libxml_disable_entity_loader(true);
|
||
//禁止xml实体解析,防止xml注入
|
||
$request_xml = simplexml_load_string($xml_str, 'SimpleXMLElement', LIBXML_NOCDATA);
|
||
|
||
\Yii::info($request_xml->MsgType,'wxpay');
|
||
$msg = sprintf($this->_msg_template['text'], $request_xml->ToUserName, $request_xml->FromUserName, time(), "333");
|
||
echo $msg;
|
||
exit();
|
||
//判断该消息的类型,通过元素MsgType
|
||
switch ($request_xml->MsgType){
|
||
case 'event':
|
||
//判断具体的时间类型(关注、取消、点击)
|
||
$event = $request_xml->Event;
|
||
if ($event=='subscribe') { // 关注事件
|
||
// $this->_doSubscribe($request_xml);
|
||
}elseif ($event=='CLICK') {//菜单点击事件
|
||
// $this->_doClick($request_xml);
|
||
}elseif ($event=='VIEW') {//连接跳转事件
|
||
// $this->_doView($request_xml);
|
||
}else{
|
||
|
||
}
|
||
break;
|
||
case 'text'://文本消息
|
||
// $this->_doText($request_xml);
|
||
break;
|
||
case 'image'://图片消息
|
||
// $this->_doImage($request_xml);
|
||
break;
|
||
case 'voice'://语音消息
|
||
// $this->_doVoice($request_xml);
|
||
break;
|
||
case 'video'://视频消息
|
||
// $this->_doVideo($request_xml);
|
||
break;
|
||
case 'shortvideo'://短视频消息
|
||
// $this->_doShortvideo($request_xml);
|
||
break;
|
||
case 'location'://位置消息
|
||
// $this->_doLocation($request_xml);
|
||
break;
|
||
case 'link'://链接消息
|
||
// $this->_doLink($request_xml);
|
||
break;
|
||
}
|
||
}
|
||
return $msg;
|
||
}
|
||
|
||
}
|
||
|