マイクロチャネルの顧客スマート返信アプレットのサンプル・コード(PHP)

書き込みビジネスロジックファイル

 

使用は\アクションを考える; //カール方法独自のパッケージの詳細は、付録を参照
(「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 $応答を; 
} 
}
 

  

おすすめ

転載: www.cnblogs.com/rianley/p/12306162.html