本篇文章给大家带来的内容是关于使用php实现微信小程序发送模板消息(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

本章将会简单说一下微信小程序的模板消息发送,相对来说比较简单,但也有一个小坑要注意的。

微信的地址为:https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN

相关参数为参数必填说明touser是接收者(用户)的 openid

template_id是所需下发的模板消息的id

page否点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。

form_id是表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id

data是模板内容,不填则下发空模板

color否模板内容字体的颜色,不填默认黑色 【废弃】

emphasis_keyword否模板需要放大的关键词,不填则默认无放大

基本参数和地址就是以上测试的,有的人会疑惑form_id,openid,tmeplate_id该从哪里获取下面为先简单说下

form_id可以由前端提供,前端可以在每一个按钮上面提交表单获取form_id给后端,同时后端拿到相关openid。在这里为建议的是前端尽可能多的给后端提供,就是每个按钮都提供给后端一个id,form_id的有效期为7天,不管运营人员有没有使用,数量多好过数量少。

template_id为模板id,可以登陆微信小程序后台在模板消息那里获取到。

当我们知道这些参数后,开发者肯定想马上测试一下,然后就让前端提供form_id,这里为将说下2个坑

第一坑:电脑获取的form_id是不可以使用的

第二坑:form_id是要手机真机获取的,但真机的同时还要是线上的项目,未上线本地测试会提示校验form_id,微信是没有说明这个注意点的,即是需要在审核成功发布后在线上测试。

接下来就说下后端代码<?php

//获取accesstoken

public function getAccessToken($appid,secret){

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";

$res = $this->curl_get($url);

$res = json_decode($res,1);

return $res['access_token'];

}

//获取模板消息内容主体

//因为是测试所以写死,大家可以通过传参的方式获取

public function getMsg($openid,$template_id,$form_id,$emphasis_keyword='keyword1'){

$data['data']= ['keyword1'=>['value'=>'test1','color'=>''],'keyword2'=>['value'=>'test2','color'=>''],'keyword3'=>['value'=>'test1','color'=>'']];//内容主体

$data['touser'] = $openid;//用户的openid

$data['template_id'] = $template_id;//从微信后台获取的模板id

$data['form_id'] = $form_id;//前端提供给后端的form_id

$data['page'] = 'pages/index/index';//小程序跳转页面

$data['emphasis_keyword'] = $emphasis_keyword;//选择放大的字体

return $data;

}

public function send($appid,secret,$openid,$template_id,$form_id){

$access_token = $this->getAccessToken($appid,secret);

$send_url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send? access_token=' . $access_token;

$data = $this->getMsg($openid,$template_id,$form_id);

$str = $this->curl_post($send_url,json_encode($data));

$str = json_decode($str,1);

return $str;

}

public function curl_post($url, $fields, $data_type='text')

{

$cl = curl_init();

if(stripos($url, 'https://') !== FALSE) {

curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($cl, CURLOPT_SSLVERSION, 1);

}

curl_setopt($cl, CURLOPT_URL, $url);

curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1 );

curl_setopt($cl, CURLOPT_POST, true);

curl_setopt($cl, CURLOPT_POSTFIELDS, $fields);

$content = curl_exec($cl);

$status = curl_getinfo($cl);

curl_close($cl);

if (isset($status['http_code']) && $status['http_code'] == 200) {

if ($data_type == 'json') {

$content = json_decode($content);

}

return $content;

} else {

return FALSE;

}

}

public function curl_get($url, $data_type='text')

{

$cl = curl_init();

if(stripos($url, 'https://') !== FALSE) {

curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($cl, CURLOPT_SSLVERSION, 1);

}

curl_setopt($cl, CURLOPT_URL, $url);

curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1 );

$content = curl_exec($cl);

$status = curl_getinfo($cl);

curl_close($cl);

if (isset($status['http_code']) && $status['http_code'] == 200) {

if ($data_type == 'json') {

$content = json_decode($content);

}

return $content;

} else {

return FALSE;

}

}

punblic function index(){

$appid = 'xxx';//小程序appid

$openid = 'xxx';//接收用户的openid

$template_id = 'xxx';//从微信后台获取的模板id

$form_id = 'xxx';//七天内的formid

$data = $this->send($appid,secret,$openid,$template_id,$form_id);

var_dump($data);//打印测试结果

}

以上就是发送模板消息的代码,其实只要获取到几个相应的参数就可以 注意相关坑就可以成功测试发送了

相关推荐:

php+实现群发微信模板消息_使用php实现微信小程序发送模板消息(附代码)相关推荐

  1. 《微信小程序——发送模板消息》详细步骤

    第一步:获取access_token 第一步详情:因为access_token在微信公众号还是小程序,在一个月之内都有获取次数的限制,并且一个access_token只有2小时的有效期:所以每当我们获 ...

  2. 小程序发送模板消息给用户 —— 一次性模板实现“长期订阅”

    大家好!我是我玩亚索我会C,在写小程序时,我们会有向用户发送消息的需求,比如发送提醒通知,或者是一些重要通知来形成一个服务的闭环.这就要用到微信的发送消息功能了,下面我使用Java语言来详细演示下如何 ...

  3. 小程序发送模板消息form_id的获取

    关于小程序发送模板消息form_id获取的问题 第一种可以设置一个隐藏的表单 在form表单里加入report-submit 当用户点击时 会生成相对应的form_id 模板消息一般是跟用户交互时返回 ...

  4. 小程序发送模板消息小结

    小程序发送模板消息 package com.litte.util;import com.litte.entity.templateMessage.TemplateMessage; import com ...

  5. 【微信小程序canvas】实现小程序手写板用户签名(附代码)测试有效

    工作中公司业务需要的微信小程序用户签字功能 先看效果图: wxml: <view class="wrapper"><view class="handBt ...

  6. 【微信小程序canvas】实现小程序手写板用户签名(附代码)

    [微信小程序canvas]实现小程序手写板用户签名(附代码) 工作中公司业务需要的微信小程序用户签字功能 先看效果图: wxml <view class="wrapper"& ...

  7. java 微信小程序-发送模板消息

    开发前准备工作 登录微信公众平台-小程序后台,在模板消息里面设置需要发送的模板,拿到模板id. 地址: https://mp.weixin.qq.com 找到微信官方文档-小程序开发-下发小程序和公众 ...

  8. 微信小程序发送模板消息踩的坑

    在微信的微信小程序中,微信提供了和微信服务号相同的模板消息功能. 但是,虽然都是发送模板消息,小程序和服务号的模板消息的使用还是有差别的. 对于微信服务号的模板消息只要通过查看文档就能够知道我们使用模 ...

  9. java发送微信小程序模板消息_微信小程序-发送模板消息

    1 添加一个小程序的消息模板,获取到模板id,存储到数据库中,方便以后修改调用 这里有个坑,就是 form_id, 这个是用户触发表单事件的表单id,需要存储到数据库中,给这个表单提交以后的数据,添加 ...

最新文章

  1. 只会高中数学运算就能发现算法?Google开源的AutoML-Zero有多厉害
  2. python画三维几何图-Python下opencv使用笔记(二)(简单几何图像绘制)
  3. new、delete、malloc、free 在堆栈上的使用区别 C++
  4. Mahout推荐算法API详解
  5. 全球及中国胶合板行业产量规模与营运能力研究报告2022版
  6. mysql压缩包修改密码_mysql 解压之后一堆文件,第一次安装 与 修改密码
  7. matlab 无向拓扑图,无向图绘画树状拓扑图算法
  8. flowgraph java_如何在TensorFlow import_graph_def期间更改输入的维度
  9. matlab repmat_利用MATLAB实现KNN
  10. struts Caused by: no protocol dtd - Class: java.net.URL
  11. 卧槽!迅雷的代码竟然被扒了精光!
  12. ubuntu上解决evolution邮箱附件为dat格式
  13. 使用python3编写冒险岛079登录器
  14. Python-编码格式
  15. 微信模板消息批量推送
  16. html在复选框内打钩,Selenium Webdriver Python如何在所有复选框中打勾
  17. java最新2019面试题
  18. android 镜像结构,android查看分区和镜像文件的结构
  19. 小葵花妈妈课堂开课了:《ArrayList源码浅析》
  20. CUDA out of memory. Tried to allocate 150.00 MiB (GPU 0; 4.00 GiB total capacity; 2.24 GiB already a

热门文章

  1. 绘画系统-Processing版
  2. java 判断是否包含中文_Java中判断字符串中是否包含中文汉字
  3. python出租车数据_1-出租车数据的基础处理,由gps生成OD(pandas).ipynb
  4. 检查版本更新,跳转到腾讯应用宝进行下载
  5. iperf 网速测速
  6. 记一次zookeeper not connected
  7. 关于python中end函数的使用
  8. matlab中关于双重积分的问题
  9. 实验6 VMware Workstation 使用(1)
  10. fliqlo翻页时钟屏保win7/win10免费下载