对于需要付费授权的功能,采用这样的方案向用户收款并授权:
- 显示微信收款码图片,用户使用微信扫码付款。
- 用户扫码支付后上传微信支付凭证截图。
- 系统使用完全本地化的 OCR 识别支付截图。核验收款人,支付金额、付款时间、支付单号。
- 系统根据支付金额,按相应金额的授权方案激活授权。
- 如果核对失败,则回退到用户手动加作者微信,发送支付凭证人工核验。此时需弹出添加微信的提示。文案:支付凭证核验未通过,请确认重新上传,或添加作者微信,提供支付凭证,获取授权码
- 如果 OCR 加载成功,但匹配失败,则核验失败原因写成英文编码,避免被人轻易识破而进行伪造。
- 整个过程都要假设用户会产生疑虑,或遇到问题,所以界面上需要有 Popover,引导用户加作者微信获取激活码授权。
为什么要做这样的伪核验?不对接微信支付,纯使用视觉方案,校验支付凭证,理论上是完全不安全的,因为支付凭证的真实性无法与微信真实的订单进行核验,是完全可伪造的,但根据自身的经验,大部分用户没有那么聪明,同时没有那么舍得花时间。此问题不用纠结。
本身就是玩具级的应用,进账可有可无。至少新用户的款大概率是能收到的,会存在老油条伪造支付凭证,这是可以接受的。
主要限制:
- OCR 模型文件较大,受限于带宽,加载时间较长,可能体验较差。缓解方式是:加载模型时提示:系统核验中,首次预计需2~3分钟,请耐心等待,请不要关闭页面
- 支付凭证可能被滥用。一张有效的支付凭证,实际上可以被传播使用,遍地开花。应对方法主要是对授权时间做限制。授权方案最长 24 小时。一定程度上能环节。当然也可要求用户支付时填入设备标识码,核验时同时核验设备标识码,但这也可造假,并会引入更多复杂度。根本上,对授权时间的限制是最有效的。
- 需要引导用户找到正确的支付凭证页面。
- 授权激活的步骤,做成步骤条。导出不要有步骤条了。打开就是两大个按钮,免费导出或者无水印导出。现在预览基本坏掉了。
