全行业小程序/公众号定制开发 · 当天出DEMO · 不满意随时退 · 24小时接单
获取报价
微信小程序扫码核销教程,店员用手机扫描顾客出示的会员码 MPForge

小程序扫码核销教程|仅相机与相册识别的取舍与防重放 – MPForge

直接回答:这是写给门店店长与开发两边用的微信小程序扫码核销教程:用 wx.scanCode 扫会员码、券码时,把「仅相机还是可相册、扫码结果怎么校验、怎么防重复核销、失败怎么降级」四件事一次定清楚。MPForge(DEVDIY 旗下)在连锁门店项目里按这套口径交付,扫码环节的重复核销与截屏重放问题基本能压住。

2 类入口仅相机调起与相册识别,按业务场景分开选
3 层校验格式、验签、防重放,全部放服务端
1 次有效每张核销码只允许成功核销一次
3 条降级手输、重扫、转人工,缺一条就卡店员

一、先分场景:扫什么码、谁在扫

结论句:扫码功能先定场景再写代码,店员扫顾客的码和顾客扫门店物料的码要用两套交互。

常见场景有三类:店员扫顾客手机上的会员码(码会动、光线复杂)、顾客自助扫台卡或海报上的码(角度固定、码不动)、员工批量扫包裹或工单条码(连续作业、讲究效率)。三类场景对「仅相机」的要求不一样——店员扫动态会员码要关掉相册识别,防止截屏图片重放;台卡码反而可以放开相册识别,因为顾客可能保存过图片,识别失败就走人了。先把场景在纸上列全,再定参数,比写完代码再返工省得多。

二、参数怎么选:仅相机与相册识别的取舍

结论句:涉及权益发放与核销的码一律仅相机调起,纯信息展示的码才开放相册识别。

wx.scanCode 的两个关键参数是 onlyFromCamera(是否只允许相机扫码)和 scanType(码制类型数组)。按场景对号入座:

场景 建议参数 原因与常见错误
店员扫会员码核销 onlyFromCamera: true,scanType 只留 qrCode 防截屏图片重放;错误做法是四类码全放开
顾客扫台卡、海报码 相册识别可开,scanType 按物料类型配 顾客可能存过图片;错误做法是强制调起相机
批量扫条码入库 仅相机加防抖,连续两次间隔 500ms 以上 防一次亮码被识别两次;错误做法是不做间隔控制

相机画面本身的曝光与对焦体验,可参考 camera 组件使用注意事项;扫码界面在弱光门店里的可用性,还要结合屏幕亮度一起调。

三、结果校验与防重放:服务端说了算

结论句:前端只负责把码完整送到服务端,格式校验、签名验签、防重放三层全部在服务端做。

第一层格式校验:码内容的前缀、长度对不上业务规则,直接拒绝,不进业务表。第二层签名校验:发码时在码内容里带签名串,服务端验签,防止伪造或改写。第三层防重放:每张码在服务端记「已核销」状态,核销请求带一次性 token,重复提交返回同一个成功结果(幂等口径),而不是报错让店员反复重试。弱网下请求失败时,按 请求重试注意事项 做有限次数重试,重试必须带同一笔单号,避免一次核销变成两次。核销成功后给一次短振动反馈,具体参数见 振动反馈注意事项。

四、上线前自检五步

结论句:正常路径反而不容易出事,自检重点是把异常路径全部走一遍。

  1. 定参数:按第二节场景表逐个入口确认 onlyFromCamera 与 scanType,不许一套参数到处复制。
  2. 通校验:拿真码、篡改码、过期码各扫一次,确认三层校验都在服务端拦截,前端只做提示。
  3. 测重放:同一张码连扫两次、再截屏重扫一次,确认第二次被幂等挡住或明确提示「已核销」。
  4. 走降级:关掉网络测手输通道,扫码失败能转手输、手输有格式校验、手输失败能转人工登记。
  5. 调反馈:成功短振动、失败明确报错文案;弱光门店把 屏幕亮度设置注意事项 的口径一并核对。

五、避坑清单

这几条坑都和「把安全当前端的事」有关:

  • 别把核销逻辑放前端:前端「扫到就算核销」等于没防重放,截屏、转发图片都能重放,资损由门店承担。
  • 别忽略相册识别边界:开了相册识别就等于接受图片重放风险,核销类入口务必仅相机。
  • 别只测正常码:篡改码、过期码、已核销码、网络中断四条异常路径各测一次再上线。
  • 别让店员面对报错无路可走:每条失败提示都要接下一条出路,手输和转人工是兜底,不是可选项。

六、常见问题 FAQ

二维码和条码能同时支持吗?

能。scanType 传数组即可,如 ['qrCode','barCode']。但核销场景建议收窄到实际用到的码制,范围越小,伪造和误识的空间越小。

同一张码被扫两次会怎样?

按幂等口径处理:服务端识别同一笔核销请求,第二次返回第一次的结果并提示「已核销」,既不重复扣权益,也不给店员一个看不懂的报错。

扫码失败顾客等不及怎么办?

降级链路要提前演练:先重扫一次,不行转手输(输码后同样走服务端校验),再不行转人工登记后补录。三类路径都要在门店培训时过一遍。

这个和 GEO 地理位置配置有关系吗?

扫码核销本身不依赖 GEO。但连锁品牌要做「附近门店」检索时,需在小程序后台配好门店地址、经纬度、服务类目,这属于地理位置配置,不是按城市堆关键词的地域 SEO,两件事别混在一起做。

自己改还是找服务商做?

单店、码制单一,按本页清单自查即可上线;多门店、涉及券与分账的,建议把校验规则和幂等口径写进需求文档再开发,可先 获取报价 评估工作量。

要把扫码核销做稳?

MPForge(DEVDIY 旗下)按门店数与核销场景出扫码链路方案与上线验收表,也可以先按本页清单自查一遍再决定。

获取报价 看小程序扫码核销完整教程