ホームページ  >  記事  >  バックエンド開発  >  WeChatパブリックプラットフォームPhp版php開発(譲渡)

WeChatパブリックプラットフォームPhp版php開発(譲渡)

WBOY
WBOYオリジナル
2016-06-23 14:37:30919ブラウズ

http://www.1990c.com/?p=932

最近私はWeChatパブリックプラットフォームの開発を行っており、一気に20個以上の関数を書いたのですが、とても面白いです~



今日は開発体験を共有します~
WeChatパブリックプラットフォームが提供するインターフェイスは非常にシンプルです。まずメッセージインタラクションプロセスを見てみましょう:



もっと簡単に言うと、ユーザーはWeChatを使用してメッセージを送信します -> ; WeChat は開発者にデータを送信します -> 開発者はメッセージを処理し、データを WeChat に返します -> WeChat は返されたデータをユーザーに送信し、その間にデータのやりとりは XML を通じて完了します。

WeChat インテリジェント チャットボットを開発するには、以下の例を作成します:

1. WeChat パブリック プラットフォーム アカウントを登録します

WeChat パブリック プラットフォーム:
https://mp.weixin.qq.com/


注: 現在a IDカードに登録できるアカウントは2つまでです。アカウント名はV付加認証に関係しますので、慎重に登録してください。

2. サーバー/仮想ホストを申請する
サーバー/仮想ホストをお持ちでない方は、BAE と SAE を使用できます。これ以上説明する必要はありません。

3. 開発者モードをオンにする
WeChat パブリック プラットフォームには 2 つのモードがあり、1 つはシンプルですが単一の機能を備えた編集モード (愚者モード) です。もう 1 つは開発者モードで、開発を通じて複雑な機能を実装できます。明らかに、2 つのモードは相互に排他的です。WeChat パブリック プラットフォームにログインし、[高度な機能] メニューから開発者モードをオンにします。

4. インターフェース構成情報を入力します
これは「高度な機能」メニューでも構成され、次の 2 つのパラメーターを構成する必要があります:
URL: 開発者アプリケーションのアクセス アドレス。現在はポート 80 のみをサポートしており、「http:/」 /www.1990c .com/weixin/index.php」を例として挙げます。
トークン: 署名を生成したいものをすべて入力します。例として「1990c」を取り上げます。
入力後、次のコードをindex.phpとして保存し、http://www.1990c.com/weixin/ディレクトリにアップロードし、最後に「送信」をクリックして検証を完了します。

01

02 define("トークン", "1 90c"); //トークン値

03 $wechatObj = 新しいwechat();

04 $wechatObj->valid();

05クラスwechat {

06 パブリック関数 valid() {

07 $echoStr = $_GET["echostr"];

08 if($this - >checkSignature()){

09

12

}

13

14

プライベート関数 checkSignature() {

15

$signature = $ _Get ["署名"]; "];

18 $token = トークン;

19 $tmpArr = array($toケン、$timestamp、$nonce);

20 sort($tmpArr);

21 $tmpStr = implode( $tmpArr );

22 $tmpStr = sha1( $tmpStr );

23
if( $tmpStr == $signature ) {

24
return true ;

25
} else {

26
return false;

27
}

28
}

29
}

30
?>
这玩意儿就是微信公众平台校验URL 正确入,研究代无有实质性意义,验证完可删除文件,就不详细说明了

微信公平台 API 文档:

http://mp.weixin.qq.com/wiki/index.php


5. マイクロ信公平台の機能の公開
OK、上で述べたように、マイクロ信公平台と公開者間のデータのやり取りは XML を介して行われ、XML に変換され、当然準拠するため、公開の前に官方インターフェイスの文書を参照してください。提供された XML 范、本文メッセージの例:

当用户向微信公众账号送信メッセージ時、微信服务器会POST给开発行者いくつかのデータ:

01

02

03

< ;/ToUserName>

04

05

<ユーザー名から>
06

07

< ;CreateTime>12345678
08

09

10

11

12

13 1234567890123456

14


メッセージを処理した後、開発者はデータを WeChat サーバーに返す必要があります。

< !--受信者アカウント ( OpenID) -->

03

04< !- -開発者 WeChat ID-->

05

06

0712345678

08< !--メッセージ カテゴリ (テキスト テキスト メッセージ)-->

09

10

11

12

13 0< ; /FuncFlag>

14

WeChat パブリック プラットフォームでは、ユーザーによるメッセージの送信もサポートされています。画像メッセージ、位置メッセージ、リンクメッセージとイベントのプッシュ、開発者は WeChat パブリック プラットフォームへの音楽メッセージやグラフィック メッセージに返信することもできます。さまざまなメッセージ XML 仕様も公式ドキュメントに記載されています。 公式の PHP の例を見てみましょう。いくつか簡略化しました:

01

0 2

$wechatObj = 新しい wechat() ;

03$wechatObj->responseMsg();

04
クラスwechat {

05
public function responseMsg() {

06

---------------------- --------------------------------- //

08

09

11 // 渡された XML データの SimpleXML 分析を使用します。

12
$ PostObj = Simplexml_LOAD_STRING ($ Poststr 、「simplexmlement」、libxml_nocdata); $ PostObj- & GT Content); // メッセージの内容を取得します

18

19

20

- // $textTpl = "

24

25

27 ;コンテンツ>

2930

31

32

$ms gType = "text" //メッセージタイプ

33 $ Contentstr = 'http://www.1990c.com' // メッセージの内容を返す // メッセージ テンプレートの書式設定

36 $resultStr = sprintf( $textTpl,$fromUsername,$toUsername,

}
37 $time,$msgType,$contentStr

40}

41?>

次に行う必要があるのは、ユーザーのメッセージに基づいて動的に結果を返すことです~
コードをindex.phpとして保存し、http://www.1990c.com/weixin/ ディレクトリにアップロードします。ファイルが削除されていない場合は、上書きします。それを直接。 現在、ユーザーは WeChat パブリック プラットフォームを通じてメッセージを送信すると、パブリック アカウントは「http://www.1990c.com」というコンテンツを含むメッセージを返します。
SimSimi (Little Yellow Chicken) は現在人気のチャット ロボットです。CURL と入力キーワード A を使用して無料の SimSimi (Little Yellow Chicken) インターフェイスを開発しました。この部分はこの記事の焦点では​​ないので、これ以上は説明しません:

01

02 function S imSimi($keyword ) {

03

04

//---------- クッキーを取得 - ---------/ /


05
$url = "http://www.simsimi.com/";

06

$ ch =curl_init($url);

07

curl_setopt($ch, CURLOPT_HEADER,1);

0 8

curl _setopt($ch, CURLOPT_RETURNTRANSFER,1) ;

09

$content =curl_exec($ch);
10

list($header, $body) =explode("rnrn", $content) ;

11

preg_match("/set-cookie:([^rn]*);/iU", $header, $matches);

12

$cookie = $matches[1];

13

curl_close($ch);

14

15

/ /---------- 返信を取得----------//

16 $url = "http://www.simsimi.com/func/req?lc=ch&msg=$keyword";

17 $ch =curl_init( $url);

18 curl_setopt($ch, CURLOPT_REFERER, "http://www.simsimi.com/talk.htm?lc=ch");

19 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

20 curl_setopt($ch, CURLOPT_COOKIE, $cookie) ;

21 $content = json_decode(curl_exec($ch),1);

22 curl_close($ch);

23

24 if($content['result']=='100') {

25 $content['response'];

26 return $content[ 「応答」];

27 } else {

28
return '我还不会回答这个问题...';

29
}

30
}

31

?>
掌上面二段代码整合在一起就大功告成了、要点説明、微信サーバーは 5 秒以内に接続を切断せず、このインターフェースを通過する可能性は超過する可能性があり、SimSimi は BAE および SAE 上の取得要求をシールドしています。比较快~ 最終附上微信公众平台智能聊天机人源网下劣:

http://www.1990c.com/wp-content/uploads/2013/05/40 .rar


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。