这是我的源代码
// 推送订阅通知
function sendSubscribeMessage($openId, $templateId, $accessToken) {
//$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={$accessToken}";
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/bizsend?access_token={$accessToken}";
$data = [
'touser' => $openId,
'template_id' => $templateId,
'page' => $queUrl,
'data' => [
'number1' => [
'value' => '活动1'
],
'date2' => [
'value' => '2023-10-01'
],
]
];
$dataJson = json_encode($data);
$options = [
'http' => [
'header' => "Content-type: application/json",
'method' => 'POST',
'content' => $dataJson
]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
return json_decode($response, true);
}
// 获取access_token(不是用户的,是公众号的)
$publicAccessToken = $getToken['access_token'];
// 发送订阅通知
$response = sendSubscribeMessage($openId, $templateId, $publicAccessToken);
// 打印响应结果(实际应用中应做相应处理)
echo '<pre>';
print_r($response);
echo '</pre>';
第一个问题:
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={$accessToken}";
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/bizsend?access_token={$accessToken}";
这两个请求方式有什么不同?
第二个问题:
我的输出结果是
Array
(
[errcode] => 43101
[errmsg] => user refuse to accept the msg rid: 67403316-467731bb-0e997a4d
)
问题一:
/cgi-bin/message/subscribe/send 是小程序订阅消息发送接口;
/cgi-bin/message/subscribe/bizsend 是公众号订阅通知发送接口;
问题二:一次性订阅通知订阅1次可下发1次,次数用完或者是用户拒绝就会报错43101,需要重新授权订阅。
文档里面有demo,可以参考:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html#%E6%9C%8D%E5%8A%A1%E5%8F%B7%E8%AE%A2%E9%98%85%E9%80%9A%E7%9F%A5%E6%8C%89%E9%92%AE%EF%BC%9Awx-open-subscribe
我通过文档知道了这个是用户取消订阅的缘故,那我在h5开发的过程中如何使用wx-open-subscribe来让用户进行订阅,我没有找到demo,字典那段给的代码没有看懂,有没有大神帮助解答一下