# 服務器基礎接口 WechatServerApi
**目錄 (Table of Contents)**
[TOC]
## 類基本信息
**類簡要描述:**
- 微信公眾平臺服務端基礎接口,主要用于獲取API令牌和JS API令牌等。
**類名字空間:**
- endor/wechat/server
**類繼承關系:**
WechatServerApi -> WechatCommon
## 類成員函數/方法
### __construct($configure)
+ 參數列表:
|參數名|類型|必填項|說明
|:---- |:---|:----- |----- |
|$configure| object (WechatConfig) | 是 | 微信配置參數對象 |
+ 返回值:
`無`
+ 函數說明:
`構造函數`
### getAccessToken();
+ 參數列表:
`無`
+ 返回值:
`array`
+ 返回值(示例)
```
[
"access_token" => 4SyHI39Irn4ZEkQby2LTTQiAHAZZWXX ....
"expires_in" => 7200
]
```
+ 錯誤返回
`如果函數內有錯誤或異常,拋出 WechatException異常 `
+ 函數說明:
`獲取微信公眾號API 令牌,該令牌請保存在數據庫,有獲取次數限制`
+ Eample:
```PHP
$wxConfigure = new WechatConfig();
$wxConfigure->setParameter("appid","wx210100001");
$wxConfigure->setParameter("appsecret","BeU_91p2K7idjxcHaI6jcXkYHPlDj3");
$wechatServer = new WechatServerApi($wxConfigure);
try{
$results = $wechatServer->getAccessToken();
$access_token = $results['access_token'];
$epxires_in = $results['expires_in'];
$wxConfigure->setParameter("access_token ", $access_token);
}
catch(WechatException $wechatException)
{
echo "[err code:] ". $wechatException->getCode();
echo "[error msg:] " . $wechatException->getMessage() ;
}
```
### getWechatJsapiTicket()
+ 參數列表:
`無`
+ 返回值:
`array`
+ 返回值(示例)
```
[
"ticket" => 4SyHI39Irn4ZEkQby2LTTQiAHAZZWXX ....
"expires_in" => 7200
]
```
+ 錯誤返回
`如果函數內有錯誤或異常,拋出 WechatException異常 `
+ 函數說明:
`獲取微信公眾號JS API Ticket,該Ticket請保存在數據庫,有獲取次數限制`
+ Eample:
```PHP
// 假設我們在這里已經通過getAccessToken()獲取到了全局access_token,存在變量
// $access_token中
$wxConfigure = new WechatConfig();
$wxConfigure->setParameter("appid","wx210100001");
$wxConfigure->setParameter("appsecret","BeU_91p2K7idjxcHaI6jcXkYHPlDj3");
$wxConfigure->setParameter("access_token",$access_token);
$wechatServer = new WechatServerApi($wxConfigure);
try{
$results = $wechatServer->getWechatJsapiTicket();
$ticket = $results['ticket'];
$epxires_in = $results['expires_in'];
$wxConfigure->setParameter("jsapi_ticket",$ticket);
}
catch(WechatException $wechatException)
{
echo "[err code:] ". $wechatException->getCode();
echo "[error msg:] " . $wechatException->getMessage() ;
}
```
### getJsApiSign()
+ 參數列表:
`無`
+ 返回值:
`array`
+ 返回值(示例)
```
[
"appId" => 4SyHI39Irn4ZEkQbysdadsdaX ....
"nonceStr" => 7200,
"timestamp"=>1555533333,
"url"=>"https://mobile.test.com/",
"signature"=>"f3fd4sdadad4900e0305dab3048c171630984c8",
"rawString"=>.... 此處略
]
```
+ 錯誤返回
`如果函數內有錯誤或異常,拋出 WechatException異常 `
+ 函數說明:
`獲取微信公眾號Js Api 簽名,該返回值用于初始化 js wx 對象 `
+ Eample:
```PHP
// 假設我們在這里已經通過getWechatJsapiTicket()獲取到了jsapi ticket,存在變量
// $ticket 中
$wxConfigure = new WechatConfig();
$wxConfigure->setParameter("appid","wx210100001");
$wxConfigure->setParameter("appsecret","BeU_91p2K7idjxcHaI6jcXkYHPlDj3");
$wxConfigure->setParameter("ticket",$ticket);
$wechatServer = new WechatServerApi($wxConfigure);
try{
$results = $wechatServer->getJsApiSign();
echo $results; // 將對象返回給JS頁面
}
catch(WechatException $wechatException)
{
echo "[err code:] ". $wechatException->getCode();
echo "[error msg:] " . $wechatException->getMessage() ;
}
```
```Javascript
<html>
<header>
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.1.0.js"></script>
</header>
<body>
</body>
<script>
// 假設前端獲取到后端返回來的jsapi 簽名對象為 results
wx.config({
debug: false,
appId:results.appId,
timestamp:results.timestamp,
nonceStr: 'results.nonceStr,
signature:results.signature,
jsApiList: [
// 所有要調用的 API 都要加到這個列表中
'checkJsApi',
'openLocation',
'getLocation',
'scanQRCode',
'translateVoice',
]
});
</script>
```
### getWechatServerIp()
+ 參數列表:
`無`
+ 返回值:
`array`
+ 返回值(示例)
```
[
"101.226.233.139",
"101.226.233.140",
....
]
```
+ 錯誤返回
`如果函數內有錯誤或異常,拋出 WechatException異常 `
+ 函數說明:
`獲取微信公眾號服務器IP列表 `
- 1、序言
- 1.1、更新說明
- 1.2、更新計劃
- 2、開始使用 Endor
- 3、目錄結構
- 4、類說明
- 4.1、WechatConfig
- 4.2、WechatValid
- 4.3、WechatCommon
- 4.4、WechatException
- 4.5、基礎接口
- 4.5.1、ShortUrl
- 4.5.2、WechatServerApi
- 4.6、菜單接口
- 4.6.1、菜單類設計
- 4.6.2、Menu
- 4.6.3、ClickMenu
- 4.6.4、ViewMenu
- 4.6.5、MiniProgramMenu
- 4.6.6、MenuApi
- 4.7、消息接口
- 4.7.1、Receiver
- 4.7.2、Message
- 4.7.3、EventMessage
- 4.7.4、TextMessage
- 4.7.5、ClickEventMessage
- 4.7.6、SubscribeEventMessage
- 4.7.7、UnSubscribeEventMessage
- 4.7.8、LocationEventMessage
- 4.7.9、ImageMessage
- 4.7.10、LinkMessage
- 4.7.11、NewsMessage
- 4.7.12、NewsContext
- 4.8、OAuth2.0權限驗證
- 4.8.1、WechatUser
- 4.8.2、OAuthApi
- 4.9、微信支付接口
- 4.9.1、微信支付類設計
- 4.9.2、PayApi
- 4.9.3、RequestPay
- 4.9.4、ResponsePay
- 4.9.5、UnifiedOrder
- 4.9.6、JsPay
- 4.9.7、Refund
- 4.9.8、Query
- 4.9.9、Bill
- 4.9.10、NotifyData
- 4.9.11、Notify
- 4.10、模板消息接口
- 4.10.1、TemplateContext
- 4.10.2、TemplateMessageApi
- 5、使用場景
- 5.1、微信接入服務器驗證
- 5.2、獲取微信API令牌(access_token)
- 5.3、獲取JS API
- 5.4、OAuth2.0靜默登錄
- 5.5、微信菜單
- 5.6、微信消息
- 5.7、微信支付
- 5.7.1、微信公眾號內JsApi支付
- 5.7.2、Native 模式二 掃碼支付
- 5.8、模板消息發送