一般所谓“全栈开发”就是前后台一起搞,既然 Android 也是 Linux 内核,那么不是也可以当服务器用吗?但是用常规的后台开发语言 PHP、java、nodejs 之类的都不太合适,把 php-fpm 交叉编译成 arm 版的这个有人做过,nodejs 也有安卓版的,但都是提供一个环境让别人去写后台代码,光这个环境就几十兆了,很笨重还不好用。java 倒是有点靠谱,又是 Android 原生语言。只是不太喜欢 java,感觉表达起来太啰嗦。
所以我选择用 C++ 做后台,sqlite 做数据库(自己编译的原生版,不是安卓自带的那个),前端用 vuejs 做 spa,通过 ajax + websocket 与本地的 C++后台交互。
我想写一个商城‘网站’,用户在手机上添加商品,包括价格、文字描述、图片 /视频展示,同一内网中的其它客户端,包括安卓、iphone、PC 端,用浏览器打开这个“运行在安卓”上的商城就可以自助购物,如果直接用微信扫码打开的,就直接用公众号方式支付,如果是在 PC 端打开的,就显示一个二维码,让客户扫码支付。那么这台手机上售出的所有订单和商品信息都存在本地的 sqlite 数据库中,并且可让它支持退款。
客户付的款到哪里去了?那就要让安卓手机的机主可以直接在 app 上开通自己的微信商户并绑定自己的银行卡,那别人在你手机上买东西的钱就由微信转到你银行卡中了。
那么就需要解决几个问题:
- 对接微信官方小微商户接口(这个可以绑个人银行卡的,不需要公司对公账户)
- 上传商品的图片、视频到 http 站点目录,实际上是保存文件到安卓内部存储中,sqlite 存储媒体文件的 url 并与该商品关联。上传的视频文件大小没限制(只要手机容量够大)
- 在其它客户端用浏览器播放视频流,现在支持 html5 的浏览器都支持
<audio><video>标签,所以没问题。在 http 服务器中加入 range 分段处理即可。就是让客户可以拖动进度条播放那种。 - 顺便也加上扫码收款,扫客户的付款码,也可出示收款码让客户扫,直接选商品生成,不用输入金额。而且开通了小微商户别人可用信用卡支付。
这样线上、线下支付都有了。所谓线上也只是内网的线上,别人没法通过公网访问你的安卓 http 网站(除非在路由器中加 ip 映射)。
然后这样拍脑袋搞出来的东西是这样的(请不要吐槽界面,我美工比较弱):