成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

微信開發(fā)接入指南

移動開發(fā) Android
登錄微信公眾平臺官網(wǎng)后,在公眾平臺后臺管理頁面 - 開發(fā)者中心頁,點擊“修改配置”按鈕,填寫服務器地址(URL)、Token和EncodingAESKey,其中URL是開發(fā)者用來接收微信消息和事件的接口URL。Token可由開發(fā)者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)。EncodingAESKey由開發(fā)者手動填寫或隨機生成,將用作消息體加解密密鑰。

概述

接入微信公眾平臺開發(fā),開發(fā)者需要按照如下步驟完成:

1、填寫服務器配置
2、驗證服務器地址的有效性
3、依據(jù)接口文檔實現(xiàn)業(yè)務邏輯

下面詳細介紹這3個步驟。
***步:填寫服務器配置

登錄微信公眾平臺官網(wǎng)后,在公眾平臺后臺管理頁面 - 開發(fā)者中心頁,點擊“修改配置”按鈕,填寫服務器地址(URL)、Token和EncodingAESKey,其中URL是開發(fā)者用來接收微信消息和事件的接口URL。Token可由開發(fā)者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)。EncodingAESKey由開發(fā)者手動填寫或隨機生成,將用作消息體加解密密鑰。

同時,開發(fā)者可選擇消息加解密方式:明文模式、兼容模式和安全模式。模式的選擇與服務器配置在提交后都會立即生效,請開發(fā)者謹慎填寫及選擇。加解密方式的默認狀態(tài)為明文模式,選擇兼容模式和安全模式需要提前配置好相關加解密代碼,詳情請參考消息體簽名及加解密部分的文檔。

 

第二步:驗證服務器地址的有效性

開發(fā)者提交信息后,微信服務器將發(fā)送GET請求到填寫的服務器地址URL上,GET請求攜帶四個參數(shù):

開發(fā)者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。

加密/校驗流程如下:
1. 將token、timestamp、nonce三個參數(shù)進行字典序排序
2. 將三個參數(shù)字符串拼接成一個字符串進行sha1加密
3. 開發(fā)者獲得加密后的字符串可與signature對比,標識該請求來源于微信

檢驗signature的PHP示例代碼:

  1. private function checkSignature() 
  2.         $signature = $_GET["signature"]; 
  3.         $timestamp = $_GET["timestamp"]; 
  4.         $nonce = $_GET["nonce"];     
  5.                  
  6.     $token = TOKEN; 
  7.     $tmpArr = array($token, $timestamp, $nonce); 
  8.     sort($tmpArr, SORT_STRING); 
  9.     $tmpStr = implode( $tmpArr ); 
  10.     $tmpStr = sha1( $tmpStr ); 
  11.      
  12.     if( $tmpStr == $signature ){ 
  13.         return true
  14.     }else
  15.         return false
  16.     } 

PHP示例代碼

 

  1. <?php 
  2. /** 
  3.   * wechat php test 
  4.   */ 
  5.  
  6. //define your token 
  7. define("TOKEN""weixin"); 
  8. $wechatObj = new wechatCallbackapiTest(); 
  9. $wechatObj->valid(); 
  10.  
  11. class wechatCallbackapiTest 
  12.     public function valid() 
  13.     { 
  14.         $echoStr = $_GET["echostr"]; 
  15.  
  16.         //valid signature , option 
  17.         if($this->checkSignature()){ 
  18.             echo $echoStr
  19.             exit
  20.         } 
  21.     } 
  22.  
  23.     public function responseMsg() 
  24.     { 
  25.         //get post data, May be due to the different environments 
  26.         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
  27.  
  28.         //extract post data 
  29.         if (!emptyempty($postStr)){ 
  30.                 /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection, 
  31.                    the best way is to check the validity of xml by yourself */ 
  32.                 libxml_disable_entity_loader(true); 
  33.                 $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA); 
  34.                 $fromUsername = $postObj->FromUserName; 
  35.                 $toUsername = $postObj->ToUserName; 
  36.                 $keyword = trim($postObj->Content); 
  37.                 $time = time(); 
  38.                 $textTpl = "<xml> 
  39.                             <ToUserName><![CDATA[%s]]></ToUserName> 
  40.                             <FromUserName><![CDATA[%s]]></FromUserName> 
  41.                             <CreateTime>%s</CreateTime> 
  42.                             <MsgType><![CDATA[%s]]></MsgType> 
  43.                             <Content><![CDATA[%s]]></Content> 
  44.                             <FuncFlag>0</FuncFlag> 
  45.                             </xml>";              
  46.                 if(!emptyempty$keyword )) 
  47.                 { 
  48.                     $msgType = "text"
  49.                     $contentStr = "Welcome to wechat world!"
  50.                     $resultStr = sprintf($textTpl$fromUsername$toUsername$time$msgType$contentStr); 
  51.                     echo $resultStr
  52.                 }else
  53.                     echo "Input something..."
  54.                 } 
  55.  
  56.         }else { 
  57.             echo ""
  58.             exit
  59.         } 
  60.     } 
  61.          
  62.     private function checkSignature() 
  63.     { 
  64.         // you must define TOKEN by yourself 
  65.         if (!defined("TOKEN")) { 
  66.             throw new Exception('TOKEN is not defined!'); 
  67.         } 
  68.          
  69.         $signature = $_GET["signature"]; 
  70.         $timestamp = $_GET["timestamp"]; 
  71.         $nonce = $_GET["nonce"]; 
  72.                  
  73.         $token = TOKEN; 
  74.         $tmpArr = array($token$timestamp$nonce); 
  75.         // use SORT_STRING rule 
  76.         sort($tmpArr, SORT_STRING); 
  77.         $tmpStr = implode( $tmpArr ); 
  78.         $tmpStr = sha1( $tmpStr ); 
  79.          
  80.         if$tmpStr == $signature ){ 
  81.             return true; 
  82.         }else
  83.             return false; 
  84.         } 
  85.     } 
  86.  
  87. ?> 

第三步:依據(jù)接口文檔實現(xiàn)業(yè)務邏輯

驗證URL有效性成功后即接入生效,成為開發(fā)者。如果公眾號類型為服務號(訂閱號只能使用普通消息接口),可以在公眾平臺網(wǎng)站中申請認證,認證成功的服務號將獲得眾多接口權限,以滿足開發(fā)者需求。

此后用戶每次向公眾號發(fā)送消息、或者產(chǎn)生自定義菜單點擊事件時,開發(fā)者填寫的服務器配置URL將得到微信服務器推送過來的消息和事件,然后開發(fā)者可以依據(jù)自身業(yè)務邏輯進行響應,例如回復消息等。

公眾號調(diào)用各接口時,一般會獲得正確的結果,具體結果可見對應接口的說明。返回錯誤時,可根據(jù)返回碼來查詢錯誤原因。全局返回碼說明

用戶向公眾號發(fā)送消息時,公眾號方收到的消息發(fā)送者是一個OpenID,是使用用戶微信號加密后的結果,每個用戶對每個公眾號有一個***的OpenID。

此外,由于開發(fā)者經(jīng)常有需在多個平臺(移動應用、網(wǎng)站、公眾帳號)之間共通用戶帳號,統(tǒng)一帳號體系的需求,微信開放平臺(open.weixin.qq.com)提供了UnionID機制。開發(fā)者可通過OpenID來獲取用戶基本信息,而如果開發(fā)者擁有多個應用(移動應用、網(wǎng)站應用和公眾帳號,公眾帳號只有在被綁定到微信開放平臺帳號下后,才會獲取UnionID),可通過獲取用戶基本信息中的UnionID來區(qū)分用戶的***性,因為只要是同一個微信開放平臺帳號下的移動應用、網(wǎng)站應用和公眾帳號,用戶的UnionID是***的。換句話說,同一用戶,對同一個微信開放平臺帳號下的不同應用,UnionID是相同的。詳情請在微信開放平臺的資源中心-移動應用開發(fā)-微信登錄-授權關系接口調(diào)用指引-獲取用戶個人信息(UnionID機制)中查看。

另請注意,微信公眾號接口只支持80接口。

責任編輯:chenqingxiang
相關推薦

2016-11-04 10:31:49

微信程序指南

2022-01-11 21:06:45

微信企業(yè)微信移動應用

2019-06-21 10:40:25

微信小程序前端

2017-06-27 10:53:32

2013-10-10 14:15:22

微信開發(fā)

2013-03-29 13:10:06

微信公眾平臺企業(yè)微信微信

2013-08-08 10:13:25

微信

2015-02-11 14:53:58

微信SDK

2025-04-27 02:25:00

DeepSeekCursor程序

2013-04-12 03:15:34

微信開放平臺Android

2013-04-12 02:54:04

微信開放平臺iOS

2016-11-04 09:55:16

微信小程序

2025-02-03 15:43:19

2024-12-27 09:28:09

2013-05-22 10:58:09

微信公眾賬號微信

2016-09-27 16:38:24

JavaScript微信Web

2016-11-04 10:49:48

微信小程序

2016-09-28 18:10:59

微信程序MINA

2017-03-29 18:27:41

互聯(lián)網(wǎng)

2013-04-15 16:56:48

微信公眾平臺Android開發(fā)
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美激情视频 | 日一区二区 | 99re国产精品 | 亚洲高清av在线 | 一区二区三区免费 | 毛片免费在线观看 | 国产亚洲日本精品 | eeuss国产一区二区三区四区 | 国产精品不卡 | 亚洲永久 | 中文字幕高清免费日韩视频在线 | 中文字幕在线观看第一页 | 99精品欧美一区二区三区 | 国产一区二区三区视频免费观看 | 欧美日韩中文字幕在线 | 在线成人免费视频 | 中文字幕一区二区三区乱码图片 | 亚洲精品视频一区二区三区 | 亚洲成人激情在线观看 | 色综合一区二区 | av激情影院 | 免费黄色av | 黄色一级大片在线免费看产 | 国产成人网 | 国产精品乱码一二三区的特点 | 亚洲久久久| 精品视频一区二区三区在线观看 | 成人午夜视频在线观看 | 欧美乱做爰xxxⅹ久久久 | 久久久男人的天堂 | 精品视频一区二区 | 理伦毛片 | 精品久久国产视频 | 天天干com| 欧美综合国产精品久久丁香 | 91麻豆精品国产91久久久更新资源速度超快 | 国产精品成人av | 99综合 | 亚洲精品乱码久久久久久按摩观 | 亚洲精品播放 | 98成人网|