小程序统一消息接口遇坑
anlondon Lv6

参考:微信小程序的统一服务消息 uniformMessage.send
微信统一消息接口手册:uniformMessage.send

注意:

  1. 小程序每次推送消息,都必须获得用户同意才会推送,如果没有弹窗提示让用户同意,则默认用户不同意
  2. 公众号推送消息,需要用户关注过该公众号
  3. 统一消息接口有点坑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$list = [
'touser'=> $data_2['openid'],//用户openid
'weapp_template_msg'=>[], //小程序消息模板 为空即可,否则会提示api支持
// 'weapp_template_msg'=>[//小程序消息模板
// 'template_id'=>$data['template_id'],
// 'page'=>$data_2['page'],
// 'form_id'=>$data['template_id'],
// 'data'=>$data_2['data'],
// ],
'mp_template_msg'=>[//公众号消息模板
'appid'=>'wxb74bbd0e43f82f',
'template_id'=>$data['template_id'],
'url'=>'',
'miniprogram'=>[
//'appid'=>'gh_13c04895', //不要填写 appid,否则会报 ‘errcode:40013,errmsg:invalid appid’的错
'appid'=>'',
'pagepath'=>$data_2['page'],
],
'data'=>[
'first'=>['value'=>'余额变动通知'],
'keyword2'=>$data_2['data']['amount3'],//变动金额
'keyword1'=>$data_2['data']['thing2'], //资金类型
'keyword4'=>$data_2['data']['amount4'],//当前余额
'keyword3'=>$data_2['data']['time1'], //变动时间
'remark'=>$data_2['data']['thing5'], //备注
]
],
];
$result = (new \addons\shopro\library\Wechat('wxMiniProgram'))->getApp()->uniform_message->send($list);
//var_dump($result);


//var_dump($list);
array(3) { ["touser"]=> string(28) "oQJOs5inOXtiLQND5BqSJreM" ["weapp_template_msg"]=> array(0) { } ["mp_template_msg"]=> array(5) { ["appid"]=> string(18) "wxb74bbd0e43f82f" ["template_id"]=> string(43) "wFhwFh0R8I4jGy7jGgWlVtxJvMM59WvE1VahS2c" ["url"]=> string(0) "" ["miniprogram"]=> array(2) { ["appid"]=> string(0) "" ["pagepath"]=> string(53) "pages/index/index?page=%2Fpages%2Fuser%2Fwallet%2Flog" } ["data"]=> array(6) { ["first"]=> array(1) { ["value"]=> string(18) "余额变动通知" } ["keyword2"]=> array(1) { ["value"]=> string(6) "100.00" } ["keyword1"]=> array(1) { ["value"]=> string(12) "后台充值" } ["keyword4"]=> array(1) { ["value"]=> string(8) "11601.00" } ["keyword3"]=> array(1) { ["value"]=> string(19) "2021-04-27 14:19:47" } ["remark"]=> array(1) { ["value"]=> string(1) "-" } } } }

注意:

  1. 在官方示例中,$list['weapp_template_msg'],中填写了信息的,但是测试的时候,$list['weapp_template_msg']如果有参数,则会提示

    { ["errcode"]=> int(45103) ["errmsg"]=> string(61) "This API has been unsupported" }
    因此,$list['weapp_template_msg']=[]即可

  2. $list['mp_template_msg']['miniprogram']['appid'],也最好为空,或者不写该参数,否则会返回

    { ["errcode"]=> int(40013) ["errmsg"]=> string(45) "invalid appid" }
    说是appid不匹配,不填该参数,依旧能在推送的微信公众号的提示内容中进入小程序。

 Comments