为什么外卖小程序必须开通定位接口?
试想一下这个场景:一个用户打开你的外卖小程序,准备点一份午餐。他点了”附近商家”,页面却弹出一行提示——“无法获取您的位置信息”。用户手动输入地址?太麻烦了。退出小程序换一家?大概率会发生。
对于海狐外卖系统这类基于LBS(基于位置的服务)的平台来说,定位功能不是锦上添花,而是核心命脉。从展示附近门店、计算配送距离和费用,到骑手导航取餐、用户追踪订单轨迹,几乎每个关键环节都依赖地理位置数据。
微信小程序从2022年4月18日起,对wx.getLocation(获取当前位置)和wx.chooseLocation(选择位置)两个接口实行了准入审核制度。简单说,就是微信官方要确认你的小程序确实有正当理由使用这些敏感权限,通过审核后才能正常调用。如果代码里用了这些接口但没申请权限,小程序提交审核时会被直接拦截,无法上线。
本文将手把手带你完成这两个接口的权限申请,包含官方要求、填写模板和避坑指南。
申请前的准备工作
在开始申请之前,请确认你已经具备以下条件:
- 小程序管理员权限:需要小程序账号的管理员或开发者身份,运营者身份无法操作
- 小程序已认证:只有通过微信认证的小程序才能申请高级接口权限(300元/年的认证费用)
- 业务场景明确:你需要清楚地向微信官方说明——为什么你的小程序需要获取用户位置?用来干什么?
对于海狐外卖系统的用户来说,使用定位接口的正当理由通常包括:
- 根据用户当前位置匹配最近的门店或商家
- 计算用户与门店之间的配送距离,生成配送费
- 为用户提供从当前位置到门店的导航服务(到店自取场景)
- 骑手端实时定位,用于订单调度和轨迹追踪
如果你的小程序还没有完成微信认证,先去微信公众平台 → 设置 → 微信认证完成认证流程,这是申请接口权限的前提条件。
第一步:登录小程序后台并找到接口设置入口
打开微信公众平台官网:https://mp.weixin.qq.com/
使用小程序管理员账号扫码登录。登录后,按以下路径导航:
开发 → 开发管理 → 接口设置
在这个页面,你会看到小程序所有可申请的接口权限列表。找到以下两项:
- 获取当前的地理位置、速度(对应
wx.getLocation) - 打开地图选择位置(对应
wx.chooseLocation)
两个接口的申请流程基本一致,但用途略有不同:
| 接口 | 功能说明 | 典型使用场景 |
|---|---|---|
| wx.getLocation | 静默获取用户当前GPS坐标 | 首页加载时自动定位,展示附近门店 |
| wx.chooseLocation | 唤起地图让用户主动选择位置 | 用户手动选择送餐地址、自提点 |
建议两个接口同时申请,因为外卖平台的完整业务流程中都会用到。
第二步:填写接口权限申请
点击接口右侧的”申请开通”按钮,会弹出一个表单,要求你填写申请原因。这是整个流程中最关键的一步——申请理由写得是否清晰、是否符合微信的审核标准,直接决定了通过率。
微信官方审核人员主要关注三个问题:
- 必要性:你的业务为什么非要用定位?不用行不行?
- 合规性:获取位置后用来干什么?会不会滥用用户隐私?
- 真实性:描述的业务场景是否真实存在?还是为了过审编造的?
基于海狐外卖系统的实际业务场景,我们整理了几套经过验证的审核话术模板。你可以根据自己的业务特点选择最合适的,或者将几套话术组合使用。
模板一:侧重门店自提匹配(推荐)
因当前业务涉及获取用户附近的门店位置自提商品以及到店自取导航门店位置,需获取用户地理位置信息匹配最近的自取门店,完成商品交易。故申请该接口,望通过。
模板二:侧重附近门店服务
因当前业务涉及附近门店商品自提服务,需获取用户地理位置信息匹配最近的自提门店并提供导航服务,完成商品交易闭环流程,故申请 wx.getLocation 接口,用于匹配最近自提门店、以及提供导航服务。
模板三:侧重线下门店到店场景
我的业务涉及到线下门店服务,该接口可帮助我的用户快速找到离他最近的门店,方便用户进行附近门店查看和到店导航,提升用户到店体验。
模板四:侧重配送距离计算
业务涉及附近门店地址导航,用于实时定位用户位置,精准计算附近门店距离和导航信息,帮助用户到店时的地图导航;同时根据用户位置计算配送距离和配送费用,完成外卖订单交易闭环。
模板五:综合场景(审核通过率最高)
因当前业务涉及获取用户附近的门店位置自提商品,需获取用户地理位置信息匹配最近的自取门店,完成商品交易。同时平台提供外卖配送服务,需要根据用户实时位置计算与门店的配送距离,生成合理的配送费用和预计送达时间。故申请该接口,望通过。
填写技巧
- 不要照搬模板:建议以模板为基础,结合你自己的小程序实际功能和品牌描述做适当修改,避免被系统判定为”模板化申请”
- 字数适中:申请理由控制在100-200字为宜,太短显得敷衍,太长审核人员没耐心看完
- 避免敏感词:不要出现”收集用户数据”、“获取用户轨迹”等表述,改用”匹配最近门店”、“计算配送距离”等服务导向的描述
- 业务截图辅助:如果后台支持上传截图,可以上传小程序首页(显示附近门店列表)和下单页(显示配送地址选择)的截图作为辅助材料
第三步:提交申请并等待审核
填写完申请理由后,点击提交。微信官方的审核时间通常为1-3个工作日,高峰期(如节假日前后)可能会延长到5个工作日。
审核结果会通过小程序后台的消息通知推送,也可以通过以下路径查看:
开发 → 开发管理 → 接口设置
如果接口状态显示为”已获得”,恭喜你,可以正常使用定位功能了。如果显示”审核未通过”,会附带拒绝原因,根据反馈修改后重新提交即可。
常见拒绝原因及解决方案
| 拒绝原因 | 问题分析 | 解决方案 |
|---|---|---|
| ”申请理由过于简单,无法判断使用场景” | 只写了一句话,没有具体说明用来做什么 | 使用上文模板,详细描述门店匹配、配送计算等场景 |
| ”该功能可通过其他方式实现,不建议使用定位” | 审核人员认为你的业务不需要定位 | 强调外卖/配送类业务的刚需属性,上传业务截图 |
| ”小程序类目与申请接口用途不符” | 小程序选择的类目不是电商/餐饮/外卖相关 | 去「设置 → 基本设置 → 服务类目」添加”商家自营”或”电商平台”类目 |
| ”涉及用户隐私,需提供隐私协议” | 小程序没有配置隐私保护指引 | 在后台配置用户隐私保护声明,说明位置信息的使用范围 |
第四步:在代码中正确使用接口
权限开通后,还需要确保小程序代码中正确调用接口。以下是海狐外卖系统中常见的定位调用场景:
获取用户当前位置(wx.getLocation)
wx.getLocation({
type: 'wgs84', // 坐标系类型,海狐系统统一使用wgs84
success: function(res) {
const latitude = res.latitude; // 纬度
const longitude = res.longitude; // 经度
// 将坐标传入后端,获取附近门店列表
getNearbyStores(latitude, longitude);
},
fail: function(err) {
// 用户拒绝授权时的降级处理
wx.showModal({
title: '提示',
content: '需要获取您的位置以展示附近门店,是否前往设置开启?',
success: function(res) {
if (res.confirm) {
wx.openSetting(); // 引导用户去设置页手动开启
}
}
});
}
});
让用户选择地址(wx.chooseLocation)
wx.chooseLocation({
success: function(res) {
const address = res.address; // 详细地址
const name = res.name; // 地点名称
const latitude = res.latitude; // 纬度
const longitude = res.longitude; // 经度
// 将选择的地址保存为配送地址
saveDeliveryAddress(res);
}
});
重要注意事项
- 必须处理授权失败的情况:用户可能拒绝授予位置权限,代码里要有降级方案(比如让用户手动输入地址)
- 不要频繁调用定位:连续调用会消耗用户电量,也容易被微信判定为滥用。建议首页加载时获取一次后缓存,用户手动刷新时再重新获取
- 坐标系统一:微信返回的是WGS84坐标,高德地图使用的是GCJ-02坐标,如果要做地图展示或导航,需要先进行坐标转换,否则会出现几百米的偏差
常见问题(FAQ)
Q1:接口申请被拒绝了三次,还能继续申请吗?
可以。微信没有限制申请次数,但连续被拒绝多次可能会进入更严格的审核队列。建议每次被拒绝后,不要简单重复提交,而是根据拒绝原因做实质性修改。如果实在搞不定,也可以考虑通过淘宝等渠道找专业代申请服务,费用通常在几十到一百元不等,但请务必选择信誉好的服务商,避免账号风险。
Q2:申请通过了,但上线后部分用户反馈定位不准或定位失败,怎么回事?
定位精度受多种因素影响:
- GPS信号:室内、地下停车场、高楼密集区域GPS信号弱,定位会偏移甚至失败
- 网络环境:WiFi定位依赖IP数据库,如果用户连接的是公共WiFi或代理,可能定位到错误城市
- 权限设置:用户在手机系统设置里关闭了微信的定位权限,这时即使小程序有接口权限也无法获取位置
- 坐标系偏差:如前文所述,不同地图使用的坐标系不同,直接混用会出现偏差
建议在产品设计上加入”手动修正地址”的入口,让用户可以在自动定位不准时手动微调。
Q3:申请时小程序类目应该怎么选?
外卖/配送类小程序建议选择以下类目(可在后台添加多个类目):
- 商家自营 → 在线超市/生鲜/便利店(适合有实体门店的商家)
- 电商平台 → 电商平台(适合多商户入驻的平台模式)
- 生活服务 → 外卖平台(部分账号可见,如果你的后台有这个选项优先选)
- 餐饮 → 点餐平台(适合堂食+外卖结合的商家)
类目选择要尽量贴近实际业务,不要为了让审核通过而选择不相关的类目,这可能导致后续被下架。
Q4:wx.getLocation 和 wx.chooseLocation 有什么区别,两个都要申请吗?
建议两个都申请,因为它们的使用场景互补:
- wx.getLocation:静默获取,不需要用户交互,适合首页自动定位展示附近内容
- wx.chooseLocation:需要用户主动在地图上选择,适合让用户确认或修改配送地址
如果你的小程序只做外卖配送,用户可以手动输入地址而不需要地图选点,那可以只申请wx.getLocation。但海狐外卖系统同时支持外卖配送和到店自提,两个场景都会用到地图功能,所以双开最稳妥。
Q5:接口申请通过了,但代码提审还是被拦截说没用定位接口,怎么办?
这种情况通常是因为代码中调用了定位接口,但小程序后台的”用户隐私保护指引”没有正确配置。微信要求:凡使用位置等敏感接口的小程序,必须在后台声明隐私政策。
配置路径: 设置 → 基本设置 → 用户隐私保护指引
需要勾选”位置信息”选项,并填写收集位置信息的目的(如”用于匹配附近门店、计算配送距离”)。配置完成后重新提交代码审核即可。
相关功能推荐
定位接口只是小程序上线的第一步,一个完整的外卖平台还需要配置更多能力:
- 普通二维码扫码进入小程序配置:生成门店专属二维码,顾客扫码直接进入对应门店页面下单,无需手动搜索
- 微信小程序订单订阅消息配置:用户下单后自动推送订单状态变更提醒(待接单、配送中、已送达),提升用户体验
- 公众号绑定与模板消息:将小程序与公众号关联,通过公众号菜单、图文消息为小程序导流
如果你在配置过程中遇到任何技术问题,海狐科技的技术支持团队随时为你提供帮助。
如果在配置过程中遇到问题,可以通过海狐官网右下角的在线客服联系我们,或发送邮件至 support@seafox.cc 获取技术支持。