この拡張機能は、SP と WeChat パブリック プラットフォーム間の接続を実現します。バージョン 1.0 では、現時点では、バインディング、情報の受信、および情報への返信という最も単純な機能のみが実装されています。
拡張設定方法:
$spConfig = array(
'モード' => 'デバッグ'
//拡張設定
, 'ext' => array(
//WeChat 拡張機能の設定
'spWeiXin' => array(
'TOKEN' => 'weixin' //WeChat通信キー、バックグラウンド設定
))
)
);次に、制御メソッドで実行します:
$wx = spClass('spWeiXin'); $msg = $wx->run();バインドされている場合は、WeChat で指定された echostr が直接出力され、プログラムは実行を終了します。メッセージを受信した場合、$msg は受信したメッセージの配列であり、キー名を WeChat 公式ドキュメントと比較できます。
/**
* SpeedPHP WeChat インターフェイス拡張機能
*
2013 年 8 月 15 日 08:51:23
* @著者 Lee(leeldy[AT]163.com)
* @バージョン 1.0
*/
クラス spWeiXin {
//WeChatコミュニケーションキー
プライベート $token;
//WeChat 公開アカウント ID
プライベート $publicuserid;
//情報受信者
プライベート $touserid;
パブリック関数 __construct() {
$params = spExt('spWeiXin');
//設定パラメータを取得します
if (empty($params['TOKEN'])) {
spError('WeChat 公開アカウント通信キーが設定されていません!');
}
$this->token = $params['TOKEN'];
}
/**
* * WeChat インターフェースをバインド
* @return stringfalse
*/
パブリック関数bind() {
//ランダムな文字列
$echoStr = $_GET["echostr"];
//WeChat 暗号化署名
$signature = $_GET["署名"];
//署名のタイムスタンプ
$timestamp = $_GET["timestamp"];
//暗号化された乱数
$nonce = $_GET["nonce"];
/*
* 暗号化/検証プロセス:
1. トークン、タイムスタンプ、ノンスの 3 つのパラメータを辞書順に並べ替えます
2. sha1 暗号化用に 3 つのパラメータ文字列を 1 つの文字列に連結します
3. 開発者が取得した暗号化された文字列を署名と比較することで、リクエストが WeChat からのものであることを示すことができます
*/
$tmpArr = array($this->token, $timestamp, $nonce);
sort($tmpArr);
$_signature = sha1(implode($tmpArr));
if ($_signature != $signature) {
//署名が間違っています、falseを返します
$echoStr = false;
}
return $echoStr;
}
/**
* 受信メッセージ、返信メッセージ数组
* @return 配列
*/
パブリック関数受信() {
$raw = $this->php_fix_raw_query();
$msg = false;
if (!empty($raw)) {
$msg = (配列) simplexml_load_string($GLOBALS['HTTP_RAW_POST_DATA'], 'SimpleXMLElement', LIBXML_NOCDATA);
$this->publicuserid = $msg['ToUserName'];
$this->touserid = $msg['FromUserName'];
}
$msg を返す;
}
/**
* POST
で提出された元データを取得します* @author robotreply at gmail dot com (24-Jul-2009 08:17)
* @戻り文字列
*/
プライベート関数 php_fix_raw_query() {
// グローバル配列を試してください
//试图从全局变量中获取
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) {
return $GLOBALS["HTTP_RAW_POST_DATA"];
}
// グローバル変数を試してください
//试图从全局变量中获取
if (isset($HTTP_RAW_POST_DATA)) {
$HTTP_RAW_POST_DATA を返します;
}
$post = '';
// ストリームを試してください
//试图从流中获取
if (!function_exists('file_get_contents')) {
//php://input は enctype="multipart/form-data" では使用できません。
$fp = fopen("php://input", "r");
if ($fp) {
while (!feof($fp)) {
$post = fread($fp, 1024);
}
fclose($fp);
}
} else {
$post = file_get_contents("php://input");
}
$post を返す;
}
/**
* テキスト メッセージに返信
*
POST リクエストごとに、開発者は応答パッケージで特定の XML 構造を返します
*
メッセージに返信 (受信メッセージのテキスト、画像、音声、ビデオ、音楽、スター操作への返信をサポート)
*
5 秒以内に応答を受信しない場合、WeChat サーバーは切断されます。
* @param string $Content 返信メッセージの内容
* @return stringfalse
*/
パブリック関数 ReplyText($Content) {
$msg = false;
if (!empty($Content)) {
//作成時間 消息创建時間间
$CreateTime = time();
$msg =
touserid}]]>
publicuserid}]]>
{$CreateTime}
コンテンツ>
XML;
}
$msg を返す;
}
/**
* 音楽メッセージに返信
* @param string $Title タイトル
* @param string $Description 説明
* @param string $MusicUrl 音楽リンク
* @param string $HQMusicUrl 高品質の音楽リンク、WIFI 環境では、このリンクを使用して音楽を再生することが優先されます
* @return stringfalse
*/
public function ReplyMusic($Title, $Description, $MusicUrl, $HQMusicUrl) {
$msg = false;
if (!empty($MusicUrl)) {
//作成時間 消息创建時間间
$CreateTime = time();
$msg =
touserid}]]>
publicuserid}]]>
{$CreateTime}
タイトル>
説明>
音楽>
XML;
}
$msg を返す;
}
/**
*グラフィックメッセージに返信
* @param type $Articles 記事リスト array(array(Title,PicUrl,Url))
* @return stringfalse
*/
public function ReplyNews($Articles) {
$msg = false;
$articlesStr = '';
//図文メッセージ数、制限は10条以内
$ArticleCount = 0;
foreach ($Articles as $_art) {
if (!empty($_art['Title']) && !empty($_art['PicUrl']) && !empty($_art['Url'])) {
$ArticleCount++;
$articlesStr .= "
タイトル>
説明>
";
}
}
if (!empty($ArticleCount)) {
//作成時間 消息创建時間间
$CreateTime = time();
$msg =
touserid}]]>
publicuserid}]]>
{$CreateTime}
{$ArticleCount} {$articlesStr}
記事>
XML;
}
$msg を返す;
}
/**
*
を実行します* @戻り値の型
*/
関数 run() {
// 微信サービス务器次请要求都市将署名、タイムスタンプ、ノンス 3 つのパラメータGET インターフェイス
//echostr が存在するかどうかだけで、インターフェイス決定動作であるかどうかを判断できます
if (isset($_GET['echostr'])) {
//绑定
exit($this->bind());
} else {
//收到情報
return $this->receive();
}
}
}
?>

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
