ホームページ  >  記事  >  php教程  >  PHP WeChat開発におけるカスタムメニューの実装

PHP WeChat開発におけるカスタムメニューの実装

高洛峰
高洛峰オリジナル
2016-12-12 10:01:151121ブラウズ

編集モードと開発モードは競合しています。したがって、WeChat 公式アカウントの開発モードを有効にすると、これらのメニューは表示されなくなります。ただし、現在、個人サブスクリプション アカウントではカスタム メニューなどの高度な開発者モードを使用できませんが、テスト アカウントを通じてテストし、コードをサービス アカウントに移動することはできます。

カスタム タイプには以下が含まれます:

1. クリック: クリック プッシュ イベント
• ユーザーがクリック タイプ ボタンをクリックした後、WeChat サーバーはメッセージ インターフェイスを通じてメッセージ タイプ イベント構造を開発者にプッシュします (「メッセージ インターフェイス ガイド)。開発者がボタンにキー値を入力すると、開発者はカスタマイズされたキー値を通じてユーザーと対話できます。

2. ユーザーがビュー タイプをクリックした後、ボタンをクリックすると、WeChat クライアントは開発者がボタンに入力した Web ページ URL を開きます。これを Web ページ認証インターフェイスと組み合わせて、ユーザーの基本情報を取得することができます。

3. scancode_push: スキャン コード プッシュ イベント

• ユーザーがボタンをクリックすると、WeChat クライアントはスキャン コード操作の完了後にスキャン ツールを起動します (URL の場合は、 URL が入力されます)、コードのスキャン結果が開発者に送信され、開発者はメッセージを送信できます。

4. scancode_waitmsg: コードをスキャンしてイベントをプッシュし、「メッセージ受信」プロンプト ボックスをポップアップ表示します

• ユーザーがボタンをクリックすると、コード スキャン操作が完了すると、WeChat クライアントがスキャン ツールを起動します。スキャンコードの結果が開発者に送信されます。同時にスキャンツールをしまうと、「メッセージ受信中」のプロンプトボックスが表示され、開発者からメッセージが届く場合があります。

カスタム タイプには以下が含まれます:


5. pic_sysphoto: ユーザーが写真を撮って送信するためにボタンをクリックすると、WeChat クライアントは写真操作の完了後にシステム カメラを呼び出します。撮影された写真

は開発者に送信され、イベントを開発者にプッシュし、同時にシステムカメラをしまうと、開発者からメッセージを受け取る場合があります。

6. pic_photo_or_album: ユーザーが写真を撮るかアルバムに写真を送信するボタンをクリックすると、WeChat クライアントはユーザーが「写真を撮る」または「携帯電話から選択」を選択するためのセレクターをポップアップします。アルバム"。ユーザーが選択した後、他の 2 つのプロセスを実行します。


7. pic_weixin: WeChat フォト アルバム送信者がポップアップし、ユーザーがボタンをクリックすると、選択操作が完了すると、WeChat クライアントは WeChat フォト アルバムを呼び出し、選択された写真が開発者のサーバーに送信されます。イベントは開発側にプッシュされます。同時にフォトアルバムを閉じると、後ほど開発側からメッセージが届く場合があります。


コードが提供されます。コードをサーバーにアップロードし、公式アカウントを再度フォローすると、開発モードでカスタムメニューが表示されます

$appid = '微信公众号的appid'; 
$appsecret = '微信公众号的appsecret'; 
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret=$appsecret"; 
$output = https_request($url); 
$jsoninfo = json_decode($output,true); 
$access_token = $jsoninfo["access_token"]; 
$jsonmenu = '{ 
  "button":[ 
  { 
   "name":"学校系统", 
   "sub_button":[ 
    { 
     "type":"click", 
     "name":"课程表", 
     "key":"课程表"
    }, 
    { 
     "type":"click", 
     "name":"个人信息", 
     "key":"个人信息"
    }, 
    { 
     "type":"click", 
     "name":"平时成绩", 
     "key":"平时成绩"
    }, 
    { 
     "type":"click", 
     "name":"奖惩记录", 
     "key":"奖惩记录"
    } 
   ] 
  }, 
  { 
   "name":"技术分享", 
   "sub_button":[ 
    { 
     "type":"click", 
     "name":"移动WEB开发", 
     "key":"移动WEB开发"
    }, 
    { 
     "type":"click", 
     "name":"J2EE框架", 
     "key":"J2EE框架"
    }, 
    { 
     "type":"click", 
     "name":"Android开发", 
     "key":"Android开发"
    }, 
    { 
     "type":"click", 
     "name":"PHP框架", 
     "key":"PHP框架"
    } 
   ] 
  },{ 
   "name":"技术支持", 
   "sub_button":[ 
    { 
     "type":"click", 
     "name":"在线客服", 
     "key":"在线客服"
    }, 
    { 
     "type":"click", 
     "name":"技术分享", 
     "key":"技术分享"
    }, 
    { 
     "type":"view", 
     "name":"天气预报", 
     "url":"http://m.hao123.com/a/tianqi"
    } 
   ] 
  } 
  
 ] 
 }'; 
  
  
 //创建菜单实现 
 $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$access_token; 
 $result = https_request($url,$jsonmenu); 
 var_dump($result); 
 function https_request($url,$data = null){ 
  $curl = curl_init(); 
  curl_setopt($curl,CURLOPT_URL,$url); 
  curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0); 
  curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0); 
  if(!empty($data)){ 
   curl_setopt($curl,CURLOPT_POST,1); 
   curl_setopt($curl,CURLOPT_POSTFIELDS,$data); 
  } 
  curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); 
  $output = curl_exec($curl); 
  curl_close($curl); 
  return $output; 
 }

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