收藏
回答

服务端调用发送订阅消息接口 参数格式反馈

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug subscribeMessage.send/服务端发送订阅消息给用户 工具 6.5.3 2.0.0
$message = [
    'date1' => [
        'value' => '2015年01月05日',//date('Y年m月d日 H:i:s'),
    ],
    'phrase2' => [
        'value' => '阅读栏目',
    ],
    'phrase3' => [
        'value' => '订阅提醒',
    ],
    'thing4' => [
        'value' => '你已经成功订阅栏目!',
    ],
];
 
$data    = [
 
    'touser' => $val->openid,
    'template_id' => $templateCode,
    'page' => '/pages/article/index',
    'data' => $message
];

上面的一段代码时正确运行的代码。

$message = [
    'date1' => [
        'value' => '2015年01月05日',//date('Y年m月d日 H:i:s'),
    ],
    'phrase2' => [
        'value' => '阅读栏目',
    ],
    'phrase3' => [
        'value' => '订阅提醒',
    ],
    'thing4' => [
        'value' => '你已经成功订阅栏目!',
    ],
];
$data    = [
    'touser' => $val->openid,
    'template_id' => $templateCode,
    'page' => '/pages/article/index',
    'data' => json_encode($message)
];

上面的一段代码时错误代码。

两段代码的不同之出就是在$data数组下标为data的值做了一次json_encode()处理。按照文档提示的时需要传递一个object,因此给json_encode()了一次。此时会报如下错误.

"{"errcode":43101,"errmsg":"user refuse to accept the msg hint: [vEsLpa05434116]"}"

经过测试,这里的$data['data']=array,而不是$data['data']=object;

文档地址https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html

最后一次编辑于  2019-11-11
回答关注问题邀请回答
收藏

2 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-11-12

    需要wx.requestSubscribeMessage授权吧

    2019-11-12
    有用
    回复 1
    • 月薪到5k 就换💻电脑
      月薪到5k 就换💻电脑
      2019-11-12
      这是已经授权的情况下调用的接口,如果用户没有授权,提示的不是这个信息。
      2019-11-12
      回复
  • 微蓝色雪狐
    微蓝色雪狐
    2019-11-11

    接口使用json 用字符拼接起来,不要使用内置函数

    json_encode 会把一些字符转为 \u**** 这个是不允许的

    2019-11-11
    有用
    回复 1
    • 月薪到5k 就换💻电脑
      月薪到5k 就换💻电脑
      2019-11-12
      也就是说使用拼接的方式,拼接成文档中给的实例格式,是这个意思吗?
      2019-11-12
      回复
登录 后发表内容
问题标签