/**
* 위챗 PHP 테스트
*/
//토큰 정의
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();// 코드의 11번째 줄에서 클래스를 인스턴스화합니다.
//$wechatObj->valid();//Variable Usage-> 클래스의 valid() 메서드에 액세스합니다. 개발 모드 인터페이스. 이 줄의 기능은 인터페이스를 확인하는 것입니다. 확인 후 주석 처리할 수 있습니다;
$wechatObj->responseMsg();
class wechatCallbackapiTest//객체에 대한 캡슐화 방법인 클래스를 정의합니다. 개발 지향;
{
public function valid()//인터페이스 검증 방법인 valid라는 이름의 공용 메서드를 정의합니다.
{
$echoStr = $_GET["echostr"] ;//WeChat 클라이언트에서 가져오기 $echoStr 변수에 임의의 문자열이 할당됩니다.
//유효한 서명, 옵션
~ 변수 $echoStr에 할당된 임의의 문자열 문자열의 작동을 완전히 확인합니다. 구성 인터페이스;
echo $echoStr; > {
//게시물 데이터 가져오기, 클라이언트가 보낸 정보를 얻는 환경이 다르기 때문에 다를 수 있습니다.
$postStr = $GLOBALS ["HTTP_RAW_POST_DATA"];
//게시물 데이터 추출은 사용자 데이터를 구문 분석합니다.
if (!empty($postStr)){//사용자 정보가 비어 있지 않은지 확인합니다.
/* libxml_disable_entity_loader는 XML eXternal Entity Insertion을 방지하려면
가장 좋은 방법은 직접 xml의 유효성을 확인하는 것입니다. */
libxml_disable_entity_loader(true)를 구문 분석하고 변수 $postObj를 할당합니다. simplexml_load_string() 함수는 XML을 구문 분석하는 데 사용됩니다. SimpleXMLElement 매개변수는 새 객체의 클래스입니다. LIBXML_NOCDATA는 CDATA 태그의 텍스트 XML이 구문 분석되지 않음을 나타냅니다.
$fromUsername = $postObj->FromUserName;//$fromUsername 변수에 WeChat 클라이언트의 OpenID 할당;
를 통해 🎜> $keyword = Trim($postObj->Content);//공백 제거 사용자의 WeChat에서 보낸 텍스트 콘텐츠에서 $keyword; $time;
$Event = $postObj->Event;//이것은 이벤트 획득입니다.
$textTpl = "< ;xml>
UserName>
]><--WeChat 소스-->
| sgType>
;
/xml>"; //XML 형식으로 텍스트를 구성하여 할당합니다. 변수 $textTpl. XML의 형식은 WeChat 콘텐츠의 고정 형식입니다.
IF ($ EVENT == "Subscribe") // 구독은 구독 정보를 받는 것입니다.
{ $ TextTpl = "& LT; XML & GT;
& LT; Tousername & GT; [CDATA [%s]] & lt;/toSername & gt; rname & gt; & lt; ! [[ CDATA[%s]]>
<콘텐츠><<[CDATA [%s]]>
주의를 기울이면 무언가로 응답할 수 있습니다.";
$resultStr = sprintf ($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr)
Echo $ ResultStr
} /// 팔로우 후 텍스트 메시지가 자동으로 응답됩니다.
/ / 스위치($ 키워드)
// 대소문자 "" ";
if (! 비어 있음($ 키워드) )
칼라, 캠퍼스 스트리트 뷰, 신입생 등록, 점수 쿼리";//$contentStr은 응답 정보 )는 변수 매개변수 함수입니다. $textTpl에는 5개의 %s가 있으므로 할당에는 5개의 변수가 필요합니다. 이 코드 줄이 핵심이며 sprintf() 함수를 깊이 이해해야 합니다.
echo $resultStr;//응답 메시지를 출력합니다. 즉, WeChat으로 보냅니다. 테스트 중에 사용됩니다.
}
}그렇지 않으면 {
}
~ | 공식 문서는 암호화/검증 프로세스입니다. 세 가지 매개변수 토큰, 타임스탬프, Nonce를 사전순으로 정렬하고 개발자가 암호화를 획득한 후 이 세 매개변수 문자열을 하나의 문자열로 연결합니다. , 문자열을 서명과 비교하여 요청이 WeChat에서 온 것임을 나타낼 수 있습니다.
{
// TOKEN을 직접 정의해야 합니다
if (!defined("TOKEN")) {
throw new Exception('TOKEN이 정의되지 않았습니다!');
} $ Signature = $ _get ["Signature"] // 변수에 $ 서명을 제공하기 위해 서명; 🎜> $ timestamp = $ _get ["timeststamp"]; // 타임스탬프는 $timestamp 변수에 할당됩니다.
$nonce = $_GET["nonce"];//사용자 측에서 난수를 가져오고 $nonce;
= Array ($ Token, $ TimestAmp, $ Nonce); // 배열 변수 생성 $ TMPARR
// sort_string 사용 run
sort ($ tmparr, sort_string ); // tmpStr = implode( $tmpArr ); // 사전 정렬;
$tmpStr = sha1( $tmpStr ); //shal 암호화; tmpStr $signature 변수와 동일한 값은 true를 반환하고, 그렇지 않으면 false를 반환합니다.
위는 다양한 측면을 포함하여 WeChat 개발 구성 파일의 상세한 주석 버전을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.