订单多次提交的疑问【已解决】

bug问题 · lzrumik · 于 5年前 发布 · 2318 次阅读

大家好,我在使用paypal快捷支付遇到一个问题。

第一次进入/payment/paypal/express/review页面提交后paypal返回邮编错误。调整了邮编再次提交,vendor/fancyecommerce/fecshop/app/appfront/modules/Payment/block/paypal/express/Placeorder.php 这个文件的getLastData方法会在同一订单下多生成一份商品记录(mysql表sales_flat_order_item 表会多一条商品的记录),再次提交后paypal就会提示Item total is invalid。经测试,如果把mysql表sales_flat_order_item清空后再次提交就成功了。

我推测可能是fecshop在paypal返回失败时,并没有处理当前订单相关数据,导致重复生成。想问下大家有没有遇到这种情况,如何处理的?

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

我现在想着的解决办法就是: 在vendor/fancyecommerce/fecshop/app/appfront/modules/Payment/block/paypal/express/Placeorder.php的doCheckoutPayment方法判断如果paypal返回不是success,就清空订单的信息

不知道这样调整会不会有其他的问题?

successgo#25年前 0 个赞

如果验证失败,是不是就不应该生成订单及订单子项?

lzrumik#35年前 0 个赞

@successgdc #2楼 我觉得应该是。看代码是先生存订单、订单子项再通过paypal审核。这样的逻辑也没错,只是失败不能再该订单下再新建子项

lzrumik#45年前 0 个赞

感谢Terry的指点,在vendor/fancyecommerce/fecshop/services/order/Item.php的actionSaveOrderItems方法里取消注释一行代码就好。

$this->_itemModel->deleteAll(['order_id' => $order_id]);

详情请看图片!

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