gpt4 book ai didi

shopware - 如何阻止订单交易的状态变化?

转载 作者:行者123 更新时间:2023-12-05 06:59:40 27 4
gpt4 key购买 nike

我正在处理用于支付网关的 Shopware6 插件。我必须处理订单交易的状态变化。在我的一个案例中,当我尝试对支付提供商执行退款并且收到错误时,我想阻止订单交易的 Refunded 状态发生变化。

我找到了这个方法 \Shopware\Core\System\StateMachine\StateMachineRegistry::transition

public function transition(Transition $transition, Context $context): StateMachineStateCollection
{
...
$repository->upsert($data, $context);
...
$this->eventDispatcher->dispatch(new StateMachineTransitionEvent(...));
...
$this->eventDispatcher->dispatch(...);
...
$this->eventDispatcher->dispatch(...);
...
}

调度了多个事件,但所有事件都在 upsert 之后。

即使我在这些事件的订阅者中引发异常,upsert 已经更新了 db 表,我没有机会恢复它,特别是因为 Refunded 状态是无退出状态。

如何防止或恢复更新插入?

最佳答案

您可以还原更新插入。为此,您需要向数据库写入一个新的转换。

您要查找的表是state_machine_transition,可以在platform/src/Core/Migration/Migration1536233560BasicData.php@1078 下找到数据是如何写入该表的>。您将需要在插件迁移中执行此操作。

然后你可以在状态更改为你的 edgecase 后再次转换状态。

关于shopware - 如何阻止订单交易的状态变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64338326/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com