是否可以对已下的订单 重新选择支付方式,而不通过重新下单实现?

文档问题 · leenin · 于 5年前 发布 · 2937 次阅读

原有的逻辑是,统一在onepage页面完成选择支付方式等所有的option,最后生成订单,但好多业务需求情况,特别是目前国内的,都是先下单子,然后再选择支付方式以及执行后续的支付动作,而且有些项目处理起来不是很方便,二开的东西比较多。是否可以更改一下逻辑处理和实现下分块生成订单,使得地址填写,货运方式设置,支付方式选择,优惠券添加等等,可以通过单独地调用模块方法快捷的实现?或许是对fecshop还是没领悟透彻,可能通过二开模块,service层等就可以实现,但这些功能应该比较实用的,而且担心实现起来工作量大,逻辑错误漏洞多,开发速度慢。想请教下是否有比较好的解决方案。而且觉得系统后期应该完善各种实用的功能模块,方便开发的调用去实现项目的拼装组合。全属菜鸟愚见,望各位大神指教一二。

本文由 leenin 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 4 条回复
Fecmall#15年前 0 个赞

你想的是,不使用一页支付,而是想分开操作。

1.在下单页面,点击place order后, /checkout/onepage/index post 请求

https://github.com/fecshop/yii2_fecshop/blob/master/app/appfront/modules/Checkout/controllers/OnepageController.php#L42

 $status = $this->getBlock('placeorder')->getLastData();

就是文件:https://github.com/fecshop/yii2_fecshop/blob/master/app/appfront/modules/Checkout/block/onepage/Placeorder.php

2.找到: https://github.com/fecshop/yii2_fecshop/blob/master/app/appfront/modules/Checkout/block/onepage/Placeorder.php#L77

$genarateStatus = Yii::$service->order->generateOrderByCart($this->_billing, $this->_shipping_method, $this->_payment_method, false, '', $this->_order_remark);

就是:https://github.com/fecshop/yii2_fecshop/blob/master/services/Order.php#L522

protected function actionGenerateOrderByCart($address, $shipping_method, $payment_method, $clearCart = true, $token = '', $order_remark = '')
    {
	
	}

到这里就找到生成订单的代码了

对于优惠券,在购物车页面就可以使用,你在下单前使用也没有问题,自己找代码逻辑

对于货运地址,你可以提前保存,目前处理货运地址的代码为:https://github.com/fecshop/yii2_fecshop/blob/master/app/appfront/modules/Checkout/block/onepage/Placeorder.php#L224 ,你可以在前面保存写来,然后吧address_id 写入session,然后在调用 generateOrderByCart()的时候传递进来即可

对于支付方式,在订单生成后选择支付方式更新订单支付,可以将:https://github.com/fecshop/yii2_fecshop/blob/master/services/Order.php#L606 这行代码去掉,然后自己写一个更新订单支付方式的方法。

理清楚思路和逻辑,按照自己的需求更改相应的代码逻辑即可。

leenin#25年前 0 个赞

感谢您的回复和指点。

Leung#35年前 0 个赞

@Fecshop #1楼 请问一下, 我想先设置设置所以订单统一的固定运费应该怎么设置呢。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics