請在后臺配置參數,參數名稱:topads
編程語言 php java

微信公眾平臺開發者模式開通

php HTML我幫您 1年前  7590次瀏覽
首先要了解的是什么是URL和Token,在這里,URL就是放置了接口程序的網址,這個網址一般得是你自己的服務器或空間地址。你自己在這個空間上某個目錄已經有接口程序了,你知道這個接口程序在互聯網上的訪問地址是什么。而Token就是一個令牌,該令牌是個數字或字母形式的字符串,用于微信服務器與你的服務器進行通訊的時候的身份驗證。防止非法數據來搞亂。
然后要了解的是開發模式為什么要使用Url和Token,使用url是為了讓微信服務器和你的服務器進行通訊對話,從而達到開發模式下自動回復的目的。而實現這個通訊,必須有相應的程序為你完成這個功能,而這個程序必須已經開發完成并且放置于url路徑下面,當你填寫完url和token的時候,微信服務器就會和你的服務器下的程序進行一次認證過程,認證通過表明這個服務器是你的并且程序沒有問題。不然你填個不存在的url或者url下面個沒有相應的接口功能,那是通不過的。


你可以先用下面的測試通過
URL:   http://www.***.com/
Token:  html580

1. 技術分析法

這次我們在代碼里面加入跟蹤http記錄的方法來查看我們自己的服務器收到了請求沒有回應,還是微信根本沒有發請求過來。
通過調用系統環境變量$_SERVER,可以查看到HTTP請求的信息,其中兩項重要的是

/**
* wechat php test
*/

//define your token 自定義自己的Token 這里比較重要
define("TOKEN", "html580");
traceHttp();
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

class wechatCallbackapiTest
{
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
$postStr = $GLOBALS<"HTTP_RAW_POST_DATA">;

//extract post data
if (!empty($postStr)){

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
>>
>>
%s
>>
>>
0
";
if(!empty( $keyword ))
{
$msgType = "text";
$contentStr = "Welcome to wechat world!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}

}else {
echo "";
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;
}
}
}

function traceHttp(){
logger("REMOTE_ADDR:".$_SERVER<"REMOTE_ADDR">.((strpos($_SERVER<"REMOTE_ADDR">,
"101.226"))?" From WeiXin":" Unknown IP"));
logger("QUERY_STRING".$_SERVER<"QUERY_STRING">);
}

function logger($content){
file_put_contents("log.html",date('Y-m-d H:i:s ').$content."
",FILE_APPEND);
}
?>


這樣,當我們提交之后,就會生成一個log.html文件在當前目錄
用瀏覽器直接打開填寫的url,也會寫一次文件。

直接用瀏覽器打開url+log.html路徑,我的記錄如下:

2013-01-30 10:15:18
2013-01-30 10:15:18 REMOTE_ADDR:212.179.24.103 Unknown IP
2013-01-30 10:15:18 QUERY_STRING:

在微信中點擊提交一次,再一次生成記錄,如下:

2013-01-30 10:15:49
2013-01-30 10:15:49 REMOTE_ADDR:101.226.89.83 From WeiXin
2013-01-30 10:15:49 QUERY_STRING:signature=eded789463180edf6c13691398d0cb4c85fb0e23&echostr=5838479218127813673×tamp=1359100969&nonce=1359376876

從上可以看到,這次IP來自101.226.89.83,是微信的IP,我把這個IP加入到代碼中自行判斷了



現在可以根據下面的來檢測自己的問題在哪一個地方

如果沒有生成日志:

  那是微信服務器都沒有聯系到你,需要檢查服務器是否可以通過公網訪問,URL路徑是否存在并且正確。

如果生成了日志:

  如果你生成了日志,有REMOTE_ADDR和QUERY_STRING,查看IP是不是來自上海(目前微信服務器部署在上海電信機房),查看QUERY_STRING格式是否和官方指南中描述的類似,如果這些沒有問題,那先檢查Token填寫的是否和程序中的一致,再檢查程序是否有問題。

發表評論

自动麻将机怎么作弊 什么是3d5码组三 信誉博彩网一Welcome 体彩36选718148 混合过关选择联赛 北京pk10开奘结果查询 股票app排行榜 爱棋牌网址 推倒胡麻将胡法图解全图 3d中奖藏宝图彩票官网 众赢网网赚app 新疆喜乐彩开奖号码 秒速赛车玩法猜大小怎么算 商品期货风险大吗 云南时时彩一天多少期-点击进入 彩票论坛 浙江飞鱼