書き込みビジネスロジックファイル
使用は\アクションを考える; //カール方法独自のパッケージの詳細は、付録を参照 (「TOKEN」は、「あなたはトークン設定」)を定義し、 クラスはお客様がコントローラを拡張 { //のURLのサーバアドレスをチェック パブリックcheckServer機能(){ IFを( ISSET(GET $ _ [ 'echostr'])){ の$ this - >有効(); }他{ の$ this - > responseMsg(); } } パブリック関数有効() { $ echoStr = $ _GET [ "echostr"]。 IF(の$ this - > CheckSignature()){ ヘッダ( 'コンテンツタイプ:テキスト'); エコー$ echoStr; 出口; } {他 。echoStrエコー$ '+++' TOKEN ;. 終了; } } CheckSignatureプライベート関数() { $署名= $ _GET [ "署名"]。 $タイムスタンプ= $ _GET [ "タイムスタンプ"]; $ナンス= $ _GET [ "ナンス"]; $トークン= TOKEN。 $ tmpArr =配列($トークン、$タイムスタンプ、ノンス$); ソート($ tmpArr、SORT_STRING)。 $ tmpStr =破($ tmpArr)。 $ tmpStr = SHA1($ tmpStr)。 IF($ tmpStr == $署名){ trueを返します。 }他{ falseを返します。 } } パブリック関数responseMsg() { //此处推荐使用のfile_get_contents( 'PHP://入力')获取后台ポスト过来的数据 $ postStr =のfile_get_contents( 'PHP://入力')。 場合は(!($ postStr)&& IS_STRING空($ postStr)){ $ postArr = json_decode($ postStr、真の); (もし!空($ postArr [ 'のMsgType'])&& $ postArr [ 'のMsgType'] == 'テキスト'){ ($ postArr [ 'コンテンツ'の場合 } }他{ エコー「空」。 出口; } } //応答テキスト パブリック関数requestTXT($ fromUsername、$コンテンツ){ $データ=配列( "TOUSER" => $ fromUsername、 "MSGTYPE" => "テキスト"、 "テキスト" =>アレイ( "コンテンツ" => $コンテンツ) ) ; $ JSON = json_encode($データ、JSON_UNESCAPED_UNICODE)。 の$ this - > requestAPI($ JSON)。 } //图片回复 パブリック関数requestIMAGE($ fromUsername、$ media_idこの){ $データ=配列( "TOUSER" => $ fromUsername、 "MSGTYPE" => "画像"、 "画像" =>アレイ( "media_idこの" => MEDIA_ID $) ); $ JSON = json_encode($データ、JSON_UNESCAPED_UNICODE)。 の$ this - > requestAPI($ JSON)。 URL = $「https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token; $ $ =出力アクション(Action)> curl_post(URL $、$ JSON); IF ($出力== 0){ エコー'成功'; 出口; } } //コールマイクロチャンネルAPI、取得access_tokenは、有効7200s 公共get_accessToken機能(){ $ URL =」https://api.weixin.qq.com/ ?CGI-binに/トークンgrant_type = client_credential&APPID = あなたのAPPID&秘密=あなたの秘密鍵「; //彼らの小さなプログラムIDと秘密置き換える $のRES =のfile_get_contents($ URLを); $データ= json_decode($をRES、trueに) ; $ $ =データトークン[ 'access_tokenは']; リターントークン$; } }
マイクロチャネルサーバに画像をアップロードするために返信
これは一時的な材料のインタフェースで、わずか3日間存在することができ、現在のアプレットが永久的な創造的なアップロードをサポートしていない、唯一の公共サポート番号
uploadWxMedia関数パブリック(){ $トークン=の$ this - > get_accessToken(); $タイプ= "画像"; $ファイルパスのEnv :: = GET( 'のroot_path')の公開\\ \\ imageName.png資産";. /変更するには、その収納位置に応じて、サーバの/ファイルの絶対パス、 $データを=配列(「メディア」 //php5.6; =>新しい\ CURLFile($ファイルパス)) 以上、この方法を使用してファイルをアップロードしなければなりません $ URLを=「HTTPS ?:「タイプの$;」=&タイプの= access_tokenはを//api.weixin.qq.com/cgi-bin/media/upload $トークン... " $ =アクション新しい新しいアクションを(); //カール方法パッケージを参照してください付録 $結果= $アクション(Action)> curl_post(URL $、$データ); しますprint_r($結果); } //コールマイクロチャンネルAPI、取得access_tokenは、有効7200s 公共get_accessToken機能(){ $ URL =「HTTPS:// API ?.weixin.qq.com / CGI-binに/トークン grant_type = client_credential&APPID = あなたのAPPID&秘密=あなたの鍵;//そのIDを交換し、秘密のアプレット $ RES =のfile_get_contents($ URLを); $データ= json_decode($ RES、真の); $トークン= $データ[ 'access_tokenは']; $トークンを返します。 }
アクセスuploadWxMedia()メソッドは、良好な画像のアップロードを設定することで、JSONデータを返します。
{ "タイプ": "画像"、 "media_idこの": "LTbNsi *************** JqG"、 "のcreated_at":1558062553}
応答として画像に第二の工程で充填するために使用されるMEDIA_ID値
付録
カールをパッケージングする方法
名前空間を考えて、 クラスアクション { インターフェース//実施形態GETリクエスト パブリック関数get_json(URL $) { $データ=のfile_get_contents($ URL); //配列に $ =データjson_decodeの($データ、真の); //出力 リターン$データ; } インターフェース//実施形態POSTリクエスト パブリック関数curl_post(URL $、$データ、$ヘッダー= NULL) { 符号化されていない; // $データ配列()アレイである $カール= curl_init(); //カールを開始セッション IF(SUBSTR($ URL、0,5)== 'HTTPS'){ //証明書のチェックをスキップ (falseに$カール、CURLOPT_SSL_VERIFYPEER、)しますcurl_setoptを; //だけカールを7.28.1サポート下回った場合にのみCURLOPT_SSL_VERIFYHOST 1あなたは2つのショー(真のない仕事)を使用する必要があり、このバージョンより、trueを表します。 ますcurl_setopt($カール、CURLOPT_SSL_VERIFYHOST、2); } しますcurl_setopt($カール、にCURLOPT_URL、$ URL); しますcurl_setopt($カール、CURLOPT_HEADER、0); しますcurl_setopt($カール、CURLOPT_RETURNTRANSFER ,. 1); しますcurl_setopt($カール、CURLOPT_CUSTOMREQUEST、 "POST"); しますcurl_setopt($カール、CURLOPT_POSTFIELDS、データ$); !は、IFは、($ヘッダー= NULL){ // POSTリクエストは、ヘッダパラメータ担持 ますcurl_setopt($カール、CURLOPT_HTTPHEADER、$ヘッダー); } // APIのJSONオブジェクトを返す $応答= curl_exec($カール); /を/ URL要求オフ curl_close($カール); //オブジェクトのJSONを返し ますreturn $応答を; } }