评论

「小程序下发统一消息接口」收回后,如何适配?

「公众号模板消息接口」需要使用公众号access_token和公众号openid,如何获取公众号openid下发公众号模板消息?

「小程序下发统一消息接口」收回后,如何适配?

前言

目前「小程序下发统一消息接口」已经收回,开发者无法通过该接口下发公众号模板消息,如有消息推送需要,可使用「公众号模板消息」接口,具体可参考公告:小程序与公众号下发统一消息接口调整通知

来看下两个接口区别

小程序下发统一消息接口」与「公众号模板消息接口」区别如下:

小程序下发统一消息接口(已收回) 公众号模板消息接口
接口请求地址 POST https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
接口调用凭证 小程序 access_token 公众号 access_token
接收者 openid 小程序 openid 或 公众号 openid 公众号 openid

也就是说,现在需要下发公众号模板消息只能使用「公众号模板消息接口」:

  1. 需要使用公众号access_token调用该接口。
  2. 需要使用公众号openid下发公众号模板消息。

那应该如何适配呢?

一、如果你有公众号openid

按照「公众号模板消息接口」文档适配,使用公众号的openid即可。

注意:更换接口后,请求包json格式也要根据文档进行修改。

二、如果你只有小程序openid ,没有公众号openid

我想到了以下几种方式,可以获取用户公众号openid

(一)通过unionid区分同一用户

小程序与公众号绑定在同一开放平台下:

  1. 小程序内可通过「wx.login」和「code2Session」接口获取到用户的unionidopenid,保存到数据库。

  2. 公众号可以调用「获取已关注用户列表接口」拿到所有已关注用户的openid,可调用「获取用户基本信息接口」查询unionid,保存到数据库。

  3. 对于新关注公众号的用户,关注事件推送里面会有openid,可调用「获取用户基本信息接口」查询unionid,保存到数据库。

注:接口有每日调用次数限制。

将用户在公众号与小程序下的openidunionid保存到数据库里面,可以参考:

(1) 如果在一个表
id unionid offiaccount_openid miniprogram_openid

下发模板消息时候,可通过小程序openid查询到公众号openid

(2)如果是分开的表

公众号用户表

id unionid openid

小程序用户表

id unionid openid

下发模板消息的时候,通过unionid去查询对应用户公众号openid

(二)网页授权

制作一个网页授权H5页面,可以获取到用户公众号openid,当scopesnsapi_userinfo时可以获取到unionid(公众号绑定到微信开放平台账号才会返回)。

(三)公众号关键词回复

用户在公众号回复关键词,开发者动态下发小程序链接,链接内带有公众号openid参数,用户点击跳转到小程序,完成绑定操作。

如果大家有其他方式,欢迎补充~

最后一次编辑于  2023-09-25  
点赞 15
收藏
评论

17 个评论

  • c🏔czm
    c🏔czm
    2023-11-07

    天天改来改去,稳定不变才重要

    2023-11-07
    赞同
    回复
  • 刘飞
    刘飞
    2023-10-23


    https://api.weixin.qq.com/cgi-bin/user/get
    这个接口每天嗲用最大限制是多少,竟然超限了。
    

    2023-10-23
    赞同
    回复 1
  • Lazy man
    Lazy man
    2023-10-19

    请问如果没有公众号,只开发了小程序,现在小程序的统一发送消息接口被禁用了,这种情况怎么处理呢?

    2023-10-19
    赞同
    回复 1
    • Hlxuan.
      Hlxuan.
      2023-10-19
      没有公众号?还是没有开发公众号?
      ----

      如果是没有公众号,是无法下发公众号模板消息的,之前「下发统一消息接口」还能用的时候,也是无法下发的。
      如果是没有开发公众号,文章中第一个方式可能比较适合,通过unionid区分同一用户。
      2023-10-19
      回复
  • 一直都在
    一直都在
    2023-10-11

    公众号调用「获取已关注用户列表接口」拿到所有已关注用户的openid,再调用「获取用户基本信息接口」查询unionid,每个openid都要查出unionid进行匹配,如果openid的数据量很大就行不通了吧

    2023-10-11
    赞同
    回复
  • AtiKon
    AtiKon
    2023-10-09

    小程序绑定到了微信开放平台账号,也没有返回unionid,怎么回事?

    2023-10-09
    赞同
    回复 1
    • 匠心
      匠心
      2023-10-09
      要将小程序和公众号绑定在同一个开放平台才能获取
      2023-10-09
      回复
  • PandaEU国际转运 全栈工程师 Wind
    PandaEU国际转运 全栈工程师 Wind
    2023-10-05

    请问,我获取到公众号的用户列表后,这些openid拿到的用户信息没有unionid。我看文档上描述的是只有在用户将公众号绑定到微信开放平台账号后,才会出现该字段。意思是需要客户去绑定吗

    2023-10-05
    赞同
    回复 1
    • Hlxuan.
      Hlxuan.
      2023-10-05
      不是让客户去绑定,是开发者将公众号绑定到微信开放平台账号下才会出现unionid。
      2023-10-05
      回复
  • 李修睿
    李修睿
    2023-09-27

    小程序获取不到unionid

    2023-09-27
    赞同
    回复 2
    • Camel
      Camel
      2023-10-07回复Hlxuan.
      我现在数据库里只有小程序openid,有没有后端接口获取unionid?我现在想通过小程序openid->unionid->公众号openid->发送模板消息,不想用户参与,可以实现吗
      2023-10-07
      回复
    • Hlxuan.
      Hlxuan.
      2023-10-07回复Camel
      目前没有相关接口。
      2023-10-07
      回复

正在加载...

登录 后发表内容