通过调用微信公众号模板消息接口实现业务通知消息

【背景/价值】

业务产生的消息通知到用户,有各种各样的形式,app内消息、系统内消息、邮件通知、短信通知等,本文不涉及以上消息形式,仅为微信公众号的模板消息使用说明。

在尝试的过程中发现,微信的消息包括,公众号模板消息和小程序的模板消息,各有各的优势和局限:

公众号模板消息:先说局限,只有认证的服务号,才能开通模板消息,而且公众号需要设置服务类目。不过作为个人开发者,可以使用测试号尝鲜,如何使用公众号的测试号,可以自行百度。

小程序模板消息:分为一次订阅消息和长期订阅消息。小程序的优势在于,不需要认证的服务号,只要有小程序即可使用。只是一次订阅消息跟用户使用小程序有关,长期订阅消息又跟服务类目有关。具体情况请自行查看微信的说明,本次实现最终选择的是公众号模板消息,没有使用小程序的消息。

本次实验,最终实现的效果是,通过访问一个URL,调用程序的模板消息接口,实现通过公众号将消息推送给用户。这种方式的价值在于,可以在程序中调用这个能力实现消息通知,或者在数据库触发器上调用这个URL,实现消息通知(比如将OA、ERP等系统的通知消息,通过微信发送给用户)。

【使用步骤】

1、准备好微信公众号的测试号(有认证的服务号当然也可以),准备好发送目标用户的openid、模板消息等。https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

2、做好内网穿透(花生壳、金万维的快解析或者自建ngrok、frp服务器均可,注意,现在第三方的内网穿透工具都需要做实名认证),并将服务器外网地址配置到测试号上。

3、下载源码https://gitee.com/kanen/weixin-java-mp-msg,源码为java springboot实现(如何启动服务,请先学习springboot)启动服务前,请先将appid、appsecret、接收消息的用户的openid、模板消息ID,替换成自己的实际参数。

4、启动服务后,调用消息发送接口https://{domain}/wx/sendmsg/send 该接口的实现在:WxSendMsgController中,具体逻辑可以自行查看。

 

5、接口调用成功后,如何使用(比如在数据库触发器上调用这个接口。)自行百度吧~

【特别说明】

该实验项目以com.github.binarywang的weixin-java-mp-demo为基础,参考了Thinkingcao的模板消息示例代码。在此感谢。

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要对接微信公众号模板消息接口,需要进行以下步骤: 1. 在微信公众平台上创建模板消息,获取模板 ID 和模板消息中需要填充的关键词。 2. 在 PHP 代码中编写发送模板消息的代码,包括获取 access_token 和发送模板消息。 3. 在用户触发某些事件时,调用 PHP 发送模板消息的代码。 以下是一个简单的 PHP 示例代码: ```php // 获取 access_token function getAccessToken($appID, $appSecret) { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appID}&secret={$appSecret}"; $result = file_get_contents($url); $json = json_decode($result, true); if (isset($json['access_token'])) { return $json['access_token']; } else { return false; } } // 发送模板消息 function sendTemplateMessage($accessToken, $openID, $templateID, $data, $url = '') { $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$accessToken}"; $data = [ 'touser' => $openID, 'template_id' => $templateID, 'url' => $url, 'data' => $data ]; $data = json_encode($data, JSON_UNESCAPED_UNICODE); $result = http_post_data($url, $data); $json = json_decode($result, true); if (isset($json['errcode']) && $json['errcode'] == 0) { return true; } else { return false; } } // 发送 POST 请求 function http_post_data($url, $data_string) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) ); ob_start(); curl_exec($ch); $result = ob_get_contents(); ob_end_clean(); curl_close($ch); return $result; } // 示例代码 $appID = 'your-app-id'; $appSecret = 'your-app-secret'; $accessToken = getAccessToken($appID, $appSecret); $openID = 'your-open-id'; $templateID = 'your-template-id'; $data = [ 'first' => ['value' => 'Hello World!', 'color' => '#173177'], 'keyword1' => ['value' => 'value1', 'color' => '#173177'], 'keyword2' => ['value' => 'value2', 'color' => '#173177'], 'remark' => ['value' => 'This is a remark.', 'color' => '#173177'] ]; $url = 'http://example.com'; $result = sendTemplateMessage($accessToken, $openID, $templateID, $data, $url); if ($result) { echo '发送成功!'; } else { echo '发送失败!'; } ``` 请注意,以上代码仅作为示例,需要根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值