讲一下开发项目中微信公众号发送模板消息的实现过程(我用的还是Thinkphp5.0)。

先看一下效果,如图:

就是类似于这样的,下面讲一下实现过程:

第一步:微信公众号申请模板消息权限:

立即申请:

申请过程就不说了,提交并且申请通过后,可以在模板库中看到模板消息列表:

想用哪个模板点击进去添加就行了:

添加模板后就存放到“我的模板库”中了,这是我添加的需要用到的一些:

点击查看模板的详情,可以看到模板的id及各项内容参数名,不同的模板消息的内容结构不一样。这些id及字段名在程序中会使用到:

第二步:程序实现模板消息SDK:

同样的,模板消息是使用access token来发送的,所以要获取token。

我把模板消息的类文件放在了extend下面,大致位置如图:

代码截图如下:

类文件这样就可以了,到时候直接引入使用就可以了。

第三步:构建模板消息:

我把需要用到的模板消息 都写成一个个方法,放在公共类文件中了,可以参考一下:

//下单成功通知模板
/*
* openid:微信唯一标识
* orderSn:订单号
* goods_name:商品名称
* goods_num:商品数量
* allMoney:总价格
*/
function orderSuccess($openid=null,$orderSn=null,$goods_name=null,$goods_num=null,$allMoney=null){
$template = array(
"touser" => "$openid",
"template_id" => "gApc7CzZSiJOZ7OeoXKK8APmz-dcuQuwfBTzPblEWv4",
'url' => '跳转地址',
'topcolor' => '#ccc',
'data' => array('first' => array('value' =>urlencode('亲,您的订单已创建成功,我们会立即为您备货,并在第一时间内为您安排专人免费送货到家!订单详情如下'),
'color' =>"#743A3A",
),
'keyword1' => array('value' =>urlencode($orderSn),
'color' =>'#FF0000'
),
'keyword2' => array('value' =>urlencode($goods_name),
'color' =>'#FF0000'
),
'keyword3' => array('value' =>urlencode($goods_num),
'color' =>'#FF0000'
),
'keyword4' => array('value' =>urlencode($allMoney),
'color' =>'#FF0000'
),
'keyword5' => array('value' =>urlencode('在线支付'),
'color' =>'#FF0000'
),
'remark' => array('value' =>urlencode('如果您对以上信息有任何疑问,请直接在平台上回复您的问题即可,或拨打客服电话4001021789。再次感谢您的惠顾!'),
'color' =>'#FF0000'
),
)
);
return $template;
}

这只是我写的其中一个下单成功的模板消息,放在common文件中了,这样基本上就完成了:

下面引用模板消息发送到微信公众号中

//构造消息模板
$template =orderSuccess($openid,$reoderSn,$goodsNames,$sum,$money);
//引入模板消息类
Loader::import('org\WxMessage', EXTEND_PATH);
//实例化消息类
$message = new \WxMessage();
//发送消息
$message->send_template_message(urldecode(json_encode($template)));

  

用loader引入extend下的消息类文件,发送消息后,就得到了刚开始的那张图片内容。

挺简单的,感觉有用的可以参考一下试试看。

本文属原创内容,为了尊重他人劳动,转载请注明本文地址:

http://www.cnblogs.com/luokakale/p/8143684.html

php之微信公众号发送模板消息的更多相关文章

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

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

  2. .net微信公众号开发——模板消息

    作者:王先荣    本文介绍微信公众号中的模板消息,包括以下内容:(1)TemplateMessage类简介:(2)设置所属行业:(3)获得模板id:(4)发送模板消息:(5)接收推送模板消息发送结果 ...

  3. PHP微信公共号发送模板消息。

    1.首先从微信公共平台(https://mp.weixin.qq.com/)添加模板. 2. /** * 经纪人生成电子合同通知租客.业主 * @param string $openid openid ...

  4. 微信公众号发送消息给用户 php

    1.微信公众号 这里得话 一开始先去看了 微信公众号的接口 发现网页授权需要时认证的服务号,一开始想的是那去申请一个认证的服务号岂不是很费事,然后网上搜了搜,发现了还有微信公众号个人测试号这个东西,所 ...

  5. h5 录音 自动生成proto Js语句 UglifyJS-- 对你的js做了什么 【原码笔记】-- protobuf.js 与 Long.js 【微信开发】-- 发送模板消息 能编程与会编程 vue2入坑随记(二) -- 自定义动态组件 微信上传图片

    得益于前辈的分享,做了一个h5录音的demo.效果图如下: 点击开始录音会先弹出确认框: 首次确认允许后,再次录音不需要再确认,但如果用户点击禁止,则无法录音: 点击发送 将录音内容发送到对话框中.点 ...

  6. 微信小程序发送模板消息

    微信小程序发送模板消息 标签(空格分隔): php 看小程序文档 [模板消息文档总览]:https://developers.weixin.qq.com/miniprogram/dev/framewo ...

  7. 微信公众号发送告警Python脚本

    调用该脚本,可以向微信公众号发生告警. #!/bin/env python #coding:utf-8 #Author: Hogan #Descript : 微信公众号发送告警脚本 import ur ...

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

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

  9. 微信小程序-发送模板消息(C#)

    步骤一:获取模板ID 有两个方法可以获取模版ID 通过模版消息管理接口获取模版ID 在微信公众平台手动配置获取模版ID 步骤二:页面的 <form/> 组件,属性report-submit ...

随机推荐

  1. Shell中map的使用

    Shell中的map与array有很多的相似之处,array操作:https://www.cnblogs.com/qq931399960/p/10786111.html 一.在使用map时,需要先声明 ...

  2. 零基础如何自学java开发?

    开篇直奔主题,java 学习个人感觉分为两种途径,第一种是在学校,在培训机构等地方学习. 有人指导:第二种是自学,通过视频,书籍,朋友等完成学习. 本文适合 自学,且基础薄弱或者无基础的人.先介绍下我 ...

  3. 面向对象(__str__和__repr__方法)

    #Author : Kelvin #Date : 2019/1/21 16:19 class App: def __init__(self,name): self.name=name # def __ ...

  4. Redis学习笔记~分布锁的使用

    回到目录 分布锁主要用在多进程共同访问同一个资源时候,用来保持同一时间段只能有一个进程执行,同时避免了并发冲突的出现,这在很多场景都会用到,像秒杀库存,抽奖库存,多操作者处理一家公司等. void T ...

  5. KOA中间件的基本运作原理

    示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 华为云社区地址:[你要的前端打怪升级指南] 在中 ...

  6. [转]Blue Prism Login Agent 使用指导手册

    本文转自:https://cloud.tencent.com/developer/news/83035 咳!咳!咳! 第一篇RPA技术文,还是贼拉鸡冻.各位大侠要多多支持啊 1.Login Agent ...

  7. JS里charCodeAt()和fromCharCode()方法拓展应用:加密与解密

    JS实现客户端的网页加密解密技术,可用作选择性隐蔽展示.当然客户端的加密安全度是不能与服务器相提并论,肯定不能用于密码这类内容的加密,但对于一般级别的内容用作展示已经够了. JS加密与解密的解决方案有 ...

  8. .NET Core: 在.NET Core中进行单元测试

    单元测试能够帮助开发人员确保所开发的模块.类以及类中的方法等的正确性,在项目开发过程中,及时进行单元测试能够避免不必要的BUG以及提高测试效率. 在本文中,我们会分别来学习如何使用MSTest.xUn ...

  9. 纯手写springIOC

    大家好啊- 那么今天来带大家写一下spring的ioc. 其实也很简单,首先我们明白两点,java解析xml和java的反射机制,因为ioc就是主要是基于这两个来实现,今天只是简单的来大家实现下. 废 ...

  10. Mybatis实现部门表增删改查以及排序

    废话不说,直接开门见山! 需要在WebContent下的lib下导入两个包 mybatis-3.2.5.jar ojdbc6.jar package com.xdl.entity; import ja ...