ppc52776 / zalo-php-sdk
面向Zalo开发者的SDK
2.0.1.2
2020-01-07 10:23 UTC
Requires
- php: >=5.4
Requires (Dev)
- phpunit/phpunit: 5.2.*
README
着陆页: https://developers.zalo.me/
博客: 我们在官方Zalo平台博客发布了大量优秀的教程和指南,并且我们定期更新内容。
社区: 如果你在使用某个功能时遇到困难,最佳的方式是访问Zalo社区
支持: 我们也可以在官方开发者账号Zalo上回答有关Zalo的简短问题
安装
可以使用Composer安装Zalo PHP SDK。运行以下命令
composer require zaloplatform/zalo-php-sdk
如何使用
导入自动加载
require_once __DIR__ . '/vendor/autoload.php';
初始化
use Zalo\Zalo; $config = array( 'app_id' => '1234567890987654321', 'app_secret' => 'AbC123456XyZ', 'callback_url' => 'https://www.callback.com' ); $zalo = new Zalo($config);
社交API
获取登录链接
$helper = $zalo -> getRedirectLoginHelper(); $callbackUrl = "https://www.callbackack.com"; $loginUrl = $helper->getLoginUrl($callBackUrl); // This is login url
获取访问令牌
当用户点击登录链接时,系统将处理用户的登录并重定向到已注册的app的回调链接,OAuth代码将被返回并显示在回调链接的路径上。请将以下代码放置在已注册的app的回调链接上,该代码将执行从回调链接中获取OAuth代码并发送请求到系统以获取访问令牌。
$callBackUrl = "www.put_your_call_backack_url_here.com"; $oauthCode = isset($_GET['code']) ? $_GET['code'] : "THIS NOT CALLBACK PAGE !!!"; // get oauthoauth code from url params $accessToken = $helper->getAccessToken($callBackUrl); // get access token if ($accessToken != null) { $expires = $accessToken->getExpiresAt(); // get expires time }
获取用户信息
$accessToken = 'put_your_access_token_here'; $params = ['fields' => 'id,name,birthday,gender,picture']; $response = $zalo->get(ZaloEndpoint::API_GRAPH_ME, $accessToken, $params); $result = $response->getDecodedBody(); // result
获取好友列表
$accessToken = 'put_your_access_token_here'; $params = ['offset' => 0, 'limit' => 10, 'fields' => "id, name"]; $response = $zalo->get(ZaloEndpoint::API_GRAPH_FRIENDS, $accessToken, $params); $result = $response->getDecodedBody(); // result
获取尚未使用应用且可能被邀请使用应用的好友列表
$accessToken = 'put_your_access_token_here'; $params = ['offset' => 0, 'limit' => 10, 'fields' => "id, name"]; $response = $zalo->get(ZaloEndpoint::API_GRAPH_INVITABLE_FRIENDS, $accessToken, $params); $result = $response->getDecodedBody(); // result
发布帖子
$accessToken = 'put_your_access_token_here'; $params = ['message' => 'put_your_text_here', 'link' => 'put_your_link_here']; $response = $zalo->post(ZaloEndpoint::API_GRAPH_POST_FEED, $accessToken, $params); $result = $response->getDecodedBody(); // result
邀请使用应用
$accessToken = 'put_your_access_token_here'; $params = ['message' => 'put_your_message_here', 'to' => 'put_user_id_receive_here']; $response = $zalo->post(ZaloEndpoint::API_GRAPH_APP_REQUESTS, $accessToken, $params); $result = $response->getDecodedBody(); // result
向好友发送消息
$accessToken = 'put_your_access_token_here'; $params = ['message' => 'put_your_message_here', 'to' => 'put_user_id_receive_here', 'link' => 'put_your_link_here']; $response = $zalo->post(ZaloEndpoint::API_GRAPH_MESSAGE, $accessToken, $params); $result = $response->getDecodedBody(); // result
官方账号开放API
创建授权应用的官方账号链接
$callbackPageUrl = "https://www.callbackPage.com" $linkOAGrantPermission2App = $helper->getLoginUrlByPage($callbackPageUrl); // This is url for admin OA grant permission to app
发送文本消息
// build data $msgBuilder = new MessageBuilder('text'); $msgBuilder->withUserId('494021888309207992'); $msgBuilder->withText('Message Text'); // add buttons (only support 5 buttons - optional) $actionOpenUrl = $msgBuilder->buildActionOpenURL('https://wwww.google.com'); // build action open link $msgBuilder->withButton('Open Link', $actionOpenUrl); $actionQueryShow = $msgBuilder->buildActionQueryShow('query_show'); // build action query show $msgBuilder->withButton('Query Show', $actionQueryShow); $actionQueryHide = $msgBuilder->buildActionQueryHide('query_hide'); // build action query hide $msgBuilder->withButton('Query Hide', $actionQueryHide); $actionOpenPhone = $msgBuilder->buildActionOpenPhone('0919018791'); // build action open phone $msgBuilder->withButton('Open Phone', $actionOpenPhone); $actionOpenSMS = $msgBuilder->buildActionOpenSMS('0919018791', 'sms text'); // build action open sms $msgBuilder->withButton('Open SMS', $actionOpenSMS); $msgText = $msgBuilder->build(); // send request $response = $zalo->post(ZaloEndpoint::API_OA_SEND_MESSAGE, $accessToken, $msgText); $result = $response->getDecodedBody(); // result
发送图片消息
// build data $msgBuilder = new MessageBuilder('media'); $msgBuilder->withUserId('494021888309207992'); $msgBuilder->withText('Message Image'); $msgBuilder->withAttachment('cb2ab1696b688236db79'); // add buttons (only support 5 buttons - optional) $actionOpenUrl = $msgBuilder->buildActionOpenURL('https://wwww.google.com'); // build action open link $msgBuilder->withButton('Open Link', $actionOpenUrl); $actionQueryShow = $msgBuilder->buildActionQueryShow('query_show'); // build action query show $msgBuilder->withButton('Query Show', $actionQueryShow); $actionQueryHide = $msgBuilder->buildActionQueryHide('query_hide'); // build action query hide $msgBuilder->withButton('Query Hide', $actionQueryHide); $actionOpenPhone = $msgBuilder->buildActionOpenPhone('0919018791'); // build action open phone $msgBuilder->withButton('Open Phone', $actionOpenPhone); $actionOpenSMS = $msgBuilder->buildActionOpenSMS('0919018791', 'sms text'); // build action open sms $msgBuilder->withButton('Open SMS', $actionOpenSMS); $msgImage = $msgBuilder->build(); $response = $zalo->post(ZaloEndpoint::API_OA_SEND_MESSAGE, $accessToken, $msgImage); $result = $response->getDecodedBody(); // result
发送列表消息
$msgBuilder = new MessageBuilder('list'); $msgBuilder->withUserId('494021888309207992'); $actionOpenUrl = $msgBuilder->buildActionOpenURL('https://www.google.com'); $msgBuilder->withElement('Open Link Google', 'https://img.icons8.com/bubbles/2x/google-logo.png', 'Search engine', $actionOpenUrl); $actionQueryShow = $msgBuilder->buildActionQueryShow('query_show'); $msgBuilder->withElement('Query Show', 'https://www.computerhope.com/jargon/q/query.jpg', '', $actionQueryShow); $actionQueryHide = $msgBuilder->buildActionQueryHide('query_hide'); $msgBuilder->withElement('Query Hide', 'https://www.computerhope.com/jargon/q/query.jpg', '', $actionQueryHide); $actionOpenPhone = $msgBuilder->buildActionOpenPhone('0919018791'); $msgBuilder->withElement('Open Phone', 'https://cdn.iconscout.com/icon/premium/png-256-thumb/phone-275-123408.png', '', $actionOpenPhone); $actionOpenSMS = $msgBuilder->buildActionOpenSMS('0919018791', 'sms text'); $msgBuilder->withElement('Open SMS', 'https://cdn0.iconfinder.com/data/icons/new-design/512/42-Chat-512.png', '', $actionOpenSMS); $msgList = $msgBuilder->build(); $response = $zalo->post(ZaloEndpoint::API_OA_SEND_MESSAGE, $accessToken, $msgList); $result = $response->getDecodedBody(); // result
发送Gif消息
$msgBuilder = new MessageBuilder('media'); $msgBuilder->withUserId('494021888309207992'); $msgBuilder->withText('Message Image'); $msgBuilder->withAttachment('PWhbF13YGGi9VTkG/vHcTyoskajfj5Ve/EGsTK80XYo='); $msgBuilder->withMediaType('gif'); $msgBuilder->withMediaSize(120, 120); $msgImage = $msgBuilder->build(); $response = $zalo->post(ZaloEndpoint::API_OA_SEND_MESSAGE, $accessToken, $msgImage); $result = $response->getDecodedBody(); // result
发送文件
$msgBuilder = new MessageBuilder('file'); $msgBuilder->withUserId('494021888309207992'); $msgBuilder->withFileToken('call_upload_file_api_to_get_file_token'); $msgFile = $msgBuilder->build(); $response = $zalo->post(ZaloEndPoint::API_OA_SEND_MESSAGE, $accessToken, $msgFile); $result = $response->getDecodedBody(); // result
发送关注邀请
// build data $msgBuilder = new MessageBuilder('template'); $msgBuilder->withPhoneNumber('0919018791'); $msgBuilder->withTemplate('87efbc018044691a3055', []); $msgInvite = $msgBuilder->build(); // send request $response = $zalo->post(ZaloEndPoint::API_OA_SEND_MESSAGE, $accessToken, $msgInvite); $result = $response->getDecodedBody();
上传图片
$data = array('file' => new ZaloFile($filePath)); $response = $zalo->post(ZaloEndpoint::API_OA_UPLOAD_PHOTO, $accessToken, $data); $result = $response->getDecodedBody(); // result
上传Gif图片
$data = array('file' => new ZaloFile($filePath)); $response = $zalo->post(ZaloEndpoint::API_OA_UPLOAD_GIF, $accessToken, $data); $result = $response->getDecodedBody(); // result
上传PDF文件
$data = array('file' => new ZaloFile($filePath)); $response = $zalo->post(ZaloEndpoint::API_OA_UPLOAD_FILE, $accessToken, $data); $result = $response->getDecodedBody(); // result
获取标签列表
$response = $zalo->get(ZaloEndpoint::API_OA_GET_LIST_TAG, $accessToken, []); $result = $response->getDecodedBody();
删除标签
// build data $data = array('tag_name' => 'vip'); // send request $response = $zalo->post(ZaloEndpoint::API_OA_REMOVE_TAG, $accessToken, $data); $result = $response->getDecodedBody();
从标签中移除关注者
// build data $data = array( 'user_id' => '494021888309207992', 'tag_name' => 'vip' ); // send request $response = $zalo->post(ZaloEndpoint::API_OA_REMOVE_USER_FROM_TAG, $accessToken, $data); $result = $response->getDecodedBody();
将关注者添加到标签
// build data $data = array( 'user_id' => '494021888309207992', 'tag_name' => 'vip' ); // send request $response = $zalo->post(ZaloEndpoint::API_OA_TAG_USER, $accessToken, $data); $result = $response->getDecodedBody();
获取关注者信息
$data = ['data' => json_encode(array( 'user_id' => '494021888309207992' ))]; $response = $zalo->get(ZaloEndpoint::API_OA_GET_USER_PROFILE, $accessToken, $data); $result = $response->getDecodedBody(); // result
获取OA信息
$response = $zalo->get(ZaloEndPoint::API_OA_GET_PROFILE, $accessToken, []); $result = $response->getDecodedBody(); // result
获取关注者列表
$data = ['data' => json_encode(array( 'offset' => 0, 'count' => 10 ))]; $response = $this->zalo->get(ZaloEndPoint::API_OA_GET_LIST_FOLLOWER, $accessToken, $data); $result = $response->getDecodedBody(); // result
获取最近的短信列表
$data = ['data' => json_encode(array( 'offset' => 0, 'count' => 10 ))]; $response = $zalo->get(ZaloEndPoint::API_OA_GET_LIST_RECENT_CHAT, $accessToken, $data); $result = $response->getDecodedBody(); // result
获取与关注者的短信列表
$data = ['data' => json_encode(array( 'user_id' => 494021888309207992, 'offset' => 0, 'count' => 10 ))]; $response = $zalo->get(ZaloEndPoint::API_OA_GET_CONVERSATION, $accessToken, $data); $result = $response->getDecodedBody(); // result
版本控制
当前版本为2.0.0。我们将在下一个版本中更新更多功能。
作者
- Zalo开发者
许可证
本项目受MIT许可证许可。