Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento 将支付网关响应存储在报价上并保存到订单_Magento_Payment Gateway - Fatal编程技术网

Magento 将支付网关响应存储在报价上并保存到订单

Magento 将支付网关响应存储在报价上并保存到订单,magento,payment-gateway,Magento,Payment Gateway,我正在为一个网关编写一个magento模块,该网关将贷款授权为支付系统 由于客户被拒绝的可能性相对较高,因此我选择使用getCheckoutRedirectURL()实现这一点(在结帐流程中将贷款步骤放在“下单”之前),以便在失败的情况下,我可以轻松地将客户返回到付款选择页面 然后在控制器的重定向操作中执行网关API调用 结果,我得到了一个URL,可以在一个灯箱中打开,引导客户完成贷款流程,以及贷款网关中的一些id 我想将这些附加id存储为报价的一部分,然后在我将报价转换为订单时将其复制到订单中

我正在为一个网关编写一个magento模块,该网关将贷款授权为支付系统

由于客户被拒绝的可能性相对较高,因此我选择使用getCheckoutRedirectURL()实现这一点(在结帐流程中将贷款步骤放在“下单”之前),以便在失败的情况下,我可以轻松地将客户返回到付款选择页面

然后在控制器的重定向操作中执行网关API调用

结果,我得到了一个URL,可以在一个灯箱中打开,引导客户完成贷款流程,以及贷款网关中的一些id

我想将这些附加id存储为报价的一部分,然后在我将报价转换为订单时将其复制到订单中(我进行了类似于google checkout的转换-基于贷款网关的回调)

但是,我不知道如何持久保存报价单上的数据

显而易见的方式是:

$quote->setCustId($custId);
$quote->save();
不起作用;附加数据不会存储在数据库中,因此在回发处理程序中无法将quote转换为order

同样的情况也发生在

$quote->setData('custId', $custId);
$quote->save();
(我假设这只是第一种更明确的形式,因为它不使用神奇的setter/getter)

我看到过setAdditionalData的引用(例如),但它似乎只在支付对象上可用,我想我还没有在报价单上看到它(尽管我可能错了?)


有没有办法在数据库中存储订单上的某些字段,而不必为它们实际添加数据库字段?

您需要将实际列添加到
sales\u flat\u quote
表中,以便在quote对象中存储额外的变量

由于您正在制作的内容与付款方式相关,因此我建议您将这些变量存储在
附加信息
数据集中,该数据集以序列化php数组的形式存储在
sales\u flat\u quote\u payment
表中,并且付款方式可以按如下方式设置此变量的数据:

$quote->getPayment()->getInfoInstance()->setAdditionalInformation($key, $value);
$order->getPayment()->getInfoInstance()->setAdditionalInformation($key, $value);
更多信息请参见
app/code/core/Mage/Payment/Model/Info.php

唯一的缺点是,它在最后存储为序列化数组,这意味着如果您需要依赖此数据、提供筛选器等,以后将无法直接访问sql