PHPのオープンマイクロチャネルの公共の数字の開発者モード

オープンマイクロチャネル公共番号の開発者モードをPHP
<PRE>
<PHP?
/ **
*テストのPHP微信
* /
ヘッダ( '型のコンテンツ:テキスト');
// DEFINEトークン
//定義TOKENキーを
定義します( "TOKEN" 、 "Weixin");
//インスタンス化は、マイクロチャネルオブジェクト
$ wechatObjを=新しいwechatCallbackapiTest();
//後に成功したコメント有効な検証方法
$ wechatObj->有効();
//開く自動返信機能
$ wechatObj-> responseMsg() ;
//クラスの定義は、ファイル
クラスwechatCallbackapiTest
{
//有効な認証方式実装:公共のインターネットドッキング達成するためにマイクロチャネルを
(有効な公開機能を)
{
ランダムな文字列で受信された// GETリクエスト
$ echoStr = $ _GET [「echostr」];
//コールcheckSignature方法ユーザー(開発者)のデジタル署名の検証
//!有効な署名、オプション
IF(の$ this - > checkSignature()){
//成功した場合、受信したランダム文字列が返され
ますecho $ echoStr;
//と出口
出口;
}
}

responseMsg関数パブリック()
{
//データはPOST、オン月異なる環境ザ・をGETするためにBE
レシーバ//ユーザー(クライアント)から送信されたXMLデータ
$ $ GLOBALS postStr = [ "HTTP_RAW_POST_DATAがあります"];

データ抽出POSTが//
// XMLデータが空であるか否かを判断する
IF(!空($ postStr)){
防止インジェクションへの外部へ/ * IS libxml_disable_entity_loaderのXMLエンティティを、
するための最良の方法は自分でXMLの妥当性を確認してください* / IS
(libxml_disable_entity_loader )trueに;
// XML PHPを解析することにより、SimpleXMLをは、XML解析の2種類が行うことができていドム2.モデルによって1.PHPモデルのSimpleXML
$ postObj simplexml_load_string =($ postStr 'のSimpleXMLElement'、LIBXML_NOCDATA);
/ /モバイルクライアント
$ = $ postObj- fromusername> fromusername;
//公衆インターネットマイクロチャネル
$ = $ postObj- toUsername> toUserName;
//キーワードユーザーが送信
$キーワード= TRIM($ postObj->コンテンツ);
//タイムスタンプ
時間=時間$();
//送信テキストテンプレート
$ textTpl =「<XML>
<![CDATA [%S]]> <ToUserName> </ ToUserName>
<Fromusername> <![CDATA [%S]]> </ fromusername>
<CREATETIME>%S </ CREATETIME>
<のMsgType> <![CDATA [%S]]> </のMsgType>
<コンテンツ> <![CDATA [%S]]> </コンテンツ>
<FuncFlag> 0 </ FuncFlag>
</ XML>「;
//ユーザーはキーワードが空であるか否かを判断する送信
IF(!空($キーワード))
{
//戻り値の型があれば、テキストタイプを代表する「テキスト」、として
$ MSGTYPE =「テキスト」;
//返信
contentStr =は$「微信世界に購入可能に!」;
//フォーマット文字列(操作のXML形式、関連する書式変数の内部を化学文字列)
$ ResultStr =はsprintf(textTpl $、$ fromusername、toUsername $、$時間、MSGTYPE $、$ contentStrは);
//移動端末にXMLデータを返し
ますecho $ resultStr。
}
//ユーザーから送信されたキーワードは、空の文字列には、次の返された場合
、他{
「...入力何か」エコー;
}

} {他に
"エコー";
;終了]
}
}

// CheckSignature方法を定義
(プライベートにCheckSignature機能を)
{
//自分でTOKENを定義する必要があります

//キーはTOKEN定義されたかどうかを決定する
(TOKEN ")IF!定義さを()" {
/定義されていない場合は、「!TOKENが定義されていない」/例外がスローされ、文字列が返されます
スロー新しい新しい例外を(「!TOKENが定義されていない」);
}
暗号化された署名の受信//マイクロチャネル
$署名= $ _GET [「署名を 」];
タイムスタンプ情報//受信
$タイムスタンプ= $ _GET [「タイムスタンプ」]を;
//乱数受け取り
; $ $ _GETノンス= [「ノンス」]
//変数$に割り当てられたトークンのトークン定数
$トークン=トークン;
//関連するパラメータは、アレイ(キーファイル、タイムスタンプ、ノンス)に組み込まれている
$ tmpArr =配列(トークン$、$タイムスタンプ、ノンス$)。
使用SORT_STRINGルール//
法の辞書による//ソート
ソート($ tmpArr、SORT_STRING);
ソートの列に//配列
$ = tmpStr破($ tmpArr)、
暗号化演算の//文字列は、ハッシュアルゴリズムによって実行される
$ tmpStr = SHA1($ tmpStr);
/を暗号化/署名との比較
(== $ $ tmpStr署名)IF {
trueに戻り;
}そう{
falseに戻り;
}
}
}

?>
</ PRE>
TOKEN 1トークンは、公衆回線番号背景にマイクロチャネル対応を保つ
2 $ wechatObj->有効();公共マイクロチャンネル番号は、バックグラウンド検証端をコメントすることができます

おすすめ

転載: www.cnblogs.com/newmiracle/p/11856256.html