收藏
回答

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

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
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

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

2 个回答

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

    需要wx.requestSubscribeMessage授权吧

    11-12
    赞同
    回复 1
    • 卡二条
      卡二条
      11-12
      这是已经授权的情况下调用的接口,如果用户没有授权,提示的不是这个信息。
      11-12
      回复
  • 🇨🇳紫升
    🇨🇳紫升
    11-11

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

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

    11-11
    赞同
    回复 1
    • 卡二条
      卡二条
      11-12
      也就是说使用拼接的方式,拼接成文档中给的实例格式,是这个意思吗?
      11-12
      回复
问题标签