


WeChat パブリック プラットフォームに基づいて SDK (デモ) 拡張機能を開発するための PHP メソッド、sdkdemo_PHP チュートリアル
phpは、WeChatパブリックプラットフォーム、sdkdemo
に基づいてSDK(デモ)拡張機能を開発するメソッドを実装しますこの記事の例では、PHP を使用して WeChat パブリック プラットフォームに基づいた SDK (デモ) 拡張機能を開発する方法について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
この拡張機能は、公式 WeChat パブリック プラットフォーム SDK に基づいており、ここでは単にカプセル化されており、学習目的のみにいくつかの基本機能 (天気クエリ、翻訳、自動チャット ロボット、カスタム メニュー インターフェイスなど) を実装しています。コードは次のとおりです。
{
//署名検証パブリックインターフェース
パブリック関数 valid()
{
$echoStr = $_GET["echostr"]; If($this->checkSignature()){
echo $echoStr; 出る
}
}
//メインエントランス処理関数
パブリック関数 responseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; If (!emptyempty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $msgType=trim($postObj->MsgType); switch($msgType){
ケース「テキスト」:
$resultStr=$this->handleText($postObj); 休憩
ケース「イベント」:
$resultStr=$this->handleEvent($postObj); 休憩
デフォルト:
$resultStr=$this->handleDefault($postObj); 休憩
echo $resultStr; }else {
「エラー」をエコーします
出る
}
}
//テキストメッセージを処理します
プライベート関数 handleText($obj){
$keyword=trim($obj->コンテンツ); If(preg_match('/weather/',$keyword)){
$contentStr=$this->handleWeather($obj); }elseif(preg_match('/translation/',$keyword)){
$contentStr=$this->handleTranslation($obj); }その他{
$contentStr=$this->handleChat($obj); return $this->handleStr($obj,$contentStr); }
//天気を操作する
プライベート関数 handleWeather($obj){
$keyword=mb_substr($obj->Content,-2,2,'utf-8'); $zone=mb_substr($obj->Content,0,-2,'utf-8'); If($keyword=='天気' && !emptyempty($zone)){
$zoneArr=json_decode(file_get_contents('http://api.k780.com:88/?app=weather.city&format=json'),true); $zoneArr=$zoneArr['結果']; $cityId='';
foreach($zoneArr as $value){
if($zone==$value['citynm']){
$cityId=$value['weaid'];
壊す;
}
}
if(!emptyempty($cityId)){
$data=file_get_contents("http://api.k780.com:88/?app=weather.today&weaid=$cityId&appkey=10638&sign=3736578f099375665f9f141a6326b757&format=json");
$data=json_decode($data);
$contentStr="今天是:".$data->result->days.",".$data->result->days; ",".$data->result->citynm."天気:".$data->result->weather."n温度:".$data->result->気温. "、
".$data->result->wind_direction.",".$data->result->wind_power.", 最低温度:".$data->result->temp_low.",最高温度:".$data->result->temp_high;
}その他{
$contentStr='找不到输入城市!';
}
}その他{
$contentStr='输入的查询格式不正确!';
}
$contentStr を返します。
}
//处理翻译
プライベート関数 handleTranslation($obj){
$keyword=mb_substr($obj->コンテンツ,0,2,'utf-8');
$words=mb_substr($obj->コンテンツ,2,220,'utf-8');
if($keyword=='翻译' && !emptyempty($words)){
$data=file_get_contents('http://fanyi.youdao.com/openapi.do?keyfrom=zfsblog&key=364295447&type=data&doctype=json&version=1.1&q='.urlencode($words));
$data=json_decode($data,true);
switch($data['errorCode']){
ケース '0':
$contentStr=$data['translation'][0];
壊す;
ケース '20':
$contentStr='要翻訳的文本过长';
壊す;
ケース '30':
$contentStr='無法実行有能翻訳';
壊す;
ケース '40':
$contentStr='サポートされていない言語の種類'; 休憩
ケース '50':
$contentStr='無効なキー'; 休憩
デフォルト:
$contentStr='エラー'; 休憩
}その他{
$contentStr='入力された翻訳形式が正しくありません!'; }
戻り $contentStr; }
//チャット情報を処理します
プライベート関数 handleChat($obj){
$keywords=$obj->コンテンツ; $curlPost=array("チャット"=>$キーワード); $ch =curl_init();//curl を初期化します
curl_setopt($ch, CURLOPT_URL,'http://www.xiaojo.com/bot/chata.php');//指定された Web ページをキャッチします
curl_setopt($ch, CURLOPT_HEADER, 0);//ヘッダーを設定します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//結果が文字列であり、画面に出力されることが必要です
curl_setopt($ch, CURLOPT_POST, 1);//投稿送信メソッド
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $data =curl_exec($ch);//curl を実行します
curl_close($ch);
If(!emptyempty($data)){
$contentStr=$data; }その他{
$ran=rand(1,5); switch($ran){
ケース 1:
$ Contentstr = "Xiaojiu は今日は疲れているので、明日チャットしてください"; 休憩
ケース 2:
$contentStr= "シャオジウは寝ています~~"; 休憩
ケース 3:
$ Contentstr = "フッ ~~ フフ ~~"; 休憩
ケース 4:
$contentStr= "あなたはよく話します、私はもう話しません。"; 休憩
ケース 5:
$contentStr= "あなたはよく話します、私はもう話しません。"; 壊す;
}
}
$contentStr を返します。
}
//创建自定义菜单
パブリック関数 createMenu($data,$token){
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$token);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (互換性; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result =curl_exec($ch);
カール_クローズ($ch);
$result を返します。
}
//查询自定义菜单
関数 getMenu($token){
$url="https://api.weixin.qq.com/cgi-bin/menu/get?access_token=$token";
$ch =curl_init($url);
curl_setopt($ch, CURLOPT_RETURTRANSFER,true) ; //获取データを返す
curl_setopt($ch, CURLOPT_BINARYTRANSFER,true) ; //在启用 CURLOPT_RETURNTRANSFER 時に获取データを返します 候
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
戻り $output =curl_exec($ch);
}
//删除自定义菜单
パブリック関数 deleteMenu($token){
$url="https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".$token;
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$result =curl_exec($ch);
カール_クローズ($ch);
$result を返します。
}
//イベントメッセージを処理します
プライベート関数 handleEvent($obj){
$content='';
switch($obj->Event){
ケース「購読」:
休憩
ケース「購読解除」:
$content.="この公式アカウントを今後ともよろしくお願いいたします。さようなら!";
休憩
デフォルト:
$content.="";
休憩
return $this->handleStr($obj,$content);
}
//応答メッセージ文字列を処理します
プライベート関数 handleStr($obj,$content='',$flag=0){
$textTpl = "";
return sprintf($textTpl, $obj->FromUserName, $obj->ToUserName, time(), $content,$flag);
}
//署名検証関数
プライベート関数 checkSignature()
{
$signature = $_GET["署名"]
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = トークン;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
If( $tmpStr == $signature ){
true を返します。
}その他{
false を返します。
}
}
}
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/931541.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/931541.html
技術記事

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

PHPでは、予測不可能なトークンを使用して、CSRF攻撃を効果的に防ぐことができます。特定の方法には次のものが含まれます。1。フォームのCSRFトークンを生成および埋め込みます。 2.リクエストを処理するときにトークンの有効性を確認します。

H5。ミニプログラムとアプリの主な違いは次のとおりです。技術アーキテクチャ:H5はWebテクノロジーに基づいており、ミニプログラムとアプリは独立したアプリケーションです。経験と機能:H5は軽量で使いやすく、機能が限られています。ミニプログラムは軽量で、インタラクティブが良好です。アプリは強力で、スムーズな経験があります。互換性:H5はクロスプラットフォーム互換性があり、アプレットとアプリはプラットフォームによって制限されています。開発コスト:H5には、開発コストが低く、中程度のミニプログラム、最高のアプリがあります。適用可能なシナリオ:H5は情報表示に適しており、アプレットは軽量アプリケーションに適しており、アプリは複雑な機能に適しています。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPの厳格なタイプは、declare(strict_types = 1)を追加することで有効になります。ファイルの上部に。 1)関数パラメーターのタイプチェックと戻り値を強制して、暗黙の型変換を防ぎます。 2)厳格なタイプを使用すると、コードの信頼性と予測可能性を改善し、バグを減らし、保守性と読みやすさを向上させることができます。

PHPでは、最終的なキーワードを使用して、クラスが継承されないようにし、メソッドが上書きされます。 1)クラスを決勝としてマークする場合、クラスを継承することはできません。 2)メソッドを最終的にマークする場合、メソッドはサブクラスによって書き換えられません。最終的なキーワードを使用すると、コードの安定性とセキュリティが保証されます。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。
