PHP
PHP调用vivo快应用消息推送接口
PHP通过curl方式调用vivo快应用消息推送
最近完成一个需求,因为需要用到vivo快应用消息推送接口,将这个过程分享给大家参考。
首先是我们的加密以及调用接口逻辑,代码如下:
/**
* viVo密钥
* @param array $post
* @param string $secret
* @return string
*/
function viVoSign($post = array(), $secret = "")
{
//通过键进行排序 a,b,c
ksort($post);
$str = '';
//循环拼接参数
foreach ($post as $key => $value) {
//拼接参数
$str .= $value;
}
$str = $str . $secret;
//加密
$sign = strtolower(md5($str));
//返回
return $sign;
}
/**
* 秒转毫秒
* @param $timestamp
* @return string
*/
function msecToSec()
{
return sprintf('%.0f', time() * 1000);
}
/**
* viVo请求发送
* @param $remote_server
* @param $post_string
* @param string $authToken
* @return mixed
*/
function viVoRequestByCurl($remote_server, $post_string, $authToken = "")
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
//根据情况展示
if ($authToken !== "") {
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'authToken:' . $authToken,
'Content-Type: application/json;charset=utf-8'
));
} else {
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json;charset=utf-8'
));
}
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}然后需要调用接口获取accessToken,代码如下:
$appId = "自己的appId";
$appKey = "自己的appKey";
$secret = "自己的secret";
$url = "https://api-push.vivo.com.cn/message/auth";
$post['appId'] = $appId;
$post['appKey'] = $appKey;
$post['timestamp'] = msecToSec();
$sign = viVoSign($post, $secret);
$post["sign"] = $sign;
$post_string = json_encode($post);
$res = viVoRequestByCurl($url, $post_string);
$result = json_decode($res, true);
if ($result["result"] == 0) {
$authToken = $result["authToken"];
} else {
$authToken = "";
}拿到accessToken后,我们便可以发送消息推送,代码如下:
$url = "https://api-push.vivo.com.cn/message/send"; $post['regId'] = '用户的regId'; $post['alias'] = ''; $post['notifyType'] = 2; $post['title'] = '消息订阅'; $post['content'] = '欢迎使用小程序'; $post['skipType'] = 1; $post['skipContent'] = ''; $post['requestId'] = '20200901'; $post_string = json_encode($post); $res = viVoRequestByCurl($url, $post_string,"上一步拿到的accessToken");
这样我们就成功完成vivo快应用的消息推送,下一篇将给大家介绍华为快应用消息推送。
0条评论