php对接微信公众号模板消息接口
时间: 2023-07-31 15:06:26 浏览: 125
要对接微信公众号模板消息接口,需要进行以下步骤:
1. 在微信公众平台上创建模板消息,获取模板 ID 和模板消息中需要填充的关键词。
2. 在 PHP 代码中编写发送模板消息的代码,包括获取 access_token 和发送模板消息。
3. 在用户触发某些事件时,调用 PHP 发送模板消息的代码。
以下是一个简单的 PHP 示例代码:
```php
// 获取 access_token
function getAccessToken($appID, $appSecret) {
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appID}&secret={$appSecret}";
$result = file_get_contents($url);
$json = json_decode($result, true);
if (isset($json['access_token'])) {
return $json['access_token'];
} else {
return false;
}
}
// 发送模板消息
function sendTemplateMessage($accessToken, $openID, $templateID, $data, $url = '') {
$url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$accessToken}";
$data = [
'touser' => $openID,
'template_id' => $templateID,
'url' => $url,
'data' => $data
];
$data = json_encode($data, JSON_UNESCAPED_UNICODE);
$result = http_post_data($url, $data);
$json = json_decode($result, true);
if (isset($json['errcode']) && $json['errcode'] == 0) {
return true;
} else {
return false;
}
}
// 发送 POST 请求
function http_post_data($url, $data_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
ob_start();
curl_exec($ch);
$result = ob_get_contents();
ob_end_clean();
curl_close($ch);
return $result;
}
// 示例代码
$appID = 'your-app-id';
$appSecret = 'your-app-secret';
$accessToken = getAccessToken($appID, $appSecret);
$openID = 'your-open-id';
$templateID = 'your-template-id';
$data = [
'first' => ['value' => 'Hello World!', 'color' => '#173177'],
'keyword1' => ['value' => 'value1', 'color' => '#173177'],
'keyword2' => ['value' => 'value2', 'color' => '#173177'],
'remark' => ['value' => 'This is a remark.', 'color' => '#173177']
];
$url = 'http://example.com';
$result = sendTemplateMessage($accessToken, $openID, $templateID, $data, $url);
if ($result) {
echo '发送成功!';
} else {
echo '发送失败!';
}
```
请注意,以上代码仅作为示例,需要根据实际情况进行修改。
阅读全文