¿Cuáles son mis opciones para traer de vuelta los reembolsos en línea después de la actualización?

magento.stackexchange https://magento.stackexchange.com/questions/332

  •  16-10-2019
  •  | 
  •  

Pregunta

Cuando se actualiza una tienda pasada Magento 1.5 puede perder la capacidad de línea reembolsos debido a los siguientes cambios Mage_Adminhtml_Block_Sales_Order_Creditmemo_Create_Items

if ($this->getCreditmemo()->canRefund()) {
    if ($this->getCreditmemo()->getInvoice()) {

vs. nueva

if ($this->getCreditmemo()->canRefund()) {
    if ($this->getCreditmemo()->getInvoice() && $this->getCreditmemo()->getInvoice()->getTransactionId()) {

Por desgracia, no muchos métodos vio este cambio viene y por lo tanto no tienen la transaction_id presente en la factura.

Algunos método de pago han puesto en marcha ahora el ahorro de la transaction_id mediante la utilización / primordial

Mage_Payment_Model_Method_Abstract

public function processInvoice($invoice, $payment)
{
    $invoice->setTransactionId($payment->getLastTransId());
    return $this;
}

incluyendo propia aplicación de Magento para Authorize.net

/**
 * Mock capture transaction id in invoice
 *
 * @param Mage_Sales_Model_Order_Invoice $invoice
 * @param Mage_Sales_Model_Order_Payment $payment
 * @return Mage_Payment_Model_Method_Abstract
 */
public function processInvoice($invoice, $payment)
{
    $invoice->setTransactionId(1);
    return $this;
}

Sin embargo el comentario en el único lugar processInvoice se llama Mage_Sales_Model_Order_Payment

$this->getMethodInstance()->processInvoice($invoice, $this); // should be deprecated

Me hace pensar que esto no es el mejor enfoque.

  • ¿Cuál es la mejor manera de poner en práctica el ahorro de la transaction_id en la factura en su método de pago?
  • ¿Cuáles son buenas opciones para hacer frente a las facturas de legado?
¿Fue útil?

Solución

Configuración de ID de transacción correctamente

En cuanto a las facturas de mapeo. Desde Magento 1.4 consigue transacciones introducidas, establece ID de transacción de forma automática cuando la factura se crea por capture() o registerCaptureNotification() métodos de entidad pago de la orden. Solo mira dentro de la clase _addTransaction() Mage_Sales_Model_Order_Payment. Lo que en realidad no debe preocuparse sobre la configuración de este ID de transacción manualmente. También puede confundirse con llamada al método $this->getTransactionId(), pero en realidad no necesitaba ser ajustado por el usuario, ya que Magento genera internamente identificación de la transacción llamando _generateTransactionId() en la captura o registro de notificación de captura.

Magento 1.4

Todas las actualizaciones desde Magento 1.4.x son seguros, ya que esta lógica fue siempre allí, ya que la introducción de entidad transacción de pago orden. Todas las versiones de Magento 1.4 antes estaba teniendo este dolor enorme capacidad de actualización, incluso Authorize.Net núcleo (comprobar mi respuesta en SO: https://stackoverflow.com/questions/14207721/why-isnt-payment-method-information-available-in-orders-after- mejora-de-ma / 14270191 # 14270191 ). Si estaba utilizando este método de fijación identificación de la transacción en la factura, que debiera estar a salvo con él, ya que esta identificación de la transacción se genera automáticamente por Magento si se quita la llamada processInvoice() y su valor original que ha configurado se obtiene conservado, así como para viejos transacciones.

Conclusión

Por supuesto que puede estar equivocado en este caso, ya que no ha sido probado de esta manera, por lo que sería grande para su instalación y prueba antes de confiar en mi respuesta. Al menos no de mis extensiones de pago se utiliza este método processInvoice() y reembolsos fue tratada correctamente por Magento con mis creditmemos.

ACTUALIZACIÓN

En cuanto a la información de la transacción para su método de pago, es necesario realizar una llamada $this->getInfoInstance()->setTransactionId('your_txn_id') en su authorize() o, si se trata de un pago directo sin autorización, la transacción método capture() de forma explícita, para que Magento crear un registro de transacciones para usted. Para los registros antiguos siguen mi respuesta en SO.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top