Какие у меня есть варианты возврата средств онлайн после обновления?


Когда магазин обновляется после версии Magento 1.5, он может потерять возможность онлайн -возврата средств из-за следующего изменения Mage_Adminhtml_Block_Sales_Order_Creditmemo_Create_Items

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

Против нового

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

К сожалению, не многие способы оплаты заметили это изменение, и поэтому в счете-фактуре нет идентификатора транзакции.

В некоторых способах оплаты теперь реализовано сохранение идентификатора транзакции с помощью использование/переопределение

mage_payment_model_метод_абстрат

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

Включая собственную реализацию Magento для 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;
}

Однако комментарий в единственном месте processInvoice называется Mage_Sales_Model_Order_Payment

маг_продажи_модель_заказ_платеж

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

Заставляет меня думать, что это не лучший подход.

  • Каков наилучший способ реализовать сохранение идентификатора транзакции в счете-фактуре в вашем способе оплаты?
  • Какие есть хорошие варианты решения проблемы наследия счета-фактуры?
Author: Piyush, 2013-01-29

1 answers

Правильная настройка Идентификатора Транзакции

Что касается картографических счетов-фактур. Поскольку Magento 1.4 вводит транзакции, он автоматически устанавливает идентификатор транзакции при создании счета-фактуры с помощью capture() или registerCaptureNotification() методов организации оплаты заказа. Просто загляните в _addTransaction() класса Mage_Sales_Model_Order_Payment. Таким образом, на самом деле вам не следует беспокоиться о настройке идентификаторов транзакций вручную. Также вы можете запутаться в вызове метода $this->getTransactionId(), но на самом деле вам не нужно его устанавливать, так как Magento генерирует транзакцию внутренний идентификатор, вызвав _generateTransactionId() при захвате или регистрации уведомления о захвате.

Magento 1.4

Все обновления, начиная с Magento 1.4.x, безопасны, поскольку эта логика всегда существовала, начиная с введения сущности транзакции оплаты заказа. Все версии Magento до версии 1.4 испытывали огромную проблему с возможностью обновления, даже при авторизации ядра.Сеть (проверьте мой ответ на SO: https://stackoverflow.com/questions/14207721/why-isnt-payment-method-information-available-in-orders-after-upgrading-from-ma/14270191#14270191). Если вы использовали этот метод для установки идентификатора транзакции в счете-фактуре, вы должны быть в безопасности с ним, так как этот идентификатор транзакции автоматически генерируется Magento, если вы удалите вызов processInvoice(), и ваше исходное значение, которое вы установили, также сохраняется для старых транзакций.

Заключение

Конечно, я могу ошибаться в данном случае, поскольку он не был протестирован таким образом, было бы здорово настроить его и протестировать, прежде чем полагаться на мой ответ. По крайней мере, ни один из моих платежных расширений не использовал этот метод processInvoice(), и возврат средств был правильно обработан Magento с помощью моих кредитных карт.

ОБНОВЛЕНИЕ

Что касается информации о транзакции для вашего способа оплаты, вам необходимо сделать $this->getInfoInstance()->setTransactionId('your_txn_id') вызов вашего authorize() или, если это прямой платеж без авторизации, capture() транзакция метода явно, чтобы позволить Magento создать запись транзакции для вас. Для старых записей следуйте моему ответу на SO.

 3
Author: Ivan Chepurnyi, 2017-05-23 12:37:16