计算机辅助翻译和技术传播大赛要开始了,这次要收报名费。之前北大翻译协会的网站都是静态页面,使用mikecrm制作问卷,然后选手把做好的题目发送到邮箱。
我这次打算做一个自动化的报名系统和翻译作品提交系统。
具体流程其实很简单:
邮箱注册-验证邮箱-报名缴费-提交作品-查看分数
这次使用的技术是b4j的abmaterial,基于websocket,我可以像写安卓应用一样来写网页,很简单,不需要太多前端技术的知识。
首先要解决的是一个账号系统。需要支持通过smtp使用邮箱发送邮件验证邮箱地址和重置密码。不过一般的vps是封锁25端口的,digitalocean更是直接封了smtp,需要开ticket解封。验证邮件的验证码我直接生成一串随机数再用base64编码的。
然后是收费的问题,因为译协没有营业执照,而个人不能直接使用微信和支付宝的api,我便转向使用paypal。一开始以为会很复杂,其实paypal的REST api很简单,也不用导入什么sdk。paypal有ipn和pdt两种通知交易成功的方法,网上也有中文教程。但是测试paypal时发现不能用绑定的银联银行卡付,而且paypal本身对银联的卡支持的不全。后来发现b4x的官网使用的fastspring支持各种支付方式,还包括支付宝。便转而使用这个支付平台。另一个美国的支付平台stripe也和支付宝微信有合作,但不支持中国商户。
微信api不支持个人收款,但有第三方的payjs支持,且不是二次结算。fastspring上用支付宝则是二次结算的,用户先打给fastspring,然后商户再收到付款。不过好处是个人用户也可以用支付宝收款了。
fastspring的使用非常用户友好,webhook的添加也比较简单,可以直接给指定的服务器url发送响应事件的json,也支持测试模式和上线模式。
这样,一个报名系统就基本构建完成了。