ホームページ >バックエンド開発 >PHPチュートリアル >WeChat パブリック アカウント開発用の WeChat パブリック プラットフォーム メッセージ返信クラスの例、パブリック example_PHP チュートリアル

WeChat パブリック アカウント開発用の WeChat パブリック プラットフォーム メッセージ返信クラスの例、パブリック example_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:14:12780ブラウズ

WeChatパブリックアカウント開発のためのWeChatパブリックプラットフォームメッセージ返信クラスの例、パブリックサンプル

この記事の例では、WeChat パブリック アカウント用に開発された WeChat パブリック プラットフォームのメッセージ返信クラスについて説明します。参考のためにみんなで共有してください。詳細は以下の通りです

実際、インターネット上で WeChat のパブリック アカウント開発コードをたくさん見てきましたが、それらはすべて似ており、公式のデモ ファイルを参照して変更されています。

コードをコピーします コードは次のとおりです:

/**
* WeChatパブリックプラットフォームのメッセージ返信クラス
*
*
​*/
クラスBBCweixin{
 
 プライベート $APPID="******";
 プライベート $APPSECRET="******";
 /*
  *文本メッセージ回复
  *@param配列オブジェクト
  *@param文字列の内容
  *@戻り文字列
  */
 パブリック関数 resText($object,$content,$flag=0){
  $xmlText="
                 
                 
                  %s
                 
                  <コンテンツ>
                  %d
                 
";
     $resultStr=sprintf($xmlText,$object->FromUserName,$object->ToUserName,time(),$content,$flag);
  echo $resultStr;exit();
 }
 /*
  *画像メッセージ返信
  *@param配列オブジェクト
  *@param文字列URL
  *@戻り文字列
  */
 パブリック関数 resImage($object,$media_id){
  $xmlImage="";
  $xmlImage.="";
  $xmlImage.="";
  $xmlImage.="%s";
  $xmlImage.="";
  $xmlImage.="";
  $xmlImage.="
";
  $resultStr=sprintf($xmlImage,$object->FromUserName,$object->ToUserName,time(),$media_id);
  echo $resultStr;exit();
 }
 /*
  *图文メッセージ回复
  *@param配列オブジェクト
  *@param array newsData 二维数组 [タイトル][説明][PicUrl][Url]文字列が必ず含まれます
  *@戻り文字列
  */
 パブリック関数 resNews($object,$newsData=array()){
     $CreateTime=time();
     $FuncFlag=0;
     $newTplHeader="
        FromUserName}]]>
        ToUserName}]]>
        {$CreateTime}
       
        <コンテンツ>
        %s";
     $newTplItem="<アイテム>
      <タイトル>
      <説明>
     
     
      ";
     $newTplFoot="
      %s
";
$Content='';
$itemsCount=count($newsData);
$itemsCount=$itemsCount<10?$itemsCount:10;//WeChat パブリック プラットフォームは、一度に最大 10 件の写真とテキスト付きのメッセージに返信できます
If($itemsCount){
foreach($newsData as $key=>$item){
If($key $Content.=sprintf($newTplItem,$item['Title'],$item['Description'],$item['PicUrl'],$item['Url']);
}
}
}
$header=sprintf($newTplHeader,0,$itemsCount);
$footer=sprintf($newTplFoot,$FuncFlag);
echo $header.$Content.$footer;exit();
}

/*
*音楽メッセージ返信
*@param配列オブジェクト
*@param array musicContent 2次元配列には[Title][Description][MusicUrl][HQMusicUrl]フィールドが含まれます
*@戻り文字列
*/
パブリック関数 resMusic($object,$musicContent=array()){
$xmlMusic="
&lt; tousername&gt;&lt;! &lt; fromusername&gt;&lt;![cdata [%s]]&gt;&lt; &lt; createtime&gt;%s&lt;/createtime&gt;
&lt; msgtype&gt;&lt;![cdata [music]]&gt;&lt;/msgtype&gt;                                                                                                              <タイトル>
&lt;説明&gt;&lt;! &lt; musicurl&gt;&lt;! &lt; hqmusicurl&gt;&lt;![cdata [%s]]&gt;&lt;/hqmusicurl&gt;                                                                                                                                                                                                                       if(empty($musicContent[0]['HQMusicUrl'])){
$musicContent[0]['HQMusicUrl']=$musicContent[0]['MusicUrl'];
}
$resultStr=sprintf($xmlMusic,$object->FromUserName,$object->ToUserName,time(),$musicContent[0]['Title'],$musicContent[0]['Description'],$musicContent [0]['MusicUrl'],$musicContent[0]['HQMusicUrl']);
echo $resultStr;exit();
}
/*
*マルチメディアファイルインターフェースをアップロード
*@param
*@param 配列 mediaArr ファイル名、ファイル長、コンテンツ タイプ
*@オブジェクトを返す
*/
パブリック関数 UploadMedia($accessToken,$type='image',$mediaArr){
$url="http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=".$accessToken."&type=".$type;
$doPost=self::curlPost($mediaArr,$url);
$doPost を返します;
}
/*
*GPS、Google 座標を Baidu 座標に変換
*@param lnt
*@param lat
*@配列を返す
*/
パブリック関数mapApi($lng,$lat,$type){
$map=array();
if($type=='gps'){
$url="http://map.yanue.net/gpsApi.php?lat=".$lat."&lng=".$lng;
$res=json_decode(file_get_contents($url));
$map['lng']=$res->baidu->lng;
$map['lat']=$res->baidu->lat;
}
if($type=='google'){
$url="http://api.map.baidu.com/ag/coord/convert?from=2&to=4&mode=1&x=".$lng."&y=".$lat;
$res=json_decode(file_get_contents($url));
$map['lng']=base64_decode($res[0]->x);
   $map['lat']=base64_decode($res[0]->y);
  }
  $map を返します;
 }
 
 /*************************************************** * **********
*
* 特定の関数を使用して配列内のすべての要素を処理します
* @param string &$array 処理対象の文字列
* @param string $function 実行する関数
* @return boolean $apply_to_keys_only キーにも適用されるかどうか
* @アクセス公開
*
************************************************* * ***********/
 public function arrayRecursive(&$array, $function, $apply_to_keys_only = false)
 {
  静的 $recursive_counter = 0;
  if (++$recursive_counter > 1000) {
   die('深い再帰攻撃の可能性あり');
  }
  foreach ($array as $key => $value) {
   if (is_array($value)) {
    self::arrayRecursive($array[$key], $function, $apply_to_keys_only);
   } その他 {
    $array[$key] = $function($value);
   }
 
   if ($apply_to_keys_only && is_string($key)) {
    $new_key = $function($key);
    if ($new_key != $key) {
     $array[$new_key] = $array[$key];
     unset($array[$key]);
    }
   }
  }
  $recursive_counter--;
 }
 
 /*************************************************** * **********
*
* 配列を JSON 文字列に変換します (中国語と互換性があります)
* @param array $array 変換する配列
* @return string 変換されたjson文字列
* @アクセス公開
*
************************************************* * ***********/
 パブリック関数 JSON($array) {
  self::arrayRecursive($array, 'urlencode', true);
  $json = json_encode($array);
  urldecode($json)を返す;
 }
 /*
  *创建菜单
  *
  */
 パブリック関数 creatMenu($shop_id,$data){
  $jsonArray=self::JSON($data);
  $AccessToken=self::accessToken($weiXin[0]['key'],$weiXin[0]['secret']);
  $MENU_URL="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$AccessToken;
  return self::curlPost($jsonArray,$MENU_URL);
 }
 /*
  *客服メッセージ回复
  *@param array jsonArray Array {"touser":"OPENID","msgtype":"text","text":{"content":"Hello World"}}
  *@戻り文字列
  */
 
  パブリック関数customService($jsonArray,$hash){
  if(空($jsonArray)){
   false を返します。
  }
  $db=M();
  $sql="select * from bbc_wechats where hash='".$hash."'";
  $weChast=$db->クエリ($sql);
  $AccessToken=self::accessToken($weChast[0]['key'],$weChast[0]['secret']);
  $TokenUrl="https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$AccessToken;
     $CustomRes=self::curlPost($jsonArray,$TokenUrl);
  $CustomRes を返します;
  }
  /*
 
   *获取access_token
   *@return objectStr
   */
  パブリック関数 accessToken($appid,$secret){
   $access_token=BBCcache::getCache('accesstoken'.$appid);
   if($access_token){
    $AccessTokenRet=$access_token;
   }その他{
    $TookenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
    $AccessTokenRes=@file_get_contents($TookenUrl);
    $AccessToken=json_decode($AccessTokenRes);
    $AccessTokenRet=$AccessToken->access_token;
    BBCcache::setCache('accesstoken'.$appid,$AccessToken->access_token,3600);
   }
   $AccessTokenRet を返す;
  }
  /*
   *向远程インターフェースPOSTデーターグラム
   *@data 配列 {"touser":"OPENID","msgtype":"text","text":{"content":"Hello World"}}
   *@return objectArray
   */
  パブリック関数curlPost($data,$url){
    $ch =curl_init();
 
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
   curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (互換性; MSIE 5.01; Windows NT 5.0)');
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
   $info =curl_exec($ch);
 
   if (curl_errno($ch)) {
    echo 'Errno'.curl_error($ch);
   }
 
   curl_close($ch);
   return json_decode($info);
  }
 // 精度に基づいて距離と方向を計算します
 関数 getRadian($d){
  $d * M_PI / 180;
を返します  }
 
 関数 getDistance ($lat1, $lng1, $lat2, $lng2){
  $EARTH_RADIUS=6378.137;//地球半径
  $lat1 =getRadian($lat1);
  $lat2 = getRadian($lat2);
 
  $a = $lat1 - $lat2;
  $b = getRadian($lng1) - getRadian($lng2);
 
  $v = 2 * asin(sqrt(pow(sin($a/2),2) + cos($lat1) * cos($lat2) * pow(sin($b/2),2)));
 
  $v = ラウンド($EARTH_RADIUS * $v * 10000) / 10000;
 
  $v を返します;
 }
}
?>

ここで説明されているように、大規模な PHP ベースのマイクロシグナル公開番号が役立つことを望んでいます。

http://www.bkjia.com/PHPjc/911900.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/911900.html技術記事マイクロ信息公開番号発行中の微信パブリック プラットフォーム メッセージの種類の例、公開例 ここでは、マイクロ信息番号発行中の微信パブリック プラットフォーム メッセージの種類について説明します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。