给小程序的用户推送品牌优惠 商品打折的订阅消息-1 接着昨天的说 昨天把程序前端的代码贴完了 今天说下服务端 因为我们这边服务端是PHP提供的 所以如果是其他语言实现的 可以搜下其他方面的资料 这里仅记录PHP实现微信小程序的订阅消息 再贴一下官方开发文档的地址

https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscribe-message/sendMessage.html

之后是服务端的代码 先创建了一个发送订阅消息的基类

class WxSubscribeMsgBaseBis{ protected $tplID; protected $page; //客户点击订阅消息卡片之后 跳转进入小程序的页面路径 protected $data; private $sendSubscribeUrl = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=%s"; /** * @throws Exception */ function __construct() { //这是处理获取Access_Token的类 $accessToken = new AcTokenBusiness(); $token = $accessToken->get(); $this -> sendSubscribeUrl = sprintf($this->sendSubscribeUrl, $token); } /** * Notes: 发送订阅消息 * User: Zii * Date: 2025/10/20 * Time: 19:19 * @param $openID * @return true * @throws Exception */ protected function sendSubscribeMessage($openID) { $data = [ 'touser' => $openID, 'template_id' => $this->tplID, 'data' => $this->data, ]; $result = curl_post($this->sendSubscribeUrl, $data); $result = json_decode($result, true); if ($result['errcode'] == 0) { return true; } else { throw new Exception('微信订阅消息发送失败, ' . $result['errmsg']); } } }

单独创建了一个类 用来处理发送订阅消息的字段内容等 基类就只执行消息发送 这里要注意下 和服务号模板消息一样 发送订阅消息的每一个字段 都需要严格按照官方的要求填写 不能自行做改动 比如下面的截图 里面有 thing1 amount2 number3 time4 thing16 这几个字段值 都必须一模一样照着填 否则便会消息发送失败

方法里的OPENID是用户在小程序这边的 小程序用户的OPENID和公众号不一样 需要区分一下 如果觉得麻烦 在开放平台绑定完之后用UnionID也可以 之后也会写一写开放平台的内容

class SendMsgBis extends WxSubscribeMsgBaseBis{ //这里的ID填写在后台申请的订阅消息模板ID const ORDER_SUCCESS_ID = 'cz_xxxxxxxxxxxxxxxxxx'; /** * Notes:发送小程序订阅消息 * User: Zii * Date: 2025/10/20 * Time: 19:19 * @param $oid * @param $tplJumpPage * @return true|void */ public function sendSubMessage($oid, $tplJumpPage = '') { //$oid是传入的订单ID 可以单独实现一个方法查询订单详情做订阅消息字段组装 或者 直接传入订单详情都可以 $this->tplID = self::ORDER_SUCCESS_ID; //orderObj即订单详情 $this->msgDataArrMake($orderObj); return parent::sendSubscribeMessage($openID); } /** * Notes:发送外卖订单配送通知 * User: Zii * Date: 2025/10/20 * Time: 19:19 * @param $orderObj * @return null */ private function msgDataArrMake($orderObj) { $data = [ 'thing1' => [ 'value' => '测试商品', ], 'amount2' => [ 'value' => '100', ], 'number3' => [ 'value' => '13888888888', ], 'time4' => [ 'value' => '2025-10-20', ], 'thing16' => [ 'value' => '某省某市某区' ] ]; $this->data = $data; }}

下面的截图是每个字段需要遵守的规则和格式 在发送方法调用之前 需要把每个字段的内容都按照官方要求处理好 否则也会发送信息报错 这个表格在文章开头的官方文档里有详细说明 可以访问网址查看

下面的截图是调用后返回的错误码 可以对照着看看是哪里没写对有BUG

服务端的订阅消息代码差不多是这样 以上 就是微信小程序发送订阅消息的整个简易开发流程 订阅消息如果用户没有在微信端拒绝接收 是可以正常发送消息的 所以客户是否拒绝接收 需要在前台客户端来做监控客户的授权行为 提醒服务端是否走正常消息发送业务

保持好奇 不断进步 下期见~