日订单超1000万,美团外卖是如何设计广告推送系统的?

本文介绍了美团外卖商业技术负责人王兴星分享的外卖业务广告系统设计经验,包括外卖业务特点、O2O广告区别及广告系统实践等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 2013 年,美团一直靠资本推动拉新,到 2015 年,为了达到收支平衡,美团开始考虑商业变现。从 2016 年初到 2017 年,美团针对商业变现做了两套广告系统,并上线投入使用。本文由美团外卖商业技术负责人王兴星与大家分享外卖业务合理变现系统的设计过程及相关经验

美团的外卖业务特点

外卖与团购的区别

提到美团,大家接触更多的是团购,以下是外卖与团购两大业务之间的对比

  • 用户需求。团购的出发点是追求性价比,价格会便宜一些。而外卖,前期商家用第一单免费的方式吸引用户,后期在解决一部分用户刚需的同时更加方便快捷,所以用户的消费频次较高。

  • 支付方式。两个都是线上支付,外卖业务平台也会有一部分,但流量不是很多。

  • 就餐地点。就餐形式上团购需要到店消费,而外卖是需要把物品送到消费者手中,背后需要配送团队的支撑。

  • 消费频率。两者差异比较大,团购消费时间集中在月底,而外卖的重度用户,一周点单可达到十次以上。


外卖业务的特点

除了以上这些对比,相对传统的互联网产品,外卖业务有移动化、场景化、本地化三大特点

  • 移动化。美团绝大部分订餐都是在移动端进行,日志采集相比 PC 端复杂很多。

  • 场景化。用户订餐时间相对集中,系统高峰在早餐、晚餐、夜宵等时段,流量是其他时间的 N 倍。

  • 本地化。传统业务的供给范围是整个互联网,团购面向的是城市粒度,而外卖面向的是商圈粒度。这些会在技术实现方案上体现差异化。


O2O 广告和传统广告的区别

O2O 广告不仅需要考虑外卖店铺、外卖用户以及外卖平台三方,还要尽可能做到多方的共赢:

  • 帮助外卖店铺获得更多的订单量、拉来新用户并留存用户

  • 让外卖用户有更多机会尝试新店,获得更多优惠

  • 外卖平台可进行流量变现


O2O 广告与传统广告有很多不同之处,主要介绍以下 6 点

  • 中小广告主。O2O 广告服务对象更多的是中小广告主。

  • 行业信息化程度。服务对象相对信息化程度比较低,对互联网及商业变现接触较少,这对业务提出较高的挑战。

  • 形式更加原生。广告前期采取较为简单直接的方案,以天为时间单位、针对配送区域、按固定的价格来售卖,可见即可得,广告主更容易接受。

经过一段时间,待市场对广告主的教育成熟之后,广告逐步推行按点击的售卖方式。

  • 强地域限制。这由业务性质决定,相比传统广告,O2O 广告主地域性特别强。

  • 全链条数据。因交易类型产品所独具的特性,从浏览、点击、到成单形成全链条数据。

  • 交易类&信息类。这两类产品存在很多不同点,变现方式也存在差异。


美团外卖 O2O 广告布设实践

第一:针对行业信息化程度低的特点,布设广告需要从运营和产品两个层面出发,有针对性的进行布设。

运营层面:

  • 市场教育:通过对广告主的访谈,了解真正的需求。通过线下地推,把广告的意图,告知到商家。

  • 广告主拉新、促活:通过给用户发红包的形态,促使 C 端在 B 端使用,广告主第一单投放可以打些折扣等方式。

  • 精细化运营:从广告产品来看涉及多个城市,多个商圈,可做一套精细化运营的系统,助力运营或帮助地推做精细化运营。


产品层面:

  • 广告的变现模式:由简单向复杂逐步衍化,从按天逐渐过渡到点击售卖,逐渐影响广告主的认知。

  • 功能“傻瓜”化:功能方面尽量智能化和傻瓜化,如广告主并不知道出多少价格合适,变现系统的职责就是预估在当前情况下,收获多少订单、用户等。

如把部分较为简单、效果明显提升的广告推送给广告主,同时把复杂部分包装隐藏在算法中,从而避免困扰广告主,这称之为“白+黑”解决方案。

第二:针对本地化、强地域限制的特点,美团推出“配送区”的概念。

一般来说,用户点外卖时都很饿,不会选择太远的商家,同时商家也不愿意配送太远,这样的现象称之为“配送区”。

如上图,蓝色部分就是配送区,只有用户定位在这个区域,才会展示这个店铺,这样的业务逻辑需要技术来实现,设计一个专门模块来做,用户通过搜索来获取附近的店铺列表。在业务模式下,对于广告来说存在非常强的地域定向,对检索架构的影响也很大。

第三:原生广告布设,如位置选择、选择优化和效果提升。

位置选择,固定 OR 浮动,避免广告主找不到广告粉丝。

体验优化,广告会对用户体验产生影响,所以采用监控机制,从监控出发去优化用户体验。

效果提升,让广告主只花几十块钱就能感受到好的效果,交易类做 ROI 优化更直接。同时,系统会把投放产出比作为数据下发给商家。

CPT(按时长付费)的框架及策略

CPT 的技术框架。如下图,是商业变现系统 CPT 技术的分层图,分为负责广告投放、流量管控的投放端,供广告主管理账户使用的业务端和做区域划分、定价的离线挖掘三层。

CPT 技术框架

这种按照时间来计费的广告很直接,商家的接受程度较高。

CPT 的策略。涉及到广告区的划分、定价以及线下迭代这三方面问题

  • 广告区划分。广告主在广告区投放广告,最直接的影响是假设商家一天只能接 100 单,但广告效应导致一下爆单,会严重影响商家和用户的体验。

因此美团提出“广告区“的概念,用技术手段来控制展现的数据量,帮商家做库存的管理。同时也能根据冷热地域进行广告定价。

  • 广告区定价。广告区域划分之后,流量、用户等都需要预估,通过算法模型实现动态定价。

线下迭代。判断定价策略好不好,这里要做售卖率预估,提前知道划分和定价后整体的售卖率情况。

CPC(按点击付费)的架构与策略优化

1.CPC 线上整体架构

CPT 的售卖方式上线之后存在一些问题,如容量限制,当某城市需要买广告的商户可能近百近千时,会导致商户使用的留存受到影响。通过商户调研,系统发现它们对 CPT 产品接受度很高。因此,进一步上线一套更加复杂的系统 - CPC。

CPC 线上整体架构

如上图,是 CPC 线上整体架构,业务端为商户提供一个打理广告的系统,同时会同步到 ToC 系统,也就是投放端,之后把对应的结果从后端发到前端,美团外卖或团购 APP。

用户发生点击时发送到计费端,会对广告主计费。广告主的钱花超,系统会发出告警,做下线操作。

2.CPC 线上架构的优化

高性能。从性能的角度,投放端是 ToC 的产品,性能方面的提升是必要的。方法如下:

  • 各模块异步化:可达到立即执行的目的。

  • 优化核心算法:对线上、线下的核心计算逻辑进行优化。系统可以做线下预计算,如分词,挖掘算法等,提升线上效率。

数据高一致。美团整个数据跨很多端,如何保证数据在流动过程中不出错?方法如下:

  • 跨端同步。在数据跨端同步的过程中,通过 MQ 来解耦,进行失败重试、幂等操作。

  • 超播。遇高点击率,超播会比较严重,这时需要引入 Pacing 机制。

  • 监控。针对数据流做灾备和全量机制。跨端做数据监控,出现问题及时警告。

高可用。美团也遇到一些流量方面的问题,解决方法如下

  • 流量异常。因为一些爬虫原因,会对系统运行造成影响,不处理会导致服务不可用,这里会做反爬虫机制。

  • 流量突增。针对流量突增,线下做全链路的压测,监控。线上针对不同渠道做流量流控,针对不同流量做降级措施。同时,线上针对一些不是很重要的模块进行降级操作。

  • 技术组件。基础组件部分,会针对存储做一些跨机房解决方案,还有全公司使用统一中间件。应用服务部分,要有一些服务治理组件,当 Web 混合比较多时,需要做超时设置,并且针对 Web 服务做一些降级方案。

3.CPC 架构之策略优化

除上述支撑整个美团数据量上涨的架构层面,还有很多业务层面的功能需要优化。一般来说,业务都有几个核心指标。在外卖广告里,核心指标是平台收入、商户投入产出比和用户体验度。

平台、商户和用户之间存在着矛盾关系,优化商户 ROI,平台收入就会下降。重视广告收入时,用户数会下降。多方利益如何抉择?方法如下:

  • 保证返购率。以用户体验为限制,在 1% 的情况下尽可能提升平台的收入,提升广告主的体验。

  • 提升广告主体验。从效果和功能角度提升商业产品体验,做到”品效合一”,质&量,PV&ROI 等效果。

4.CPC架构之受众定向

广告定向。从定向出发,把合适的流量给适合的广告主,实际上是个流量筛选的方式,达到 ROI 与消耗的平衡,摸清流量和广告度的关系。

白+黑解决方案。把简单且刚需的功能,如地理位置、时间等这些简单功能做定向,称之为白盒。如用户近百标签,给到广告主,大部分都玩不转。这时就需要通过算法进行包装,把复杂内容包装到系统,助力广告主去做智能投放,这称之为黑盒。

5.CPC架构之排序

数据质量决定了模型的质量,特别是去年美团爬虫流量比较多时,就需清洗爬虫相关数据,还有清洗用户行为的噪声。解决方法如下:

这里涉及到的主要特征,称之为 AUC,这三个之间还会有一些组合,如非线性模型+单特征、线性模型+单特征+组合特征等。其中,在特征选择方面分为特征维度和有效减少提取次数的特征组维度。

6.CPC 架构之用户行为建模

统一的用户建模方案。用户行为存在多样性,如购买,点击、曝光、加载,和广告、搜索、推荐、分享等,这时候,如何把多种行为汇聚到一起,做统一的用户建模方案?

其实每一个行为都是代表用户背后的行为强度,如购买会比搜索强,搜索会比点击强,点击会比浏览强,这些都属于信号强度概念,通过这样的关系把所有的行为对应的兴趣综合在一起,最后得到用户统一的兴趣方案。

统一用户建模方案之时效性。用户行为时效性分为长时、短时、即时,这三者如何融合?

解决方案是把行为与时间长度,都通过信号强度综合在一起,通过手动设置一些参数,也可通过把这些参数自动的选出。

结语

前几年,外卖平台的市场竞争异常激烈,依托资本的大力度补贴,抢占市场争夺用户。美团经历了萌芽、成长、扩张等环节,如今外卖平台进入成熟期,对流量的使用已经变成核心竞争力之一

外卖平台连接众多商家与海量用户,广告是满足商家营销及平台商业化诉求的一种常见有效的手段。在此背景下,针对外卖业务特性设计一套合理变现系统就显得尤为重要。

以上内容由编辑王雪燕根据王兴星老师在 WOTA2017 “大数据应用创新”专场的演讲内容整理。

王兴星

美团高级技术专家,外卖商业技术负责人

曾在搜狗、百度等公司供职,前搜狗 PC 和无线联盟的算法负责人,所研发的训练系统应用于搜狗联盟、DSP 等多个产品线,多次获得公司最佳个人、技术部犀牛、MVP 等奖项。也是数据挖掘爱好者,曾获百度电影推荐大赛全国第一名、品友互动 RTB 算法竞赛线下/线上第一名,KDDCUP2012 全球第三名等奖项。

以上内容根据王兴星老师在 WOTA2017 “大数据应用创新”专场的演讲内容整理。

<think>我们正在处理用户的问题:如何将美团订单同步到自研系统中,并获取美团订单API和订单推送API的调用流程及PHP代码示例。 根据引用[1]的内容,我们可以知道订单信息会通过订单API同步到ERP/WMS系统。因此,我们可以推断,美团订单同步到自研系统也是通过类似的API接口进行数据同步。 通常,电商平台(如美团)会提供开放API,允许第三方系统(自研系统)通过调用这些API来获取订单数据。同步方式一般有两种: 1. 主动拉取:自研系统定时调用美团订单API来获取最新的订单数据。 2. 被动接收:美团订单产生或状态更新时,通过推送的方式将订单数据发送到自研系统提供的回调地址(即订单推送API)。 因此,我们需要分别了解这两种方式的流程和代码示例。 ### 1. 主动拉取订单订单API) 流程: - 自研系统通过美团开放平台的订单查询接口,按照一定的时间间隔(例如每分钟)去查询新订单或更新订单。 - 需要申请美团开放平台的开发者账号,创建应用,获取appKey和appSecret。 - 调用订单查询接口时,需要按照美团API的要求进行签名。 PHP代码示例(主动拉取订单): ```php <?php $appKey = 'your_app_key'; $appSecret = 'your_app_secret'; $url = 'https://openapi.meituan.com/order/query'; // 构建请求参数 $params = array( 'app_key' => $appKey, 'timestamp' => time(), 'start_time' => strtotime('-1 hour') * 1000, // 查询开始时间(毫秒) 'end_time' => time() * 1000, // 查询结束时间(毫秒) // 其他参数根据美团API文档添加 ); // 生成签名 $params = array_filter($params); // 过滤空值 ksort($params); // 按键名排序 $signStr = $appSecret; foreach ($params as $key => $value) { $signStr .= $key . $value; } $signStr .= $appSecret; $sign = strtoupper(md5($signStr)); $params['sign'] = $sign; // 发送请求 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); $response = curl_exec($ch); curl_close($ch); // 处理响应 if ($response) { $result = json_decode($response, true); // 解析订单数据并同步到自研系统 // ... } ?> ``` ### 2. 被动接收订单订单推送API) 流程: - 在美团商家后台配置推送地址(即自研系统提供的接收订单推送的API地址)。 - 当美团有新订单订单状态更新时,美团服务器会向该地址推送订单数据。 - 自研系统的API需要接收POST请求,验证签名,然后处理订单数据。 PHP代码示例(接收订单推送): ```php <?php // 美团推送过来的数据在body中,格式通常为JSON $rawData = file_get_contents('php://input'); $data = json_decode($rawData, true); // 验证签名(示例,具体签名方式参考美团文档) $sign = $_SERVER['HTTP_SIGN']; // 假设签名在HTTP头SIGN中 $appSecret = 'your_app_secret'; $expectedSign = strtoupper(md5($appSecret . $rawData . $appSecret)); if ($sign !== $expectedSign) { // 签名验证失败 http_response_code(403); exit; } // 处理订单数据 // 将订单数据同步到自研系统 // ... // 返回成功响应 echo json_encode(['code' => 0, 'message' => 'success']); ?> ``` ### 注意事项: 1. 以上代码仅为示例,实际使用时需要根据美团开放平台的具体API文档进行调整。 2. 美团API的签名算法可能不同,请务必查阅最新的官方文档。 3. 主动拉取订单时,注意时间范围的选择,避免重复或遗漏。 4. 被动接收订单时,需要确保接口的稳定性和安全性,处理美团可能重试的情况。 ### 引用说明: 根据引用[1]中提到的订单同步流程,我们设计了上述两种同步方式。引用[3]中提到了回调地址(success_url),但在订单同步中,我们更关注订单推送的接收地址。 希望以上信息能帮助您实现美团订单同步到自研系统。 §§相关问题§§ 1. 美团开放平台的API文档在哪里获取? 2. 如何保证订单同步的实时性和可靠性? 3. 如何处理订单同步过程中的异常情况(如网络中断)?</think>### 美团订单同步到自研系统的API调用流程 #### 核心流程说明 1. **授权认证** 自研系统通过OAuth 2.0获取访问令牌(`access_token`),用于后续API调用。需提前在美团开放平台注册应用获取`app_key`和`app_secret`。 2. **订单同步方式** - **主动拉取**:定时调用订单查询API获取增量订单 - **被动接收**:美团通过推送API将新订单实时发送到自研系统的回调地址(推荐) 3. **数据同步** 订单数据通过JSON格式传输,需处理状态同步(如发货后需回调美团更新状态)[^1]。 #### 被动接收模式流程(推荐) ```mermaid graph LR A[美团订单生成] --> B{美团服务器} B -->|推送订单数据| C[自研系统回调URL] C --> D[数据解析] D --> E[存储到自研数据库] E --> F[返回成功响应] ``` #### PHP代码示例 ```php <?php // 配置参数 $appSecret = 'YOUR_APP_SECRET'; // 美团分配的密钥 // 接收推送数据 $rawData = file_get_contents('php://input'); $signature = $_SERVER['HTTP_X_MEITAN_SIGN']; // 美团签名头 // 验证签名(美团签名算法:MD5(appSecret+原始报文+appSecret)) $expectedSign = strtoupper(md5($appSecret . $rawData . $appSecret)); if ($signature !== $expectedSign) { http_response_code(403); exit('签名验证失败'); } // 解析订单数据 $orderData = json_decode($rawData, true); if (JSON_ERROR_NONE !== json_last_error()) { http_response_code(400); exit('数据解析失败'); } // 处理订单数据(示例) try { $orderId = $orderData['order_id']; $amount = $orderData['total_amount']; $items = $orderData['product_list']; // 写入数据库(伪代码) $db->insert('orders', [ 'platform' => 'meituan', 'order_id' => $orderId, 'amount' => $amount, 'raw_data' => $rawData ]); // 返回成功响应(必须) echo json_encode(['code' => 0, 'msg' => 'success']); } catch (Exception $e) { // 记录错误志 error_log("美团订单同步失败: ".$e->getMessage()); http_response_code(500); } ?> ``` #### 主动拉取模式示例 ```php // 获取访问令牌 function getAccessToken() { $url = "https://openapi.meituan.com/token"; $params = [ 'app_key' => 'YOUR_APP_KEY', 'app_secret' => 'YOUR_APP_SECRET', 'grant_type' => 'client_credentials' ]; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($params) ]); $response = json_decode(curl_exec($ch), true); return $response['access_token'] ?? null; } // 查询订单 function fetchOrders($accessToken) { $url = "https://openapi.meituan.com/order/query"; $params = [ 'app_key' => 'YOUR_APP_KEY', 'access_token' => $accessToken, 'start_time' => strtotime('-1 hour') * 1000, // 毫秒时间戳 'end_time' => time() * 1000 ]; // 生成签名(具体算法参考美团文档) $sign = generateSign($params, $appSecret); $params['sign'] = $sign; $ch = curl_init($url . '?' . http_build_query($params)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); return json_decode(curl_exec($ch), true); } ``` ### 关键注意事项 1. **回调URL配置** 在美团商家后台配置接收推送的URL(需支持HTTPS),如: `https://yourdomain.com/api/meituan/order-notify` 2. **数据安全** - 必须实现签名验证(防止伪造请求) - 建议使用IP白名单(美团服务器IP段需提前获取) - 敏感数据加密存储 3. **幂等性处理** 相同`order_id`可能重复推送,需实现重复订单检测机制[^2]。 4. **状态同步** 订单发货后需调用美团状态更新API: ```php // 伪代码 $ret = callMeituanAPI('order/shipping', [ 'order_id' => '123456', 'logistics_no' => 'SF123456789' ]); ``` 5. **错误处理** - 网络异常时需实现重试机制 - 失败订单记录志并告警 - 响应时需控制在2000ms内 > 提示:完整API文档需登录[美团开放平台](https://open.meituan.com/)获取,不同行业(外卖/到店/酒店)接口存在差异[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值