ホームページ バックエンド開発 PHPチュートリアル WeChatインターフェースのシミュレーションテストとWeChat開発テストコード_PHPチュートリアル

WeChatインターフェースのシミュレーションテストとWeChat開発テストコード_PHPチュートリアル

Jul 13, 2016 pm 05:18 PM
インターフェース シミュレーション テスト

WeChat パブリック アカウント (サブスクリプション アカウントまたはサービス アカウント) の開発者になるには、まず、WeChat https://mp.weixin.qq.com バックエンドにログインした後に設定できるインターフェイスを確認する必要があります。しかし、面倒だったので、検証機能(テキストメッセージやグラフィックメッセージへの返信機能)を組み込んだインターフェースクラスを開発しました。実際、開発者になってからインターフェースの検証は役に立ちません。
WeChat 基本クラスのコードをアップロードします: weixin.class.php
class Weixin
{
public $token = '';//token
public $debug = false;//デバッグ ステータスの表示が便利かどうかus デバッグ中に中間データを記録します
public $setFlag = false;
public $msgtype = 'text' //('text','image','location')
public $msg = array();
public function __construct($token,$debug)
{
$this->token = $token;
$this->debug = $debug;
}
//ユーザーが送信したメッセージ (メッセージの内容とメッセージ タイプ) を取得します
public function getMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if ($this->debug)
{
$this->write_log($postStr);
}
if (!empty($ postStr))
{
$this->msg = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$this->msgtype = strto lower($this->msg['MsgType']);
}
}
//テキストメッセージに返信
public function makeText($text='')
{
$CreateTime = time();
$FuncFlag = $this->setFlag 1 : 0;
$textTpl = "
msg['FromUserName']}]]>
msg['ToUserName']}]]>
{$CreateTime}


%s
" ;
return sprintf($textTpl,$text,$FuncFlag);
}
//配列パラメータに基づいてテキストおよびグラフィックメッセージを返信します
public function makeNews($newsData=array())
{
$CreateTime = time( );
$FuncFlag = $this->setFlag ? 1 : 0;
$newTplHeader = "
msg['FromUserName']}]]>
msg['ToUserName']}]>
{ $CreateTime}


%s";
$newTplItem = "




";
$newTplFoot = "
%s
";
$Content = '';
$itemsCount = count($newsData);
$itemsCount = $itemsCount if ($itemsCount)
{
foreach ($newsData as $key => $item)
{
if ($key {
$Content .= sprintf($ newTplItem,$item ['タイトル'],$item['説明'],$item['PicUrl'],$item['Url']);
}
}
}
$header = sprintf($newTplHeader, $newsData[' content'],$itemsCount);
$footer = sprintf($newTplFoot,$FuncFlag);
return $header . $footer;
}
public function Reply($data)
{
if ($this->debug)
{
$this->write_log($data);
}
echo $data;
}
public function valid()
{
if ($this->checkSignature())
{
//if ( $_SERVER['REQUEST_METHOD']=='GET' )
//{
echo $_GET['echostr'];
exit;
//}
}
else
{
write_log('Authentication失敗しました');
exit;
}
}
プライベート関数 checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET[ "nonce"] ;
$tmpArr = array($this->token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr ) ;
if( $tmpStr == $signature )
return true;
else
return false;
}
private function write_log($log)
{
//ここはデバッグ情報を記録する場所です。中間用に自分で改良してください。デバッグ中
}
}
?>

WeChat インターフェイス コード: weixin.php
header("Content-Type: text/html;charset=utf-8");
include_once('weixin.class.php') //WeChat を定義したばかりのリファレンスメッセージ処理クラス
define("TOKEN", "itwatch"); //mmhelper
define('DEBUG', false);
$weixin = new Weixin(TOKEN, DEBUG) //$ weixin-> valid();
$weixin->getMsg();
$type = $weixin->msgtype; //メッセージタイプ
$username = $weixin->msg['FromUserName']; //どのユーザーが与えるメッセージ送信されると、この $username は WeChat によって暗号化されますが、各ユーザーは 1 対 1 で対応します
if ($type==='text')
{
//if ($weixin->msg[' Content'] =='Hello2BizUser')
if ($weixin->msg['Content']=='Hello')
{ //WeChat ユーザーがあなたのアカウントを初めてフォローすると、あなたの公開アカウントはメッセージを受け取ります'Hello2BizUser' の内容で
$reply = $weixin->makeText('Net Vision WeChat パブリック プラットフォームへようこそ');
}
else
{ //ユーザーが入力したテキスト情報です
$keyword = $weixin->msg['Content']; //ユーザーのテキストメッセージの内容
//include_once("chaxun.php") //テキストメッセージはクエリプログラムを呼び出します
//$chaxun= new chaxun(DEBUG, $キーワード, $ユーザー名);
//$results['items'] =$chaxun->search(); //クエリコード
//$reply = $weixin->makeNews($results);
$arrayCon = array(
array(
"タイトル"=>"コンピュータ学習ネットワーク",
"説明"=>"10万のなぜ - コンピュータ学習ネットワーク",
"PicUrl"=>"http://www.veryphp.cn /datas/userfiles/8bd108c8a01a892d129c52484ef97a0d/images/website13.jpg",
"Url"=>"http://www.why100000.com/"
),
array(
"Title"=>"Very PHP Learning Network" ,
"説明"=>"大規模な PHP 学習共有コミュニティ",
"PicUrl"=>"http://www.veryphp.cn/datas/userfiles/8bd108c8a01a892d129c52484ef97a0d/images/php01.jpg",
"Url"= >"http://www.veryphp.cn/"
)
);
$results = $arrayCon;
$reply = $weixin->makeNews($results);
}
}
elseif ($type== ='location')
{
//ユーザーは後で処理される位置情報を送信します
}
elseif ($type==='image')
{
//ユーザーは後で処理される画像を送信します
}elseif ( $type==='voice')
{
// ユーザーは後で処理される音声を送信します
}
//
$weixin->reply($reply);
?>

WeChat インターフェイスのコードを使用します。curl 関数を完了するには、PHP のcurl 拡張機能を開く必要があります。 weixin.php ファイルの //$weixin->valid(); からコメントを削除して確認してください。完了したら、この文をコメントアウトしてください。





//header("Content-Type: text/html;charset=utf-8"); //データを準備します
define('TOKEN', ' itwatch');//定義したトークンは通信用の秘密鍵です
$echostr = 'このデータが返されるということは、それが正しいことを示します。 ';
$timestamp = (string)time(); //これは整数なので文字列に変換する必要があります
$nonce = 'my-nonce';
$signature = signed(TOKEN, $timestamp, $nonce) ;

関数シグネチャ($token, $timestamp, $nonce)
{
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode($tmpArr) ;
$tmpStr = sha1($tmpStr);
return $tmpStr;
}
//Submit
$post_data = array(
"signature=$signature",
"timestamp=$timestamp",
"nonce=$nonce ",
"echostr=$echostr"
);
$post_data = implode('&',$post_data);
$url='http://www.veryphp.cn/tools/weixin/weixin.php';
$ ch =curl_init();
curl_setopt($ch, CURLOPT_URL, $url.'?'.$post_data); //GETメソッドをシミュレートします
ob_start();
curl_exec($ch);
$result = ob_get_contents ();
ob_end_clean();
echo $result;
?>

上記のコア コードは weixin.class.php と weixin.php の 2 つのファイルで、デバッグは成功し、サーバーにデプロイされました。テストしたい場合は、携帯電話の WeChat を使用して WeChat ID: itwatch を聞き、「Hello」と入力すると、次の文字列が返されます: Net Vision Weixin Public Platform へようこそ。入力するだけでグラフィックメッセージが開きます。


さて、私はとても眠くてこれから寝ようとしているので、上記のコードが非常に汚いことは認めます。しかし、上記のコードは実際に動作し、典型的な原理実装テスト コードです。 WeChat 開発者がそれを理解した後、データベースと組み合わせて完全に機能する WeChat 情報バックグラウンド管理プログラムを作成できるようにするためのアイデアを提供したいと考えています。 。
WeChat サービス アカウントをお持ちの場合は、それに基づいてメニューを開発し、上記のコードに基づいて開発されたメッセージ返信システムを呼び出すことができます。実はとても簡単です。
これは、企業の Web サイトを作成してデータを入力し、それを順番に取得してページに表示するよりもはるかに興味深い、本物のネットワーク コミュニケーション プログラムです。

メッシュ・チャン・チン
2013-12-3 ?

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/621644.html技術記事 WeChat パブリック アカウント (サブスクリプション アカウントまたはサービス アカウント) の開発者になるには、まずインターフェイスを確認する必要があります。これは WeChat https://mp.weixin.qq.com バックエンドにログインした後に設定できます。でも面倒だな…
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

furmark についてどう思いますか? - furmark はどのように資格があるとみなされますか? furmark についてどう思いますか? - furmark はどのように資格があるとみなされますか? Mar 19, 2024 am 09:25 AM

furmark についてどう思いますか? 1. メインインターフェイスで「実行モード」と「表示モード」を設定し、「テストモード」も調整して「開始」ボタンをクリックします。 2. しばらく待つと、グラフィックス カードのさまざまなパラメータを含むテスト結果が表示されます。ファーマークはどのように資格を取得しますか? 1. ファーマークベーキングマシンを使用し、約 30 分間結果を確認します。室温 19 度、ピーク値は 87 度で、基本的に 85 度前後で推移します。大型シャーシ、シャーシ ファン ポートが 5 つあり、前面に 2 つ、上部に 2 つ、背面に 1 つありますが、ファンは 1 つだけ取り付けられています。すべてのアクセサリはオーバークロックされていません。 2. 通常の状況では、グラフィックス カードの通常の温度は「30 ~ 85℃」である必要があります。 3. 周囲温度が高すぎる夏でも、通常の温度は「50〜85℃」です

コンピュータのマザーボードの内部インターフェイスとは何ですか? コンピュータのマザーボードの内部インターフェイスに関する推奨される入門 コンピュータのマザーボードの内部インターフェイスとは何ですか? コンピュータのマザーボードの内部インターフェイスに関する推奨される入門 Mar 12, 2024 pm 04:34 PM

パソコンを組み立てる際、設置作業は簡単ですが、誤ってCPUラジエーターの電源線をSYS_FANに差し込んでしまうなど、配線に問題が発生することが多く、ファンは回転しますが、ファンが回転しない場合があります。コンピュータの電源がオンになると、F1 エラー「CPUFanError」が発生し、CPU クーラーがインテリジェントに速度を調整できなくなります。コンピューターのマザーボード上の CPU_FAN、SYS_FAN、CHA_FAN、および CPU_OPT インターフェイスに関する一般的な知識を共有しましょう。コンピュータのマザーボード上の CPU_FAN、SYS_FAN、CHA_FAN、および CPU_OPT インターフェイスに関する一般科学 1. CPU_FANCPU_FAN は、CPU ラジエーター専用のインターフェイスであり、12V で動作します。

Go 言語の一般的なプログラミング パラダイムと設計パターン Go 言語の一般的なプログラミング パラダイムと設計パターン Mar 04, 2024 pm 06:06 PM

最新の効率的なプログラミング言語である Go 言語には、開発者が高品質で保守可能なコードを作成するのに役立つ豊富なプログラミング パラダイムと設計パターンがあります。この記事では、Go 言語の一般的なプログラミング パラダイムと設計パターンを紹介し、具体的なコード例を示します。 1. オブジェクト指向プログラミング Go 言語では、構造体とメソッドを使用してオブジェクト指向プログラミングを実装できます。構造を定義し、その構造にメソッドをバインドすることにより、データのカプセル化と動作バインディングのオブジェクト指向機能を実現できます。パッケージマイニ

新しい仙霞の冒険に参加しましょう! 「朱仙2」「武威検定」の事前ダウンロードが開始されました 新しい仙霞の冒険に参加しましょう! 「朱仙2」「武威検定」の事前ダウンロードが開始されました Apr 22, 2024 pm 12:50 PM

新作ファンタジー妖精MMORPG『朱仙2』の「武威試験」が4月23日より開始されます。原作から数千年後の朱仙大陸で、どのような新たな妖精冒険物語が繰り広げられるのでしょうか?六界の不滅の世界、フルタイムの不滅のアカデミー、自由な不滅の生活、そして不滅の世界のあらゆる種類の楽しみが、不滅の友人たちが直接探索するのを待っています! 「Wuwei Test」の事前ダウンロードが開始されました。Fairy friends は公式 Web サイトにアクセスしてダウンロードできます。サーバーが起動する前に、アクティベーション コードは事前ダウンロードとインストール後に使用できます。完成されました。 『朱仙2』「不作為試験」開催時間:4月23日10:00~5月6日23:59 小説『朱仙』を原作とした朱仙正統続編『朱仙2』の新たな童話冒険篇原作の世界観をベースにゲーム背景を設定。

PHP インターフェースの概要とその定義方法 PHP インターフェースの概要とその定義方法 Mar 23, 2024 am 09:00 AM

PHP インターフェースの概要とその定義方法 PHP は、Web 開発で広く使用されているオープンソースのスクリプト言語であり、柔軟性があり、シンプルで強力です。 PHP では、インターフェイスは複数のクラス間で共通のメソッドを定義し、ポリモーフィズムを実現し、コードをより柔軟で再利用可能にするツールです。この記事では、PHP インターフェイスの概念とその定義方法を紹介し、その使用法を示す具体的なコード例を示します。 1. PHP インターフェイスの概念 インターフェイスはオブジェクト指向プログラミングにおいて重要な役割を果たし、クラス アプリケーションを定義します。

国産FPSの新たな王者! 「オペレーション・デルタ」の戦場は予想を超える 国産FPSの新たな王者! 「オペレーション・デルタ」の戦場は予想を超える Mar 07, 2024 am 09:37 AM

「オペレーション デルタ」は本日(3月7日)より大規模PCテスト「コードネーム:ZERO」を開始する。先週末、上海で本作のオフラインフラッシュモブ体験イベントが開催され、幸運にも17173さんも参加することができました。前回のテストからわずか 4 か月以上しか離れていないため、この短期間で「オペレーション デルタ」がどのような新たなハイライトやサプライズをもたらすのか、興味が湧きます。 4か月以上前、私はオフライン試食会と最初のベータ版で「オペレーション デルタ」を体験しました。当時、ゲームは「危険なアクション」モードのみを開きました。しかし、デルタ作戦は当時としてはすでに印象的なものでした。大手メーカーがモバイルゲーム市場に群がる中、国際基準に匹敵するFPS

さまざまな言語での機能テストとカバレッジの違いは何ですか? さまざまな言語での機能テストとカバレッジの違いは何ですか? Apr 27, 2024 am 11:30 AM

機能テストでは、ブラック ボックス テストとホワイト ボックス テストを通じて機能の機能を検証します。一方、コード カバレッジでは、テスト ケースによってカバーされるコードの部分を測定します。言語 (Python や Java など) が異なれば、テスト フレームワーク、カバレッジ ツール、機能も異なります。実際の事例では、関数テストとカバレッジ評価に Python の Unittest と Coverage、Java の JUnit と JaCoCo を使用する方法を示します。

PHP Jenkins 101: CI/CD を始める唯一の方法 PHP Jenkins 101: CI/CD を始める唯一の方法 Mar 09, 2024 am 10:28 AM

はじめに 継続的インテグレーション (CI) と継続的デプロイメント (CD) は、チームが高品質のソフトウェアをより迅速かつ確実に提供するのに役立つ、最新のソフトウェア開発における重要な手法です。 Jenkins は、ビルド、テスト、デプロイメントのプロセスを自動化する人気のオープンソース CI/CD ツールです。この記事では、PHP を使用して Jenkins で CI/CD パイプラインを設定する方法について説明します。 Jenkins のセットアップ Jenkins のインストール: Jenkins の公式 Web サイトから Jenkins をダウンロードしてインストールします。プロジェクトの作成: Jenkins ダッシュボードから新しいプロジェクトを作成し、php プロジェクトに一致する名前を付けます。ソース管理の構成: PHP プロジェクトの git リポジトリを Jenkin として構成します

See all articles