不败君

前端萌新&初级后端攻城狮

微信小程序推送公众号模板消息

微信小程序推送公众号模板消息

2019-12-27 18:16:48

围观(6274)

微信小程序的模板消息将于 2020 年 1 月 10 日下线.很多小程序使用了模板消息现在都在加班加点改成使用"订阅消息",

但是"订阅消息"的作用明显就没那么大.

1.png

订阅消息接口需要用户点击订阅并确定订阅才能给用户发送模板消息,且发送过后又需要再次订阅,

虽然官方另外有开放一个"长期订阅"的接口,但目前来说并无卵用.

"长期订阅"目前只开放了某些类目的使用权,但是这些"长期订阅"接口并不多.


回到正题,既然小程序的模板消息要取消了,自然会有其他替代者.

而订阅消息也不能满足开发需求,博主也因为项目需要,发现了这个接口:uniformMessage.send

该接口的描述是:下发小程序和公众号统一的服务消息


想要理解这个接口能干啥,就要先理解原来的消息模板,原来的小程序模板消息就是 收集很多的 from_id 然后根据用户的 openid 进行请求到微信服务器.

公众号模板消息就很简单,只要有 openid 就可以请求微信服务器进行推送了.


但如果小程序想要用公众号的模板消息接口,就需要有小程序的 openid 和公众号的 openid 然后判断是否同一个用户就要用 unionid.

可谓是非常麻烦,所以利用 uniformMessage.send 就很简单.


uniformMessage.send 跟公众号模板消息一样,拿着小程序的 openid 就能发送微信公众号的模板消息了.


PHP(Laravel)实现方法:

public function push($openid, $param, $access_token, $template_id)
{
    $client = new Client();

    $wxUrlForSendingMessage = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send';

    $client->post($wxUrlForSendingMessage, [
        'query' => [
            'access_token' => $access_token,
        ],
        'json' => [
            'touser' => $openid,
            'mp_template_msg' => [
                'appid' => config('mp_appid'),  // 公众号的APPID
                'template_id' => $template_id,  // 公众号消息模板ID
                'miniprogram' => [
                    'appid' => config('wx_app_id'), // 小程序的APPID
                    'pagepath' => 'pages/recruit/index',    // 小程序路径
                ],
                'data' => [
                    'first' => [
                        'value' => '推送标题',
                        'color' => '#f39c12',
                    ],
                    'keyword1' => [
                        'value' => $param['key'],
                        'color' => '#173177',
                    ],
                    'keyword2' => [
                        'value' => $param['key'],
                        'color' => '#173177',
                    ],
                    'keyword3' => [
                        'value' => $param['key'],
                        'color' => '#173177',
                    ],
                ],
            ]
        ]
    ]);
}

上面发起请求微信服务器用了 GuzzleHttp 这个包,所以需要用 composer 安装一下.

关于 GuzzleHttp 包的一些信息,可以看博主以前发的一篇文章:使用Laravel发送HTTP请求第三方API


安装 GuzzleHttp 后别忘了 use 一下.

Laravel 框架还需要在 ENV 配置一下公众号的 APPID 和小程序的 APPID

当然,以上代码/思路能实现利用小程序的 openid 推送公众号模板消息,

但是以上代码根据实际应用场景肯定要改一下的,直接复制是没办法使用的.

遇到问题欢迎评论(以后可能会因为备案问题 取消评论功能).

本文地址 : bubaijun.com/page.php?id=159

版权声明 : 未经允许禁止转载!

评论:我要评论
发布评论:
Copyright © 不败君 粤ICP备18102917号-1

不败君

首 页 作 品 微 语