当前位置: 首页 > 编程日记 > 正文

微信公众号为指定openid用户推送消息

微信公众号为指定openid用户推送消息

微信提供的开放接口中,有两个给指定openid的用户发送信息的接口,适用场景应该是向 预约用户或者中奖用户发送消息。

第一个接口:客服发送消息

  • 请求方式: POST

  • 请求地址:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN

  • params:access_token(获取方式见文尾)

  • body:

  • {// openid"touser":"OPEN_ID",// 消息类型(可以有很多,这里展示文本类型)"msgtype":"text",// 内容"text":{"content":"Hello World"}
    }
    

    注意:这个接口必须用户点到公众号的应用内部才能发送成功,并且一个用户最多同时发送三条信息

第二个接口:模板消息

微信提供了模板消息功能,可自定义模板内容,然后进行使用,官方文档见:

设置好模板消息后,拿到模板id,利用access_token鉴权就可以对指定openid的用户发送模板消息了。

  • 请求方式:POST

  • 请求地址:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

  • params:access_token(获取方式见文尾)

  • body

  • {	// openid"touser":"OPEN_ID",// 模板id"template_id":"ggsdfkfdsisfdisnf-_djfas-fjdsfnnjcsa","url":"http://weixin.qq.com/download",  "data":{"first": {"value":"预约游戏上线","color":"#173177"},"keyword1":{"value":"进击的巨人","color":"#173177"},"keyword2": {"value":"即将上线","color":"#173177"},"keyword3": {"value":"2021年7月22日","color":"#173177"},"remark":{"value":"快上号吧!","color":"#173177"}}
    }
    

    参数说明:

    参数是否必填说明
    touser接收者openid
    template_id模板ID
    url模板跳转链接(海外帐号没有跳转能力)
    miniprogram跳小程序所需数据,不需跳小程序可不用传该数据
    appid所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏)
    pagepath所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),要求该小程序已发布,暂不支持小游戏
    data模板数据
    color模板内容字体颜色,不填默认为黑色

在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:

 {"errcode":0,"errmsg":"ok","msgid":200228332}

第三个接口:获取Access_Token接口

接口调用请求说明

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

参数说明

参数是否必须说明
grant_type获取access_token填写client_credential
appid第三方用户唯一凭证
secret第三方用户唯一凭证密钥,即appsecret

返回说明

正常情况下,微信会返回下述JSON数据包给公众号:

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

参数说明

参数说明
access_token获取到的凭证
expires_in凭证有效时间,单位:秒

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}

返回码说明

返回码说明
-1系统繁忙,此时请开发者稍候再试
0请求成功
40001AppSecret错误或者AppSecret不属于这个公众号,请开发者确认AppSecret的正确性
40002请确保grant_type字段值为client_credential
40164调用接口的IP地址不在白名单中,请在接口IP白名单中进行设置。(小程序及小游戏调用不要求IP地址在白名单内。)
89503此IP调用需要管理员确认,请联系管理员
89501此IP正在等待管理员确认,请联系管理员
8950624小时内该IP被管理员拒绝调用两次,24小时内不可再使用该IP调用
895071小时内该IP被管理员拒绝调用一次,1小时内不可再使用该IP调用

相关文章:

Docker容器的备份与恢复,Docker镜像的备份与恢复

1. 备份容器 首先,为了备份Docker中的容器,我们会想看看我们想要备份的容器列表。要达成该目的,我们需要在我们运行着Docker引擎,并已创建了容器的Linux机器中运行 docker ps 命令。 # docker ps Docker Containers List 在此之…

SpringBoot部署脚本,拿走即用!

一个可以直接拿来使用的shell脚本,适用于springboot项目 #!/bin/bash # 这里可替换为你自己的执行程序,其他代码无需更改,绝对路径相对路径均可。 # 若使用jenkins等工具远程构建,则使用绝对路径,下面的日志输出路径同&#xff0…

淘宝获取单笔订单信息服务端调用API及流程

淘宝获取单笔交易接口(文档地址):https://open.taobao.com/api.htm?docId54&docType2 调用接口所需依赖(文档地址):https://developer.alibaba.com/docs/doc.htm?treeId1&articleId101618&d…

在Chrome中打开网页时出现以下问题 您的连接不是私密连接 攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码、通讯内容或信用卡信息)

现象:在Chrome中打开网页时出现以下问题 您的连接不是私密连接 攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码、通讯内容或信用卡信息)。 当点开“了解详情”后显示: 了解详情 NET::ERR_CERT_INVALID 将您访问的…

Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器

Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂。 # 以一个镜像为基础,在其上进行定制。就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指定的。而 FROM 就是指定 基础镜像&#xff0c…

解决gitte提交报错 error: GE007: Your push would publish a private email address.

错误情况: gitte提交报错,无法提交上去,报错如下: remote: Powered by GITEE.COM [GNK-6.0] remote: error: GE007: Your push would publish a private email address. remote: You can make your email public or disa…

Reject: HTTP ‘DELETE‘ is not allowed, Not injecting HSTS.....DELETE请求PUT请求跨域问题

CORS(DELETE请求、PUT请求) Reject: HTTP DELETE is not allowed [DEBUG] 2021-08-25 15:23:52.401 [http-nio-10010-exec-1] HstsHeaderWriter.writeHeaders(169) - Not injecting HSTS header since it did not match the requestMatcher org.springf…

Not injecting HSTS header since it did not match the requestMatcher HSTS设置问题解决

HSTS请求设置 错误描述:在使用文件上传功能时,form表单提交带有header数据的请求时遇到这个问题,报错如下: Not injecting HSTS header since it did not match the requestMatcher org.springframework.security.web.header.wr…

restTemplate http请求报错:no suitable HttpMessageConverter found for response type and content type

报错信息: org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.xxx] and content type [text/html;charsetutf-8] 异常原因:RestTempla…

mongo报错:not authorized on bb to execute command { create: \“xxx\“...}

mongo报错: {"ok" : 0,"errmsg" : "not authorized on bb to execute command { create: \"a\", capped: \"1\", lsid: { id: UUID(\"f01a76ec-6261-4886-9a3f-e07169eed122\") }, $db: \"bb\" …

阿里云如何将服务器添加至跳板机,如何将服务器添加至jumpsever

如何将服务器添加至跳板机。 获取跳板机/root/.ssh/id_rsa.pub 中的内容 登陆要添加到跳板机的目标机器 /root/.ssh/authorized_keys 将跳板机id_rsa.pub 内容复制到目标机器的authorized_keys中,累加在后面。 目标机器执行service sshd restart 在跳板机控制台添加…

zip压缩多个文件,解压时不包含目录层级

假设我们有个目录叫 dev,dev中有很多文件,我们想要将dev中的文件打包,名字可能叫dev.zip,但当我们解压的时候,不想要解压生成一个dev目录,想要直接解压在当前目录,这样如何压缩呢? # 进入dev目…

过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件

过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件 find ./ -type f -size 1G| xargs rm在清理系统日志文件、备份文件等场景中,可以使用这个命令。 这里的参数还可以改为 100M 等等,也…

mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string

mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string ‘oThZwuK9C-3uWaJaXtbuLJUFTTR4’ 解决方法: 在使用mybatis进行部分字段查询时,查询结果需要放置在对象中,如果参数不全&am…

数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对s…

docker报错:driver failed programming external connectivity on endpoint, iptables:No chain by that name

docker 报错: Error response from daemon: Cannot restart container hello: driver failed programming external connectivity on endpoint hello (e58d18c830689e296c0fafdd98bf56e973cee3a3fbee8a3f002d46784f69ae70): (iptables failed: iptables --wait -t n…

系统架构升级要不要上微服务?历“久”弥新微服务——你真的需要升级微服务架构吗

在 《微服务架构设计模式》 一书中,作者总结了关于微服务的一些“重点”,原文如下: 中国企业和开发者对微服务架构的热情让我印象深刻。但如同我给所有客户的忠告一样,我想对本书的读者说: 第一,要记住微服务不是…

在k8s中使用gradle构建java web项目镜像Dockerfile

在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chowngradle:gradle . /home/gradle/src WORKDIR /home/gradle/src RUN gradle build --no-daemonFROM openjdk:8-jre-slimEXPOSE 10010RUN mkdir /appCOPY --frombuild /home/gradle/sr…

致26岁的自己

2021年10月17日,晴 想到很久很久没有去记录和输出想法,加上最近在不停地不停地思考,总结一下,并给两年后的自己做一个方向性的规划。 首先就是目前所取得的一个阶段性成果,到目前为止,我已经工作两年。在这…

阿里云K8S容器服务的使用

使用阿里云k8s构建服务一. 上传镜像二. k8s运行三. 服务配置导入四. 服务路由五. 节点亲和性和污点管理一. 上传镜像 在阿里云控制台找到“容器镜像服务”,开启镜像服务,这里选择个人实例即可(个人版限额,企业版付费)…

nginx配置http、https访问,nginx指定ssl证书,阿里云腾讯云华为云设置nginx https安全访问

nginx配置http、https访问 要设置https访问需要从对应的云厂商申请证书,并下载Nginx证书到服务器。 我这里从阿里云申请了免费的域名证书,然后将证书放置在服务器的/etc/ssl/.com/路径下,开始配置 这里直接上server节点,放在你…

使用hello word写小说

2021-11-12 使用hello word写小说

2021-10-27 我与地坛

2021-10-27 我与地坛 要是有些事我没说,地坛,你别以为是我忘了,我什么也没忘,但是有些事只适合收藏。不能说,也不能想,却又不能忘。它们不能变成语言,它们无法变成语言,一旦变成语言…

mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。

下面有两条sql,主键查询,在mysql中查询到的结果相同。 SELECT* FROM USER WHEREid EM58hdK4nXC;SELECT* FROM USER WHEREid em58hdk4nxc;这种情况就是mysql查询大小写结果相同,因为大小写查询不敏感。 解决方法: 工具中&…

redisson get()数据报错,missing type id property ‘@class’

redisson get()数据报错: com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Missing type id when trying to resolve subtype of [simple type, class java.lang.Object]: missing type id property ‘class’ 详细报错信息如下: com.fast…

go build 编译报错 missing go.sum entry for module providing package

go build 编译报错 missing go.sum entry for module providing package 解决方法 // 移除未使用的依赖 go mod tidy再次编译,就可以了。

在kotlin companion object中读取Bean,注入Bean对象

在kotlin companion object中读取Bean,注入Bean对象 在使用kotlin时,或多或少地会使用到一些公共组件,如 http、 mongo、 redis相关的组件。 使用组件时,我们往往会自定义一些通用的方法,用以全局调用,作…

locust入门:单机使用locust运行压力测试

locust的官方文档在这里: http://docs.locust.io/en/stable/ 前置:locust的测试脚本使用为python(若未安装python环境,可以搜索安装python) 1. 在已有的python环境中,使用pip3 install locust安装locust 2…

本地打包Docker镜像上传至阿里云远程仓库(一站式脚本)

打包镜像上传至远程仓库: 1. 本地项目为 mytest-project 2. 仓库为阿里云镜像仓库 registry.cn-beijing.aliyuncs.com/test/mytest-project #!/bin/sh echo "开始制作镜像..." image_tagdate %Y%m%d #_%H%M echo "当前时间:$image_tag…