level 6
商淘软件
楼主
THINKPHP 5.0的支付开发一直是很多朋友关心的一个问题,作为一个常用的功能,我们今天一起来研究一下。
由于基于thinkphp 5.0的开源商城不多,那今天我们就以WSTMart作为研究对象吧。它分为开源版和授权版,授权版功能比开源版强大,但是需要付费之后才能开放源代码。这里我们不讨论授权版的,仅仅以它的开源版作为研究对象。
这套系统目前没有做支付的插件,提供了微信支付,支付宝支付,货到付款和余额支付。如果想支持其他方式例如银联支付则需要定制或者自行编写代码完成,头痛-_-!!!。对于有开发基础的程序猿来说,这终究是可以解决的,我们来研究一下......
身为程序猿最喜欢的就是看图,没有图片不好想象,首先上一张官网顺来的图:

通过和官网数据库表对比,虽然没有使用插件式的写法,但表的设计则延续的是插件式的设计。不同的支付方式可以payCode来识别,例如我们想定义一个银联支付,可以定义payCode为unionpays,然后isOnline为1.这样就标记了基础的支付数据:

在管理后台-支付管理,可以看到记录:

这里能看到记录,并不代表万事大吉了,这个时候点击“安装”是会出错的。我们还需要在支付目录下新增相应的文件:/admin/view/payments/pay_unionpays.html。这里作为研究,我们就直接复制微信的文件,改个名字:

这个时候再回到系统管理页面去点击“安装”就可以看到如下界面了:

这样一个支付功能的界面就出来,通过这里我们可以知道,在支付管理表payCode是有意义的,定义了什么名字,那么在支付目录下就有相应格式的文件,不然系统无法找到配置文件。
到了这一步还不算完成,这里仅仅是完成了一个设置支付的界面。真正支付功能则需要手工写代码实现了,以电脑端为例子,我们就需要在对应的home模块下创建支付控制器文件,创建/home/controller/Unionpays.php ,文件名就是payCode字段值的首字母大写,在此控件器实现“银联支付”相关业务逻辑。具体的写法可以参考:/home/controller/Alipays.php里边要有支付功能,回调功能等等。
要留意的是:所有在线支付回调接口统一调用 wstmart/common/model/Orders.php 的 “complatePay” 方法;
2017年03月02日 05点03分
1
由于基于thinkphp 5.0的开源商城不多,那今天我们就以WSTMart作为研究对象吧。它分为开源版和授权版,授权版功能比开源版强大,但是需要付费之后才能开放源代码。这里我们不讨论授权版的,仅仅以它的开源版作为研究对象。
这套系统目前没有做支付的插件,提供了微信支付,支付宝支付,货到付款和余额支付。如果想支持其他方式例如银联支付则需要定制或者自行编写代码完成,头痛-_-!!!。对于有开发基础的程序猿来说,这终究是可以解决的,我们来研究一下......
身为程序猿最喜欢的就是看图,没有图片不好想象,首先上一张官网顺来的图:

通过和官网数据库表对比,虽然没有使用插件式的写法,但表的设计则延续的是插件式的设计。不同的支付方式可以payCode来识别,例如我们想定义一个银联支付,可以定义payCode为unionpays,然后isOnline为1.这样就标记了基础的支付数据:
在管理后台-支付管理,可以看到记录:
这里能看到记录,并不代表万事大吉了,这个时候点击“安装”是会出错的。我们还需要在支付目录下新增相应的文件:/admin/view/payments/pay_unionpays.html。这里作为研究,我们就直接复制微信的文件,改个名字:
这个时候再回到系统管理页面去点击“安装”就可以看到如下界面了:
这样一个支付功能的界面就出来,通过这里我们可以知道,在支付管理表payCode是有意义的,定义了什么名字,那么在支付目录下就有相应格式的文件,不然系统无法找到配置文件。到了这一步还不算完成,这里仅仅是完成了一个设置支付的界面。真正支付功能则需要手工写代码实现了,以电脑端为例子,我们就需要在对应的home模块下创建支付控制器文件,创建/home/controller/Unionpays.php ,文件名就是payCode字段值的首字母大写,在此控件器实现“银联支付”相关业务逻辑。具体的写法可以参考:/home/controller/Alipays.php里边要有支付功能,回调功能等等。
要留意的是:所有在线支付回调接口统一调用 wstmart/common/model/Orders.php 的 “complatePay” 方法;