$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;
需要wx.requestSubscribeMessage授权吧
接口使用json 用字符拼接起来,不要使用内置函数
json_encode 会把一些字符转为 \u**** 这个是不允许的