述:在这里会具体讲述到如何实现:如何通过后台的代码来实现发送模板消息到已经关注了“心想”公众号的用户。

  (本人新手,目前实习中,我的所有文档都是在自己开发过程中的记录,有些言语跟我的项目有关请大家可以忽略,主要是跟大家分享我的一些想法和经验!同时希望大家多多支持,你们的支持将会给我更大的动力!)

  方法很简单,在官方的文档中已经给出了解决方案。后台写来也是比较简单的。唯一存在的难点就是我们需要获取到用户的fakeid,也就是用户在微信公众号内的openid(注意,这里的openid是指用户关注公众号之后产生的一个openid,这个跟小程序的openid是不同的)。怎么获取到用户的fakeid,请大家耐心等待我的下一篇文档(“如何实现不同应用之间openid的对应(主要是openid(fakeid),unionid等之类的信息匹配)”)。

接下来就开始实现如何发送消息。下面会讲到最简单的模板消息的发送。

  1. 首先获取到我们最最最基本的两个参数,一个是我们微信公众号的appid,另一个则是我们微信公众号的secret。(在这个文档就不写具体是什么参数了)
  2. 在第一步中拿取到我们的appid和secret之后,我们开始进行我们的access_token的参数请求。具体的请求如下:

$str = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret);

注意在php中我们使用我们的值需要通过“.”来连接我们的数据

$token = json_decode($str,true);      //这一步我们去把上面获取到的数据转化为数组形式,方便我们去获取数据

$access_token = $token['access_token'];   //这里去获取我们的access_token(取出具体的值)

介绍一下access_token的作用,在微信的开发中,access_token可谓是很多功能实现一定要经过的步骤,因为这个是唯一我们可以对微信中一些功能实现的凭证,如果没有这个access_token,则我们是无法显示有些功能的。

  1. 在获取到我们的access_token之后(我们已经准备好了我们可以使用微信功能的凭证了。就相当于我们已经成功了一半了),接下来我们就我们模板信息准备了。(下面准备了一个最简单的信息发送,如果想要了解更多,请看微信公众号内的官方文档,里面写的很详细!)

$template=array(

'touser'=>'ocRJTuOuTv6e7Hw6j*********',

'template_id'=>'_t-BVDFVSl_HZ6xkMRNOOQIQOuShl9V21S-rAoA71b0',

'data'=>array(

'first'=>array('value'=>'点击跳转小程序',"color"=>'#173177'),

'keyword1'=>array('value'=>'test',"color"=>'#173177'),

'keyword2'=>array('value'=>'test',"color"=>'#173177'),

'remark'=>array('value'=>'test',"color"=>'#173177')

)

);

接下来一个一个参数进行解释:

$template=array();这个是我们模板的最外层函数,发送给用户的是一个数据,在客户端(手机端的微信公众号)应该会根据我们发送的数据进行发送(具体怎么实现这里不做研究)。

'touser':这个参数极为关键,这个参数是最关键的一个参数,因为也是最难获取到的一个参数,这里面需要填写的参数就是在上面写道的openid(在这里openid就是fakeid,也就是用户在公众号内唯一的openid,发送消息是通过openid来识别是哪个用户,从而来实现相对应的数据发送,具体怎么获取到需要根据不同的需求下来获取到用户的openid,在这里请期待我的下一篇文档(“如何实现不同应用之间openid的对应(主要是openid(fakeid),unionid等之类的信息匹配)”)这里实现了其中一种去获取到相对应的openid的方法,可以发送到具体的用户)

'template_id':这个参数的意思是我的模板id,在微信公众号中可以申请相对应的模板,每个模板都有相对应的模板id。但是这个模板id一定是要申请过的!如果要使用我上面的模板id,则一定要申请过我使用的模板。

'data':这个参数是要跟上面我们申请好的template(模板)的具体要求来的。在微信公众号中,我们申请好了我们的模板之后,我们可以在我们申请的模板中去查看我们模板中需要传入的具体参数,在这里的例子中,我们可以看下面的截图

在第一块区域中,就是我们data需要传入的参数,在php中具体传入的写法在上面的代码中。其中first、keyword1、keyword2、remark是我们需要传入的参数,在这里可以设置我们的需要的文字和字的颜色。

  1. 好了上面就介绍完了所有的步骤,在这个例子中是最简单的一个例子,我们还可以实现点击跳转到小程序、跳转到网页等其他功能。具体怎么实现请看官方文档了。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

PHP实现发送模板消息到微信公众号的更多相关文章

  1. PHP实现发送模板消息(微信公众号版)

    以下为开发步骤: 1.微信公众号为服务号且开通微信认证(其他类型账号不能发送) 2.ip白名单设置你的服务器ip(用于获取access_token) 3.网页授权你的域名(用于获取用户的openid) ...

  2. python特定时间发送消息到微信公众号

    #!/usr/bin/env python# -*- coding: utf-8 -*-# __author__ = 'James'# 导入模块from wxpy import *import tim ...

  3. 【C#版本】微信公众号模板消息对接(一)(图文详解)

    特此说明:本篇文章为个人原创文章,创作不易,未经作者本人同意.许可等条件,不得以任何形式搬运.转载.抄袭(等包括但不限于此手段)本文章,否则保留追究有关侵权人责任的权利 一.认识微信公众号模板消息 什 ...

  4. 微信公众号发送客服消息提示errcode":45015,"errmsg":"response out of time limit or subscription is canceled hint:解决办法【已解决】

    微信公众号发送客服消息提示errcode":45015,"errmsg":"response out of time limit or subscription ...

  5. tp6微信公众号开发者模式自定义菜单

    1,参考上篇博客,获取access_token https://www.cnblogs.com/xiaoyantongxue/p/15803334.html 2:控制器写以下代码 /* * 获取普通a ...

  6. php之微信公众号发送模板消息参观模仿

    上篇文章中鞋到了公众号发送末班消息,他是最后调用两个方法,本文章简化一下 将下面的php方法放到一个可以引入的公共类中即可 构建模板消息: 我把需要用到的模板消息 都写成一个个方法,放在公共类文件中了 ...

  7. php之微信公众号发送模板消息

    讲一下开发项目中微信公众号发送模板消息的实现过程(我用的还是Thinkphp5.0). 先看一下效果,如图: 就是类似于这样的,下面讲一下实现过程: 第一步:微信公众号申请模板消息权限: 立即申请: ...

  8. JAVA微信公众号通过openid发送模板消息~

    1,问题产生 在微信公众号开发过程中,我们有时候做不同权限的时候,比如在注册的时候,需要审核,然后我们要想办法让对方知道审核的结果.这时候我们可以通过模板消息来通知. 2,第一步,首先在微信公众号上获 ...

  9. 微信公众号发送消息模板(java)

    这段时间接触公众号开发,写下向用户发送消息模板的接口调用 先上接口代码 public static JSONObject sendModelMessage(ServletContext context ...

随机推荐

  1. hihoCoder Demo Day dp

    题意:有一个机器人被困在一个的迷宫中,机器人的初始位置是,目的地是,并且它的移动方式很奇怪:只能一直向右,直到不能再向右才能把方向变成向下:只能一直向下,直到不能再向下才能把方向变成向右.迷宫中的每个 ...

  2. hihoCoder 1033 : 交错和 数位dp

    思路:数位dp,dp(i, j, k)表示考虑i位数,每位数可以任意取[0~9],并且这i位数的交错和为j,k=1表示前缀全是0(如000456),k=0表示前缀不为0.注意,前缀是否为0是这道题的一 ...

  3. java8在Collection中新增加的方法removeIf

    记得我在以前找工作的经历中,遇到过一个面试官问过我一个很基础的问题.问题是:有一个List中有10个元素,我现在想从中删除3个元素,请问怎么做?我当时也没想,就直接说,List的有自带的remove方 ...

  4. Oracle安装、Navicat for Oracle、JDBCl连接、获取表结构

    Oracle安装 Navicat for Oracle配置 Oracle JDBC连接(增删改查) Oracle安装 环境windows 7 64位 安装版本:oracle 11g(64位) 下载地址 ...

  5. C++的AES加解密

    最近公司项目要做个WPF程序,但是底层加密部分要用C++来实现.通过网上搜索各种资料,地址已经记不下了,没发贴出来了! 下面看看如何加解密的~!先贴代码.... string tKey(sKey); ...

  6. qwe框架- CNN 实现

    CNN实现 概述 我在qwe中有两种,第一种是按照Ng课程中的写法,多层循环嵌套得到每次的"小方格",然后WX+b,这样的做法是最简单,直观.但是效率极其慢.基本跑个10张以内图片 ...

  7. raw文件系统

    简介 RAW文件系统是一个没有被NT文件系统(FAT或NTFS)格式化的磁盘分区(win8默认用的是RAW文件系统). 2定义 分区显示RAW文件系统的直接原因,是由于文件系统不被操作系统识别.此时在 ...

  8. require()的工作流程

    require()的工作流程 当require()里传递一个参数x时,会有以下情况: x是一个文件 x是一个路径 eg. 当x为/home/dk/project/app 依次搜索以下的node_mod ...

  9. Spring Boot 文件上传

    其实网上已经有很多这样的文章了.为什么我还要记录一下呢?原因是在工作中对接外系统时,碰到了他们调取我们文件上传接口确存在着http请求头部规范的情况,从而导致用传统方法获取不到参数.今天就来整理下Sp ...

  10. js弹窗登录效果(源码)--web前端

    1.JS弹窗登录效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...