Вопрос

У меня возникли проблемы с транзакцией платежа по кредитной карте, и я почти уверен, что причиной этого является quote_id.Проблема в том, что я не знаю, как вручную увеличить quote_id, чтобы узнать, прав я или нет.

Это было полезно?

Решение 2

Во-первых, проблема, с которой я столкнулся, заключалась в получении ответа «Прервано». Причина заключалась в том, что одно поле всегда отправлялось с одним и тем же значением, этим значением был orderid (который на самом деле является quote_id, потому что идентификатор заказа не был создано в этот момент), что запрещено, поскольку это уникальное поле в их базе данных.Magento никогда не создает новую цитату для одного пользователя до тех пор, пока его текущая транзакция не завершится (или когда не будет создан другой сеанс, я пока не уверен), quote_id отправляется (как идентификатор заказа) с тем же значением для одного пользователя, снова и снова. снова, поэтому каждая транзакция прерывается.

Решение:просто деактивируйте текущую котировку, если шлюз кредитной карты не отвечает строкой «APPROVED», в sales_flat_quote просто установил is_active до 0, поэтому Magento предоставит пользователю совершенно новую цитату.Проблема в том, что все в корзине будет потеряно для пользователя (запись все еще существует, но пользователь больше не будет иметь к ней доступа), поэтому Magento придется клонировать цитату, затем деактивировать текущую и сохранить обе, клонированная цитата теперь будет текущей цитатой, но с другой 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

решение было взято отсюда Как скопировать одно предложение (только товары из корзины) в другое предложение (только товары)

Теперь последний шаг (или, может быть, первый) — увеличить quote_id вручную, почему?шлюз кредитных карт уже имеет множество идентификаторов заказов, зарегистрированных в этом интернет-магазине, а точнее 149 (кстати, с использованием Magento 1.7).Я перенес почти все на Magento 1.9, но в новой базе данных котировки были установлены на ноль, поэтому первая сгенерированная котировка будет отклонена шлюзом cc.Это решение:

ALTER TABLE sales_flat_quote AUTO_INCREMENT = 149;

Итак, в основном это суммирует решение моей проблемы.Надеюсь, это будет полезно кому-то еще.

Другие советы

Первый

Вы не можете увеличить вручную quote_id поскольку он установлен на auto increment в базе данных, так как это primary key стола.

Поэтому, когда создается какая-либо цитата, quote_id создается автоматически, поскольку оно автоматически увеличивается и должно быть все время уникальным в соответствии с sql правило.

К вашей проблеме

Если у вас есть проблемы с credit card payment тогда вам следует отлаживать payment раздел.Если вы используете какое-либо внешнее расширение для своей платежной системы, свяжитесь с ним.Или же magento по умолчанию должен обрабатывать все платежи без каких-либо ошибок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top