# 服务器基础接口 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、模板消息发送