WeChat 공개 계정 development_php 기술을 위한 WeChat 공개 플랫폼 메시지 응답 클래스 예시
이 기사의 예에서는 WeChat 공개 계정에서 개발된 WeChat 공개 플랫폼 메시지 응답 클래스에 대해 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.
인터넷에서 위챗 공개 계정 개발 코드를 많이 봤는데, 사실 모두 같은 의미인데 공식 데모 파일을 참고해서 수정한 것입니다.
/**
* 위챗 공개 플랫폼 메시지 답장 수업
*
*
*/
클래스 BBCweixin{
비공개 $APPID="******";
비공개 $APPSECRET="******";
/*
*文本消息回复
*@param 배열 객체
*@param 문자열 내용
*@반환 문자열
*/
공개 함수 resText($object,$content,$flag=0){
$xmlText="
<콘텐츠>
$resultStr=sprintf($xmlText,$object->FromUserName,$object->ToUserName,time(),$content,$flag);
echo $resultStr;exit();
}
/*
*사진消息回复
*@param 배열 객체
*@param 문자열 URL
*@반환 문자열
*/
공개 함수 resImage($object,$media_id){
$xmlImage="
$xmlImage.="
$xmlImage.="
$xmlImage.="
$xmlImage.="
$xmlImage.="

$xmlImage.="
$resultStr=sprintf($xmlImage,$object->FromUserName,$object->ToUserName,time(),$media_id);
echo $resultStr;exit();
}
/*
*图文消息回复
*@param 배열 객체
*@param 배열 newsData 2维数组 必须包含[제목][설명][PicUrl][Url]字段
*@반환 문자열
*/
공개 함수 resNews($object,$newsData=array()){
$CreateTime=시간();
$FuncFlag=0;
$newTplHeader="
<콘텐츠>
$newTplItem="<항목>
<제목>
<설명>
";
$newTplFoot="
$Content='';
$itemsCount=count($newsData);
$itemsCount=$itemsCount<10?$itemsCount:10;//WeChat 공개 플랫폼은 사진과 텍스트를 포함하여 한 번에 최대 10개의 메시지에 답장할 수 있습니다
If($itemsCount){
foreach($newsData as $key=>$item){
If($key<=9){
$Content.=sprintf($newTplItem,$item['제목'],$item['설명'],$item['PicUrl'],$item['Url']);
}
}
}
$header=sprintf($newTplHeader,0,$itemsCount);
$footer=sprintf($newTplFoot,$FuncFlag);
echo $header.$Content.$footer;exit();
}
/*
*음악 메시지 답장
*@param 배열 객체
*@param 배열 [제목][설명][MusicUrl][HQMusicUrl] 필드를 포함하는 musicContent 2차원 배열
*@반환 문자열
*/
공개 함수 resMusic($object,$musicContent=array()){
$xmlMusic="
~ > /사용자 이름>
~
~ ~
~ > ;
~ <제목>
~ > >
~ > %s]]>
~ | HQMusicUrl>
~ ~ 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 좌표를 바이두 좌표로 변환
*@param lnt
*@param lat
*@return 배열
*/
공개 함수 mapApi($lng,$lat,$type){
$map=배열();
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_ also 키에도 적용할지 여부
* @접속공개
*
************************************************** * ***********/
공용 함수 arrayRecursive(&$array, $function, $apply_to_keys_ also = 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_ also);
} 그 밖의 {
$array[$key] = $function($value);
}
if ($apply_to_keys_ also && 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 배열 jsonArray 배열 {"touser":"OPENID","msgtype":"text","text":{"content":"Hello World"}}
*@반환 문자열
*/
공용 함수 customService($jsonArray,$hash){
if(비어 있음($jsonArray)){
거짓을 반환;
}
$db=M();
$sql="select * from bbc_wechats where hash='".$hash."'";
$weChast=$db->query($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 반환;
}
/*
*접속_토큰
*@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
*/
공개 함수 컬포스트($data,$url){
$ch = 컬_init();
컬_setopt($ch, CURLOPT_URL, $url);
컬_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
컬_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
컬_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
cur_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (호환; MSIE 5.01; Windows NT 5.0)');
컬_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
컬_setopt($ch, CURLOPT_AUTOREFERER, 1);
컬_setopt($ch, CURLOPT_POSTFIELDS, $data);
컬_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$info = 컬_exec($ch);
if (curl_errno($ch)) {
echo 'Errno'.curl_error($ch);
}
컬_닫기($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의 微信公众号开发有所帮助。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사는 중국의 Ouyi Okx 앱의 안전한 다운로드에 대한 자세한 안내서를 제공합니다. 국내 앱 스토어의 제한으로 인해 사용자는 OUYI OKX의 공식 웹 사이트를 통해 앱을 다운로드하거나 공식 웹 사이트에서 제공 한 QR 코드를 사용하여 스캔 및 다운로드하는 것이 좋습니다. 다운로드 프로세스 중에 공식 웹 사이트 주소를 확인하고 응용 프로그램 권한을 확인하고 설치 후 보안 스캔을 수행하며 2 요인 확인을 활성화하십시오. 사용하는 동안 현지 법률 및 규정을 따르고, 안전한 네트워크 환경을 사용하고, 계정 보안을 보호하고, 사기에 대해 경계하고, 합리적으로 투자하십시오. 이 기사는 참조 용이며 투자 조언은 자신의 위험에 처해 있습니다.

H5. 미니 프로그램과 앱의 주요 차이점은 다음과 같습니다. 기술 아키텍처 : H5는 웹 기술을 기반으로하며 미니 프로그램 및 앱은 독립적 인 응용 프로그램입니다. 경험과 기능 : H5는 가볍고 사용하기 쉽고 기능이 제한되어 있습니다. 미니 프로그램은 가벼우 며 상호성이 우수합니다. 앱은 강력하고 부드러운 경험이 있습니다. 호환성 : H5는 크로스 플랫폼 호환성이며 애플릿 및 앱은 플랫폼에 의해 제한됩니다. 개발 비용 : H5는 개발 비용이 낮고 중간 미니 프로그램 및 최고 앱이 있습니다. 적용 가능한 시나리오 : H5는 정보 표시에 적합하고 애플릿은 가벼운 응용 프로그램에 적합하며 앱은 복잡한 기능에 적합합니다.

H5는보다 유연하고 사용자 정의 가능하지만 숙련 된 기술이 필요합니다. 미니 프로그램은 신속하게 시작하고 유지 관리가 쉽지만 WeChat 프레임 워크에 의해 제한됩니다.

회사 보안 소프트웨어 및 응용 프로그램을위한 호환성 문제 및 문제 해결 방법. 많은 회사들이 인트라넷 보안을 보장하기 위해 보안 소프트웨어를 설치할 것입니다. 그러나 보안 소프트웨어 가끔 ...

Enterprise Wechat의 JS 자원 캐싱 문제에 대한 토론. 프로젝트 기능을 업그레이드 할 때, 일부 사용자는 종종 특히 기업에서 성공적으로 업그레이드하지 않는 상황을 발생시킵니다.

일부 애플리케이션이 제대로 작동하지 않는 회사의 보안 소프트웨어에 대한 문제 해결 및 솔루션. 많은 회사들이 내부 네트워크 보안을 보장하기 위해 보안 소프트웨어를 배포 할 것입니다. ...

H5 및 애플릿의 선택은 요구 사항에 따라 다릅니다. 크로스 플랫폼, 빠른 개발 및 높은 확장 성이있는 응용 프로그램은 H5를 선택하십시오. 기본 경험, 풍부한 기능 및 플랫폼 종속성을 가진 응용 프로그램의 경우 애플릿을 선택하십시오.

이 기사는 2025 년에 업데이트 된 Binance Virtual Currency의 구매 및 판매에 대한 간단한 안내서를 제공하며 Binance 플랫폼에서 가상 통화 트랜잭션의 작동 단계를 자세히 설명합니다. 이 안내서는 Fiat 통화 구매 USDT, 기타 통화 (예 : BTC)의 통화 거래 구매 및 시장 거래 및 한도 거래를 포함한 판매 운영을 다룹니다. 또한이 안내서는 구체적으로 Fiat 통화 거래에 대한 지불 보안 및 네트워크 선택과 같은 주요 위험을 상기시켜 사용자가 Binance 거래를 안전하고 효율적으로 수행 할 수 있도록 도와줍니다. 이 기사를 통해 Binance 플랫폼에서 가상 통화를 구매 및 판매하는 기술을 신속하게 마스터하고 거래 위험을 줄일 수 있습니다.
