以下是代驾小程序从开发到上架的完整指南,包含核心功能、代码示例及合规要点:
---
一、代驾小程序核心功能架构
graph TD
A[用户端] --> B(即时呼叫代驾)
A --> C(费用预估)
A --> D(行程监控)
A --> E(电子协议签署)
F[司机端] --> G(抢单/派单)
F --> H(导航轨迹记录)
F --> I(服务费结算)
J[后台] --> K(司机调度算法)
J --> L(保险对接)
J --> M(投诉处理)
---
二、核心技术实现方案
1. 基础技术栈
模块 | 技术方案 |
---|---|
小程序前端 | 微信原生框架 + Vant WeUI组件库 |
地图服务 | 腾讯位置服务API(逆地址解析+路线规划) |
实时通信 | WebSocket + MQTT协议 |
支付系统 | 微信支付分+后付费(先享后付模式) |
服务端 | Node.js + MySQL + Redis GEO |
---
三、关键代码示例
1. 费用预估算法(JavaScript)
// 基础计费规则:起步价 + 公里费 + 夜间服务费
function calculateFee(distance, startTime, waitMinutes) {
const basePrice = 38; // 起步价38元(含5公里)
const perKm = 5; // 超公里单价
const nightRate = 1.2; // 23:00-6:00加收20%
const waitFeePerMin = 1; // 等待费
let kmFee = Math.max(0, distance - 5) * perKm;
let timeFee = 0;
const hour = new Date(startTime).getHours();
if (hour >=23 || hour <6) {
kmFee *= nightRate;
basePrice *= nightRate;
}
const waitFee = waitMinutes * waitFeePerMin;
return basePrice + kmFee + waitFee;
}
// 示例:8公里,白天,等待5分钟
console.log(calculateFee(8, '2024-03-20 14:00', 5)); // 输出38 + (8-5)*5 +5 = 58
2. 司机位置更新(Node.js + Redis)
const redis = require("redis");
const client = redis.createClient();
// 司机上线时更新位置
async function updateDriverLocation(driverId, lng, lat) {
await client.sendCommand([
'GEOADD',
'drivers:available',
lng.toString(),
lat.toString(),
driverId
]);
// 设置司机状态为可用
await client.hSet('driver:status', driverId, 'available');
}
// 示例:司机1001在杭州西湖区上线
updateDriverLocation('1001', 120.15507, 30.274085);
3. 订单状态流转(微信云函数)
// 微信云函数入口
exports.main = async (event, context) => {
const db = cloud.database();
const _ = db.command;
// 用户下单逻辑
if (event.type === 'createOrder') {
return await db.collection('orders').add({
data: {
_openid: event.userId,
startPoint: event.startPoint, // 结构 {lat, lng, address}
status: 1, // 1-待接单 2-进行中 3-已完成
createTime: db.serverDate()
}
});
}
// 司机接单逻辑
if (event.type === 'acceptOrder') {
return await db.collection('orders').doc(event.orderId).update({
data: {
driverId: event.driverId,
status: 2,
acceptTime: db.serverDate()
}
});
}
}
---
四、资质与上架流程
1. 必要资质清单
资质名称 | 说明 | 办理指引 |
---|---|---|
《网络预约出租汽车经营许可证》 | 代驾服务属于网约车范畴,需地市级审批 | 当地交通管理局官网申请 |
《代驾服务合作协议》 | 与代驾司机签订的正式协议(含保险条款) | 需律师审核模板 |
《信息安全等级保护三级认证》 | 涉及用户位置等敏感数据需通过等保 | 第三方测评机构办理 |
2. 微信小程序类目选择
- 主类目:`出行与交通 > 代驾`
- 辅类目:`生活服务 > 汽车服务`(用于车辆信息管理)
3. 提审避坑指南
- 必改项:
- 隐藏真实手机号(显示为138****1234)
- 订单详情页需添加"紧急联系人"入口
- 司机档案页需展示《代驾资格证》编号
- 驳回高频原因:
- 未声明位置信息用途 → 在隐私协议中补充
- 缺少事故处理指引 → 添加"保险理赔"页面
---
五、典型页面设计
1. 用户下单页
<!-- WXML示例 -->
<view class="container">
<map id="map" longitude="{{lng}}" latitude="{{lat}}" scale="16"/>
<view class="form">
<input placeholder="请输入起点" bindinput="bindStartPoint"/>
<picker mode="time" bindchange="bindTime">
<view>预约时间:{{appointmentTime || '立即出发'}}</view>
</picker>
<button bindtap="createOrder">呼叫代驾(预估{{fee}}元)</button>
</view>
</view>
2. 司机抢单页
// 司机实时接收订单
Page({
onLoad() {
const socket = wx.connectSocket({
url: 'wss://your-domain.com/ws/driver'
});
socket.onMessage(res => {
this.setData({ newOrder: JSON.parse(res.data) });
});
},
// 抢单逻辑
grabOrder() {
wx.request({
url: 'https://api.xxx.com/order/accept',
method: 'POST',
data: { orderId: this.data.newOrder.id, driverId: getApp().globalData.driverId }
});
}
});
---
六、成本估算
项目 | 费用范围 | 说明 |
---|---|---|
微信认证费 | 300元/年 | 企业主体必需 |
地图API调用 | 800-5000元/月 | 按日活1万估算 |
服务器 | 2000元/月起 | 4核8G × 2台 + 负载均衡 |
短信验证码 | 0.045元/条 | 腾讯云SMS |
等保三级测评 | 5-8万元 | 首次办理费用 |
---
七、运营关键指标
1. 接单率:通过智能调度算法保持>90%
- 优化策略:动态扩大接单半径(高峰时段)
2. 客单价:一线城市建议设定38元起步价
3. 投诉率:需控制在<0.5%(通过司机评级淘汰机制)
推荐技术方案:初期使用微信云开发降低运维成本,订单量超过1万/日后迁移至自建微服务集群。
大家要是有任何疑问,欢迎随时私信我!
目前正火热在线接单中,无论你来自哪个行业,有小程序开发、软件开发方面的需求,统统都能找我,期待携手共创佳绩!