去年接了个本地连锁烘焙店的小程序项目,老板一开始想用模板,试了两周发现会员储值和门店自提的逻辑根本对不上,最后还是走了定制。这篇文章把整个过程里踩过的坑和关键决策整理出来,给准备做小程序定制的朋友一个参考。
一、先搞清楚:什么情况必须定制
不是所有需求都值得定制。我的判断标准很简单:
- 业务逻辑有独特性:比如按门店分库存、按时间段限购、多级分销与会员价叠加,模板基本做不了。
- 要和已有系统打通:ERP、收银系统、CRM,模板小程序通常只给你一个孤立的数据库。
- 长期运营:模板按年收费,功能迭代受制于服务商,定制虽然前期贵,但代码在自己手里。
反过来,如果只是展示型官网、简单预约、纯电商卖标品,模板或SaaS完全够用,别为了“定制”两个字多花钱。
二、需求梳理阶段最容易翻车
我见过太多项目死在需求阶段。客户说“我要一个会员系统”,这句话背后可能是积分、等级、储值、优惠券四套东西。我的做法是让客户用用户故事的方式描述:
作为一个到店顾客,我想在小程序里提前下单并选择自提时间,到店后出示取货码。
每条用户故事对应一个页面或一个接口,写不清楚的就先画草图。这一步花三天,能省后面三周。
另外一定要明确不做什么。第一版我建议砍掉所有“以后可能要”的功能,先跑通核心闭环。烘焙店项目第一版只做了:商品浏览、下单支付、门店自提、会员储值。分销、拼团全部放到二期。
三、技术选型与架构
微信小程序原生开发 + 云开发还是自建后端?我的经验是:
- 数据量小、团队没有运维,用云开发,省事。
- 要和线下收银系统对接、有复杂事务,自建后端更稳妥。
烘焙店项目用了自建后端(Node.js + MySQL),因为要和门店POS同步库存。核心表结构大概是这样:
-- 门店表
CREATE TABLE store (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(64),
business_hours VARCHAR(64)
);
-- 商品与门店库存
CREATE TABLE sku_stock (
id INT PRIMARY KEY AUTO_INCREMENT,
sku_id INT NOT NULL,
store_id INT NOT NULL,
stock INT DEFAULT 0,
UNIQUE KEY uk_sku_store (sku_id, store_id)
);
-- 订单
CREATE TABLE orders (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
openid VARCHAR(64) NOT NULL,
store_id INT NOT NULL,
total_fee INT NOT NULL,
status TINYINT DEFAULT 0,
pickup_code VARCHAR(16),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
下单时的库存扣减一定要用事务加行锁,别用“先查再更新”,并发一上来必超卖:
START TRANSACTION;
UPDATE sku_stock SET stock = stock - 1
WHERE sku_id = ? AND store_id = ? AND stock >= 1;
-- 检查 affected rows,为 0 则 ROLLBACK
INSERT INTO orders (openid, store_id, total_fee, pickup_code)
VALUES (?, ?, ?, ?);
COMMIT;
四、支付与提审的细节
微信支付这块,定制项目最容易忽略的是支付结果通知的幂等处理。回调可能重复推送,订单状态更新前先判断是否已处理:
if (order.status !== 0) {
return res.send('SUCCESS'); // 已处理,直接返回
}
// 更新订单状态并发放储值/积分
提审方面,类目要和实际业务一致。烘焙店选了“食品”类目,但储值功能需要额外说明资金流向,审核被驳回一次,补充了商户资质和储值协议页面才过。建议提审前把用户协议、隐私政策、客服入口都补齐,这三样现在是硬性要求。
五、报价与工期怎么算
定制报价没有标准答案,但可以拆开看:
- UI设计:按页面数量,一般 300~800 元/页
- 前端开发:按功能模块,简单页面 1~2 人天,复杂交互 3~5 人天
- 后端接口:按业务复杂度,支付、库存、对账是大头
- 测试与提审:至少留 10% 的时间
烘焙店项目第一版报价在 3 万左右,工期 5 周,实际用了 6 周。给客户报工期时,我习惯在估算基础上加 30% 缓冲,尤其是涉及第三方系统对接的项目。
六、上线之后才是开始
小程序不是交付完就结束了。上线第一个月我每周看一次数据:下单转化率、支付成功率、自提核销率。发现支付成功率偏低,排查是部分安卓机型调起支付超时,加了重试和友好提示后恢复正常。
所以定制开发合同里最好约定上线后 1~3 个月的免费维护期,把明显属于开发缺陷的问题兜住。至于新功能,另算。
总结一句:小程序定制值不值,取决于你的业务有没有“模板装不下”的东西。需求想清楚、架构留余地、支付和库存这些硬骨头啃下来,剩下的就是耐心迭代。
评论 (0)
还没有评论,快来抢沙发吧~