我正在为授权贷款作为支付系统的网关编写一个 magento 模块。
由于客户被拒绝的可能性相对较高,我选择使用 getCheckoutRedirectURL() 来实现这一点(在结帐流程中的“下订单”之前放置贷款步骤),以便在失败的情况下,我可以轻松地退回客户到付款选择页面。
然后,我在控制器的 redirectAction 中调用网关 API。
结果,我得到了一个在灯箱中打开的 URL,以引导客户完成贷款流程,以及来自贷款网关的一些 id。
我想将这些额外的 id 存储为报价的一部分,然后在我将报价转换为订单时将它们复制到订单中(我进行了类似于 google checkout 的转换 - 基于来自贷款网关的回调)。
但是,我无法弄清楚如何在报价单上保留数据。
显而易见的方式:
$quote->setCustId($custId);
$quote->save();
不工作;附加数据不会存储在数据库中,因此在回发处理程序中无法将报价转换为订单。
同样的情况发生在
$quote->setData('custId', $custId);
$quote->save();
(我认为这只是第一个更明确的形式,因为它不使用魔法设置器/获取器)
我已经看到对 setAdditionalData 的引用(例如,here),但这似乎仅适用于支付对象,我认为我还没有引用(尽管我可能是错的?)
有什么方法可以在数据库中的订单上存储一些字段,而不必为它们实际添加数据库字段?