1

上篇讲了用户订阅篇,这次讲解推送篇。

上一篇传送门 http://nai8.me/sapper-view.ht...

先列目录

  • 一点说明

  • 代码实现

一点说明

一次性订阅接口并不是说会员订阅一次后就能不断的推送消息,而是说会员订阅一次后你只能推送一条,如果想再次推送,需要再一次订阅,这点要先搞明白,如果你想尝试一次订阅多次推送,微信会毫不犹豫的给你如下错误提示

user refuse to accept the msg hint: [5aw330620ge21]

代码实现

上一篇我们使用一个subscribe表存放了会员的订阅信息,包含openid、sence、template_id等,现在我们实现推送代码,这个过程不复杂,只需要给一个微信指定的地址POST一组json数据即可,返回的也是一组json,代表是否成功。

具体推送的每个字段含义可以参考文档

文档地址

既然是post推送,那必须使用yii官方的扩展 yii2-httpclient,实现代码如下

$config = Yii::$app->params['WECHAT'];
$wxApp = new Application($config);
$accessToken = $wxApp->access_token; // EasyWeChat\Core\AccessToken 实例
$token = $accessToken->getToken(); // token 字符串

$data = [
    'touser'=>'xxx',
    'template_id'=>'xxx',
    'scene'=>8,
    'url'=>'http://baidu.com',
    'title'=>'新视频更新啦',
    'data'=>[
        'content'=>[
            'value'=>'leapder',
            'color'=>'#4d4d4d'
        ]
    ],
];


$client = new Client();
$itemsResponse = $client->createRequest()
    ->setFormat(Client::FORMAT_JSON)
    ->setMethod('post')
    ->setUrl("https://api.weixin.qq.com/cgi-bin/message/template/subscribe?access_token={$token}")
    ->setData($data)
    ->send();
$responseData = $itemsResponse->getData();
// todo 根据$responseData的结果执行不同的业务逻辑

你可以把上面代码放到任何一个action中并执行,如果不是yii,你也可以使用任何一种post推送的类库,或是直接用curl都没有问题,要注意一点的是,这里的access_token是api的token而不是网页授权的,因为兄弟连系统使用了easywechat,我使用了它的接口直接取得了token。

一次性订阅还有个特别大的好处是客户可不关注公众号也能收到推送,对于没有关注公众号的会在服务通知内接受推送消息,看我测试的图你就明白了。

alt

最后

这就是本次公众号更新的“一次性订阅”接口的实现解说,希望对各位小伙伴有所帮助,当然这并不是最后一篇,下一篇将对这个接口一些细节进行说明,比如那个reserved的使用等等,那才是最后一篇。


本文原创发布于微信公众号 北哥兄弟连

微信扫码可以关注


阿北
4.1k 声望913 粉丝