一个小程序如何对接多个收款账户?
背景
我又来了,之前对接过网约巴士系统 网约巴士旅游专线平台搭建历程,运营了两年多了。在运营中完善、在完善中学习,一直是不变的真理。有一句话说得好:先做一个垃圾、用起来再说。
今天又需要升级了,需求是:可以根据不同的线路,收款进入不同的账户,如图:
请往下看。
需求方案
先看一个逻辑结构图,甲方一句话,可能需要把系统做颠覆性的改动,所以,没有所以:
第一版完成后,不满意,看不懂我就醉了,然后又用白话文把上面的重新写了一遍:
2.功能需求
2.1.支付账户管理
为了进行多入账渠道账户设置,管理员可以在后台进行相关财务账号操作:
- 查看财务账户基础信息:财务账号命名、企业名称;
2.2.线路管理
相关操作人员,可以在后台对线路进行管理,将现有线路进行财务归类,以便客户支付时可以进行对应财务入账;如图:
2.3.线路类型管理
将所有线路进行分类(校园专线、通勤专线、旅游专线),然后对线路类型进行统一设置支付通道,提高操作效率;
备注:若在线路管理已经设置支付账户、则该设置无效;
2.4.权限分配
管理员可以通过权限配置,对管理后台人员进行权限分配,指定拥有特定收款账户的查看操作权限;
2.5.订单管理
通过分账户收款功能后,具有特定管理权限的管理员,只可查看管理自己权限之内的订单,和操作:
- 订单查看
- 退款操作
- 订单统计功能
2.6.财务管理
财务功能目前是汇总至一个账户,分支付通道后,具有特定管理权限的管理员,只可查看管理自己权限之内的订单,和操作:
- 支付流水
- 退款明细
- 退款订单记录
2.7.小程序端设置
小程序端包含两个功能,客户操作端,和系统管理端:
- 客户操作端:客户选择对应线路后,系统自动匹配预先设置的收款账户进行支付;当客户退款时亦是如此;
- 系统管理端:管理员可以在小程序查看对应权限的相关数据、并进行操作,主要包括如下模块:
数据统计:操作员可通过小程序后台进行实时查看相关权限数据;
订单管理:操作员可通过小程序后台,进行订单详情、退款、订单搜索、和客户打电话联系
2.8.核销端
本次升级新增了扫码核销,被扫。客户乘车出示核销码,车载设备扫码后语音提醒乘车成功或失败。本次设备使用了两款设备:
一款是比较完善的,支持刷脸、小程序码、公交卡的,需要二次开发,说实话,很贵,大概逻辑如下:
3.部分代码逻辑
3.1.小程序账户管理
解决问题是王道,依然使用世界上最好的语言:PHP ,表结构如下:
CREATE TABLE `dd_pay*****t` (`id` int(10) NOT NULL AUTO_INCREMENT,`shop_id` int(10) DEFAULT NULL COMMENT '关联商户',`admin_id` int(10) DEFAULT NULL COMMENT '关联管理员',`title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '小程序名称',`AppID` varchar(120) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'AppID',`AppSecret` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'AppSecret',`mch_id` int(10) DEFAULT NULL COMMENT 'mch_id',`mchkey` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'key',`apiclient_cert_file` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'apiclient_cert',`apiclient_key_file` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'apiclient_key',`xlid` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,`status` enum('0','1','2') COLLATE utf8_unicode_ci DEFAULT '0' COMMENT '状态:0=禁用,1=启用,2=其他',`createtime` int(10) DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='小程序管理';
表创建后,通过一键crud,生成基础后台模块。
php think crud -t pa********t --relation=shop --relation=admin --relationforeignkey=shop_id --relationforeignkey=admin_id -u 1
去线路model,关联外键,代码如下:
public function pa***********(){return $this->belongsTo('P*************', 'p********t_id', 'id', [], 'LEFT')->setEagerlyType(0);}
接下来的任务就是修改线路编辑,增加选择支付通道:
<div class="form-group"><label class="control-label col-xs-12 col-sm-2">{:__('收款支付账号')}:</label><div class="col-xs-12 col-sm-8"><input id="c-pa*****unt_id" data-source="p*******t/index" data-field="title" class="form-control selectpage" name="row[pa********nt_id]" type="text" value="{$row.pay*****nt_id|htmlentities}"><span style="margin-top: 15px"><span style="color: red">注意:</span><br/>A.该功能暂为开启,无需设置</span></div></div>
到此为止,基础功能就完了,剩下的就是要权限分配了,主要包括如下模块权限的分配,我就不一一列出了:
- 订单权限管理
- 财务订单
- 支付明细
- 退款明细
扩展
整体来说,本项目可以进行无限极扩展,当然了,别人是看不懂我的代码的,目的就是增加二次开发难度,实现合作共赢.............把那些白嫖党、喜欢几百块买个源码去骗人的垃害群之马之门外
拒绝一切害群之马.....