我正在研究一个问题, Refund 按钮不适用于在客户端站点从1.3升级到1.7之前放置的订单。我正在尝试从销售订单创建贷项通知单>发票>信用备忘录。
钻取代码和数据时,$this->getCardsStorage()
似乎没有返回任何存储的信用卡,用于升级前的订单付款。实际上,对于那些订单,sales_flat_order_payment表中的additional_information
字段为NULL - 我相信该字段是在1.4或更高版本中创建的。
对我来说似乎很奇怪的是,1.4之前创建的支付数据不会向后兼容。我已经做了一些不错的搜索这个问题,我能找到的最接近的事情就是人们在升级之后完全退款的问题。对我来说情况并非如此 - 退款似乎对升级后的订单工作正常。
如果只是没有向后兼容性,最好至少看到一个错误报告。
我把它发布到了magento bug跟踪器:Bug #28601
答案 0 :(得分:3)
确实如此,1.4升级存在问题。
在1.4中引入了交易并使用了additional_information
字段,之前有不同的字段,称为additional_data
,也是序列化的,但是以不同的方式,您可以在1.4之前查找付款记录并在1.4之后比较数据结构的变化方式。当您看到数据的差异时,您可以创建一个将迁移旧值的脚本。
此致 伊万
<强>更新强>
在授权过程中,事务ID存储在两个属性中: cc_trans_id和last_trans_id。当客户执行捕获时,只有last_trans_id得到更新。
在1.3方法中,getRefundTransactionId()返回last_trans_id值。
在1.7中,相同的方法如下所示: https://github.com/LokeyCoding/magento-mirror/blob/magento-1.7/app/code/core/Mage/Paygate/Model/Authorizenet.php
所以你看它完全被改写了!
为使1.7代码适用于1.3事务,您需要对旧事务执行以下操作:
last_trans_id == cc_trans_id
和订单有发票,则在order_payment_transaction表中仅创建捕获交易记录。last_trans_id == cc_trans_id
且订单没有发票,请创建授权交易记录last_trans_id !== cc_trans_id
创建2条记录,首先是cc_trans_id
,它将是auth事务,第二条记录将是具有捕获类型的子事务。当您导出具有此类值的旧订单时,您将能够从管理员退还旧订单。