Pregunta

Tengo problemas con la transacción de pago con tarjeta de crédito y estoy seguro de que quote_id es la causa.El problema es que no sé cómo incrementar manualmente el quote_id para saber si tengo razón o no.

¿Fue útil?

Solución 2

En primer lugar, el problema que estaba teniendo era obtener la respuesta "ABORTADO", la razón era que un campo siempre se enviaba con el mismo valor, ese valor era orderid (que en realidad es quote_id porque la identificación del pedido no ha sido creado en ese momento), lo cual está prohibido porque es un campo único en su base de datos.Magento nunca crea una nueva cotización para un usuario hasta que se completa la transacción actual (o cuando se crea otra sesión, todavía no estoy seguro), el quote_id se envía (como orderid) con el mismo valor para un usuario, una y otra vez. una vez más para que se cancele cada transacción.

La solución:simplemente desactive la cotización actual cuando el portal de la tarjeta de crédito no responda con la cadena "APROBADO", en sales_flat_quote solo configura is_active a 0, por lo que Magento le daría al usuario una cotización completamente nueva.El problema es que todo lo que había en el carrito se perdería para el usuario (el registro aún existe, pero el usuario ya no tendría acceso a él), por lo que Magento tendría que clonar la cotización, luego desactivar la actual y guardar ambas. la cotización clonada será ahora la cotización actual pero con una diferente quote_id.

// get the current quote
$current_quote = Mage::getModel('sales/quote')->load(23);

// create a new one
$cloned_quote = Mage::getModel('sales/quote');

// copy the content of the current one into the new one
$cloned_quote->merge($current_quote);

// deactive the current quote
$current_quote->setIsActive(false);

// save the cloned quote
$cloned_quote->collectTotals()->save();

// and save the changes of the current quote
$current_quote->save();

// now the current save is inactive 
// and the cloned one is the "new" current quote

la solución fue tomada de aquí Cómo copiar una cotización (solo artículos del carrito) a otra cotización (solo artículos)

Ahora el paso final (o tal vez el primero) es incrementar el quote_id manualmente, ¿por qué?El portal de tarjetas de crédito ya tiene muchos identificadores de pedidos registrados en esta tienda electrónica, 149 para ser precisos (usando Magento 1.7, por cierto).Migré casi todo a Magento 1.9, pero con una base de datos completamente nueva, las cotizaciones se establecieron en cero, por lo que la primera cotización generada será rechazada desde la puerta de enlace cc.Esta es la solución:

ALTER TABLE sales_flat_quote AUTO_INCREMENT = 149;

Básicamente, esto resume la solución a mi problema.Espero que esto sea útil para alguien más.

Otros consejos

Primero

No puedes incrementar manualmente el quote_id ya que está configurado para auto increment en la base de datos ya que es primary key de la mesa.

Entonces, cuando se crea cualquier cotización, quote_id se crea automáticamente ya que es de incremento automático y debe ser único todo el tiempo según sql regla.

a tu problema

Si tienes problema con credit card payment entonces deberías estar depurando payment sección.Si está utilizando alguna extensión externa para su sistema de pago, comuníquese con ella.De lo contrario, magento debería manejar de forma predeterminada todos los pagos sin ningún error.

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