开发微信公众平台,sae的代码里index.php里面要弄什么内容啊? 20
2个回答
展开全部
给分吧,你可以到微信公众平台官网的帮助中心下载一个案例文件wx_sample.zip,然后上传到你的SAE里去在配置你的公众平台开发者模式就可以用了。
把wx_sample.php代码啃了一下,现附上自己的见解:
01 /**
02 * wechat php test
03 */
04
05 //define your token
06 define("TOKEN", "weixin");
07 $wechatObj = new wechatCallbackapiTest();
08 $wechatObj->valid();
09
10 class wechatCallbackapiTest
11 {
12 public function valid()
13 {
14 $echoStr = $_GET["echostr"];//随机字符串
15
16 //valid signature , option
17 if($this->checkSignature()){
18 echo $echoStr;
19 exit;
20 }
21 }
22
23 public function responseMsg()
24 {
25 //get post data, May be due to the different environments
26 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
27
28 //extract post data
29 if (!empty($postStr)){
30
31 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
32 $fromUsername = $postObj->FromUserName;//获取$postObj对象中FromUserName的<![CDATA[%s]]>值
33 $toUsername = $postObj->ToUserName;
34 $keyword = trim($postObj->Content);
35 $time = time();
36 /*
37 *ToUserName--开发者微信号
38 *FromUserName--发送方帐号(一个OpenID)
39 *CreateTime--消息创建时间 (本为整型,不过这里以字符串格式输出)
40 *MsgType--location
41 *Content--文本消息内容
42 *%s - 字符串格式
43 */
44 $textTpl = "<xml>
45 <ToUserName><![CDATA[%s]]></ToUserName>
46 <FromUserName><![CDATA[%s]]></FromUserName>
47 <CreateTime>%s</CreateTime>
48 <MsgType><![CDATA[%s]]></MsgType>
49 <Content><![CDATA[%s]]></Content>
50 <FuncFlag>0</FuncFlag>
51 </xml>";
52 if(!empty( $keyword ))
53 {
54 $msgType = "text";
55 $contentStr = "Welcome to wechat world!";
56 //sprintf输出格式函数
57 //$textTpl为输出格式
58
59 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
60 echo $resultStr;
61 }else{
62 echo "Input something...";
63 }
64
65 }else {
66 echo "";
67 exit;
68 }
69 }
70 /*
71 *加密/校验流程如下:
72 *1. 将token、timestamp、nonce三个参数进行字典序排序
73 *2. 将三个参数字符串拼接成一个字符串进行sha1加密
74 *3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
75 */
76 private function checkSignature()
77 {
78 $signature = $_GET["signature"];//微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
79 $timestamp = $_GET["timestamp"]; //时间戳
80 $nonce = $_GET["nonce"];//随机数
81
82 $token = TOKEN;
83 $tmpArr = array($token, $timestamp, $nonce);
84 sort($tmpArr, SORT_STRING); //进行字典序排序
85 $tmpStr = implode( $tmpArr );
86 $tmpStr = sha1( $tmpStr ); //sha1加密后与签名对比
87
88 if( $tmpStr == $signature ){
89 return true;
90 }else{
91 return false;
92 }
93 }
94 }
把wx_sample.php代码啃了一下,现附上自己的见解:
01 /**
02 * wechat php test
03 */
04
05 //define your token
06 define("TOKEN", "weixin");
07 $wechatObj = new wechatCallbackapiTest();
08 $wechatObj->valid();
09
10 class wechatCallbackapiTest
11 {
12 public function valid()
13 {
14 $echoStr = $_GET["echostr"];//随机字符串
15
16 //valid signature , option
17 if($this->checkSignature()){
18 echo $echoStr;
19 exit;
20 }
21 }
22
23 public function responseMsg()
24 {
25 //get post data, May be due to the different environments
26 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
27
28 //extract post data
29 if (!empty($postStr)){
30
31 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
32 $fromUsername = $postObj->FromUserName;//获取$postObj对象中FromUserName的<![CDATA[%s]]>值
33 $toUsername = $postObj->ToUserName;
34 $keyword = trim($postObj->Content);
35 $time = time();
36 /*
37 *ToUserName--开发者微信号
38 *FromUserName--发送方帐号(一个OpenID)
39 *CreateTime--消息创建时间 (本为整型,不过这里以字符串格式输出)
40 *MsgType--location
41 *Content--文本消息内容
42 *%s - 字符串格式
43 */
44 $textTpl = "<xml>
45 <ToUserName><![CDATA[%s]]></ToUserName>
46 <FromUserName><![CDATA[%s]]></FromUserName>
47 <CreateTime>%s</CreateTime>
48 <MsgType><![CDATA[%s]]></MsgType>
49 <Content><![CDATA[%s]]></Content>
50 <FuncFlag>0</FuncFlag>
51 </xml>";
52 if(!empty( $keyword ))
53 {
54 $msgType = "text";
55 $contentStr = "Welcome to wechat world!";
56 //sprintf输出格式函数
57 //$textTpl为输出格式
58
59 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
60 echo $resultStr;
61 }else{
62 echo "Input something...";
63 }
64
65 }else {
66 echo "";
67 exit;
68 }
69 }
70 /*
71 *加密/校验流程如下:
72 *1. 将token、timestamp、nonce三个参数进行字典序排序
73 *2. 将三个参数字符串拼接成一个字符串进行sha1加密
74 *3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
75 */
76 private function checkSignature()
77 {
78 $signature = $_GET["signature"];//微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
79 $timestamp = $_GET["timestamp"]; //时间戳
80 $nonce = $_GET["nonce"];//随机数
81
82 $token = TOKEN;
83 $tmpArr = array($token, $timestamp, $nonce);
84 sort($tmpArr, SORT_STRING); //进行字典序排序
85 $tmpStr = implode( $tmpArr );
86 $tmpStr = sha1( $tmpStr ); //sha1加密后与签名对比
87
88 if( $tmpStr == $signature ){
89 return true;
90 }else{
91 return false;
92 }
93 }
94 }
云创
2023-07-25 广告
2023-07-25 广告
要找到一家更省钱的代码静态分析服务,可以考虑以下几个方面:1. 了解自身的需求和预算:首先需要了解自己的项目对代码静态分析服务的需求,以及可承受的预算范围。这将有助于缩小选择范围,找到适合自己的服务。2. 调查市场上的竞争情况:了解市场上提...
点击进入详情页
本回答由云创提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询