首页 > 文章列表 > PHP实现微信小程序消息推送的技巧和方法

PHP实现微信小程序消息推送的技巧和方法

php 微信小程序 消息推送
329 2023-06-03

随着微信小程序的普及和使用,对于开发者来说,实现消息推送已经成为了不可或缺的功能。本文将介绍如何使用PHP实现微信小程序消息推送的技巧和方法。

一、准备工作

在开始之前,你需要准备以下内容:

  1. 拥有一个微信小程序账号
  2. 安装PHP开发环境
  3. 一个可以发送HTTP请求的PHP库,例如cURL

二、获取小程序access_token

为了向微信小程序推送消息,我们首先需要获取小程序的access_token。access_token是调用微信小程序接口的重要凭证,它具有一定的有效期,并且每天调用次数有上限。

获取access_token的步骤如下:

  1. 访问以下URL:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

其中,APPID和APPSECRET分别为你的小程序的应用ID和应用密钥。

  1. 解析返回结果

访问后,会返回如下JSON格式的结果:

{
"access_token":"ACCESS_TOKEN",
"expires_in":7200
}

其中,access_token即为我们需要的令牌,它的有效期为7200秒(2小时)。

三、发送消息模板

获取到access_token后,我们就可以开始向小程序发送消息模板了。消息模板是一种预先定义好的消息格式,可以包括一些占位符,在发送时会自动填充真实数据。

  1. 定义消息模板

在小程序管理后台中,找到“模板消息”菜单,创建一个新的消息模板。在模板中应该至少定义以下两个占位符:

{{keyword1.DATA}}
{{keyword2.DATA}}

这两个占位符用于填充消息中的标题和内容。

  1. 准备发送数据

准备一个数组,用于保存填充到消息中的真实数据。例如:

$data = array(
"keyword1" => array("value" => "您有一条新消息"),
"keyword2" => array("value" => "请登录小程序查看")
);

  1. 发送请求

构造一个POST请求,向以下URL发送数据:

https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN

其中,ACCESS_TOKEN为我们在第二步获取到的access_token。

请求的数据格式如下:

{
"touser":"OPENID",
"template_id":"TEMPLATE_ID",
"form_id":"FORM_ID",
"data":DATA,
"emphasis_keyword":"emphasis_keyword"
}

其中,touser表示要发送给哪个用户,template_id表示消息模板的ID,form_id表示表单ID,DATA表示要填充到模板中的真实数据,emphasis_keyword表示需要强调的关键词。

四、完整代码示例

下面是一个完整的PHP示例,演示了如何通过PHP实现微信小程序消息推送的功能。

<?php
//定义小程序的APPID和APPSECRET
define('APP_ID', 'your_appid');
define('APP_SECRET', 'your_appsecret');

//获取access_token
function getAccessToken() {
    $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . APP_ID . '&secret=' . APP_SECRET;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $res = curl_exec($ch);
    curl_close($ch);

    $json = json_decode($res, true);
    return $json['access_token'];
}

//发送消息模板
function sendTemplateMessage($access_token, $openid, $template_id, $form_id, $data, $emphasis_keyword = '') {
    $url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' . $access_token;

    $post_data = array(
        'touser' => $openid,
        'template_id' => $template_id,
        'form_id' => $form_id,
        'data' => $data,
        'emphasis_keyword' => $emphasis_keyword
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
    $res = curl_exec($ch);
    curl_close($ch);

    $json = json_decode($res, true);
    return $json;
}

//使用示例
$access_token = getAccessToken();
$openid = 'your_openid';
$template_id = 'your_template_id';
$form_id = 'your_form_id';
$data = array(
    'keyword1' => array('value' => '您有一条新消息'),
    'keyword2' => array('value' => '请登录小程序查看')
);
$result = sendTemplateMessage($access_token, $openid, $template_id, $form_id, $data);
?>

五、总结

本文介绍了如何通过PHP实现微信小程序消息推送的技巧和方法,包括获取access_token、定义消息模板、发送请求等步骤。通过这些知识点的学习,你就可以轻松地向微信小程序用户推送消息了。