Ash*_*ary 11 php prestashop prestashop-1.5 prestashop-1.6
我创建了一个自定义支付模块,目前它validateOrder()在从支付网站重定向后调用,此方法创建订单,发送电子邮件等.但问题是,如果用户关闭支付网站,然后它可以重定向回PrestaShop网站在这种情况下不会创建订单.因此,我想"pending"在重定向到付款网站之前创建一个订单(比如说有状态),并且在从付款网站重定向后,我可以简单地标记相同的付款并发送邮件等.
目前为此我试图调用validateOrder两次,一次进入hookdisplayPayment(这里我将状态设置为"pending"),一次调用后重定向.但现在重定向后,我得到"购物车无法装载,或者已经使用此购物车下订单".我认为这是因为我不能使用相同的卡ID更新同一个订单两次.
请注意,付款成功后,我只想发送一次电子邮件.目前,我使用自定义付款状态'send_email'设置为0.
这有什么好的解决方法?
如果重要的话,我想支持1.5+和1.6+版本.
小智 5
比我的第一个答案更好的方法是在你的函数模块中创建一个覆盖validateOrder.你会修改:
/** @var Order $order */
$order = new Order();
Run Code Online (Sandbox Code Playgroud)
成:
/** @var Order $order */
$order = new Order($this->currentOrder);
Run Code Online (Sandbox Code Playgroud)
然后测试是否加载了对象,跳过它设置顺序字段的部分.如果未加载,请使用挂起状态正确设置订单字段.还要测试是否在发送电子邮件的地方设置了$ this-> currentOrder,如果未设置则跳过电子邮件部分.如果设置,则表示订单处于待处理状态,您应该更改状态并发送电子邮件.
覆盖该函数后,可以validateOrder在重定向之前和之后调用两次.
| 归档时间: |
|
| 查看次数: |
1707 次 |
| 最近记录: |