php实现微信小程序消息通知「建议收藏」

php实现微信小程序消息通知「建议收藏」接入消息通知指引地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/custommsg/callback_help.html文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#%E6%A8%A1%E7%89%88%E6%B6%88%E6%81%AF%E7%AE%A1%E7%9…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

接入消息通知指引地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/custommsg/callback_help.html

文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#%E6%A8%A1%E7%89%88%E6%B6%88%E6%81%AF%E7%AE%A1%E7%90%86

看完这两个地址基本上你就明白是怎么实现消息通知的了,下面就是需要根据自己的业务需求写php代码了

php中业务分为以下几个步骤:

1、小程序后台消息模板设置获取模板ID

2、微信公众平台|小程序->设置->开发设置 获取AppID(小程序ID)、AppSecret(小程序密钥   注:重置后导致之前的失效)

3、通过AppID、AppSecret调用接口生成ACCESS_TOKEN

4、获取form_id

5、发送模板消息

 

下面是实现上面步骤的详细过程:

一、获取模板ID

php实现微信小程序消息通知「建议收藏」

二: 获取AppID(小程序ID)、AppSecret(小程序密钥   注:重置后导致之前的失效)

php实现微信小程序消息通知「建议收藏」

三、生成ACCESS_TOKEN

接口地址:

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


php实现微信小程序消息通知「建议收藏」

代码实现:

public function getAccessToken(Request $r)
{
    $appId = Input::get('appId',NULL);
    $appSecret = Input::get('appSecret',NULL);

    $r = file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appId&secret=$appSecret"); //返回的是字符串,需要用json_decode转换成数组
    $data = json_decode($r,true);

    return $data['access_token'];

}

四、获取form_id

需要在小程序上做个form表单提交,可以前端生成传到后台,就可以获取到了

注:
页面的 <form/> 组件,属性report-submit为true时,可以声明为需发模板消息,此时点击按钮提交表单可以获取formId,用于发送模板消息(多个地方生成form_id传给后端)。
form_id的长度:Android是13位时间戳、iOS是32位GUID
form_id其实就是前端负责获取,传给后端,后端将form_id存起来,在业务中用到消息通知的时候从表里面取出来

form_id中需要注意的一点:一个form_id只能用一次,所以在建表的时候需要给个status区分已使用和未使用的状态(这个坑已经进去过,发送完模板不修改status值,会使得消息通知偶尔成功,偶尔失败)
五、发送模板消息

上面需要的参数都准备好了,OK,这里自己封装了一个方法。然后在用到的地方调用的
封装的方法如下:
public function sendMessage()
{
    $token = $this->getToken();
    $post = [];
    $post['touser'] = '用户openId';
    $post['page'] = 'index';
    $post['emphasis_keyword'] = 'keyword1.DATA';
    $post['color'] = '#173177';

    $post['template_id'] = '模板id';
    $post['form_id'] = 'formId';
    $post['data'] = [
        'keyword1'=>['value'=>'xxxxxx','color'=>'#173177'],
        'keyword2'=>['value'=>'2018-03-06 14:22:34','color'=>'#173177'],
        'keyword3'=>['value'=>'xxxxxx','color'=>'#173177']
    ];

    $url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.$token;
    $re = $this->curl_url($url,$post);
    return $re;
}

private function curl_url($url, $json)
{
    $body = json_encode($json);
    $headers = array("Content-type: application/json;charset=UTF-8", "Accept: application/json", "Cache-Control: no-cache", "Pragma: no-cache");

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $result = curl_exec($ch);
    curl_close($ch);

    return $result;

}

调用:
public function send(Request $r)
{
    $wechat = new WeChatApi();
    $re = $wechat->sendMessage();
    return $re;

}



到这里就可以实现消息通知了

原文地址:https://www.cnblogs.com/a-record/p/8521138.html

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193533.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DVWA登录出现allow_url_fopen = On allow_url_include = On的错误

    DVWA登录出现allow_url_fopen = On allow_url_include = On的错误进入到DVWA页面中:点击下图中按钮Creat/ResetDatabase创建数据库:出现如下错误提示:CouldnotconnecttotheMySQLservice.Pleasechecktheconfigfile.12意思是:无法连接到MySQL服务。请检查你的config文件。问题解决此时我们找到config文件下的config.inc.php文件打开进行操作,将$DVWA[‘db_password’]改为和phpstudy_pro中数据

    2022年7月16日
    16
  • idea2022.01 激活码【中文破解版】2022.03.07

    (idea2022.01 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年4月2日
    76
  • 多尺度地理加权回归模型_sas地理加权

    多尺度地理加权回归模型_sas地理加权mgwr软件运行了四天了,显示迭代次数才七次,请问什么时候才是个头呀?求问大佬

    2022年9月28日
    4
  • 【matlab】如何画分段函数的图像[通俗易懂]

    【matlab】如何画分段函数的图像[通俗易懂]MATLAB如何画分段函数的图像通常要用MATLAB画分段函数图像的话,总要分段去画非常麻烦,还需要holdon,现在教你一种简单化分段函数的方法,让你一下子知道这个方法的魅力!!工具/原料MATLAB软件代码方法/步骤1确定你需要的分段函数是怎样一个表

    2022年6月6日
    173
  • SpringCloud笔记:配置Eurake注册中心与高可用集群

    SpringCloud笔记:配置Eurake注册中心与高可用集群SpringCloud是目前非常流行的一个微服务框架,基于springboot,由多个独立模块集合而成。每个模块既可以是一个服务项目,比如会员服务,订单服务等,也可以是公用的API给其他模块使用。可以理解为把一个大的项目拆分成很多小的模块,这些模块通过httpclient+json的形式完成服务之间的通讯,而且每个模块都有自己独立的业务和部署,使得粒度更加精细。五大组件如下:服务注册与发现——…

    2022年5月30日
    58
  • python中modulenotfounderror_esxi安装报错

    python中modulenotfounderror_esxi安装报错1.下载安装包https://www.python.org/ftp/python/该目录下选择所需要的版本进行下载、解压。wgethttps://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgztar-xzvfPython-3.7.1.tgz2.二进制文件安装  1.创建存放目录mkdir/usr/l…

    2022年9月2日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号