作成プロセスには署名検証が必要で、これについては次のように説明します。
パブリック プラットフォームのユーザーが情報を送信した後、GET リクエストの形式で入力された URL をリクエストし、4 つのパラメーターを渡します:
* 署名 — WeChat 暗号化された署名
* タイムスタンプ — タイムスタンプ
* nonce — 乱数
* echostr — ランダムな文字列
開発者は、署名をチェックすることで URL アクセスの合法性を検証します。この GET リクエストが echostr パラメータの内容をそのまま返すとアクセスが有効となり、それ以外の場合はアクセスが失敗します。検証署名は、開発者によって入力されたトークン パラメーター、タイムスタンプ パラメーター、およびノンス パラメーターと結合されます。暗号化プロセスは次のとおりです。
* トークン、タイムスタンプ、およびノンスの 3 つのパラメーターを辞書順に並べ替えます
* 3 つのパラメーターを結合します。文字列を 1 文字にまとめます 文字列は SHA1 で暗号化されています
* 開発者が取得した暗号化された文字列を署名と比較することで、リクエストが WeChat からのものであることを示すことができます。
コード:
<? $signature = $_GET['signature']; $timestamp = $_GET['timestamp']; $nonce = $_GET['nonce']; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return $_GET['echostr']; }else{ return false; } ?>
ただし、WeChat はデータの送信に json を使用しません:
そのため、XML データをオブジェクトとしてロードするには simplexml_load_string を使用する必要があります。また、POST メソッドが urlencode ではないことがわかりました。 HTTP_RAW_POST_DATA を設定すると、データを読み取ることができます。
ToUserName はメッセージ受信者の WeChat ID で、通常はパブリック プラットフォームの WeChat アカウントがメッセージ送信者の WeChat ID です。
以上がWeChat インターフェース開発の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。