Magento – Payment failed / Zahlung fehlgeschlagen Mails deaktivieren

Im Zusammenhang mit einem Kundenprojekt haben wir das Magento-System so umgebaut, dass es sich optimal als Gewinnspiel-Seite eignet. Bei diesem muss im Falle eines Sachpreises die Versandadresse sowie ein Foto-Upload eingegeben und hochgeladen werden.

Nun hatten wir das Problem, dass Magento jedes Mal, wenn ein Nutzer keinen Upload oder ein falsches Format hochladen wollte (zwar eine Fehler-Meldung auf der Seite kam aber auch) eine Mail aus dem System verschickt wurde, dass die Zahlung fehlgeschlagen ist.

Bild

Generell ist hierfür die Einstellung unter System > Konfiguration > Verkäufe / Zur Kasse und dort bei “E-Mails bei fehlgeschlagener Zahlung” zuständig. Hier könnte man auf die Idee kommen, dass keine Mail verschickt wird, wenn man das Feld mit der Adresse einfach leer lässt – denkste! Wenn man sich die Bezeichnung der Felder anschaut, sieht man, dass dort etwas von Kopie steht. Die “Zahlung fehlgeschlagen”-Mail wird nämlich IMMER an die im System hinterlegte Kontakt-Mail-Adresse geschickt und kann dann noch ZUSÄTZLICH an die hier zu hinterlegende Mail verschickt werden (daher auch die letzte Einstellung “Bcc / Separate Mail”).

Wenn man nun also KEINE -und ich meine KEINE- “Zahlung fehlgeschlagen”-Mail mehr haben möchte, kann man dies auf verschiedene Arten erreichen.

Man kann sich einen Rewrite für app/code/core/Mage/Checkout/Helper/Data.php schreiben und dort im Speziellen für

public function sendPaymentFailedEmail($checkout, $message, $checkoutType = 'onepage')

Dies wäre wohl besser als einfach nur den Part

public function sendPaymentFailedEmail($checkout, $message, $checkoutType = 'onepage')
{
$translate = Mage::getSingleton('core/translate');
/* @var $translate Mage_Core_Model_Translate */
$translate->setTranslateInline(false);

$mailTemplate = Mage::getModel('core/email_template');
/* @var $mailTemplate Mage_Core_Model_Email_Template */

$template = Mage::getStoreConfig('checkout/payment_failed/template', $checkout->getStoreId());

$copyTo = $this->_getEmails('checkout/payment_failed/copy_to', $checkout->getStoreId());
$copyMethod = Mage::getStoreConfig('checkout/payment_failed/copy_method', $checkout->getStoreId());
if ($copyTo && $copyMethod == 'bcc') {
$mailTemplate->addBcc($copyTo);
}

$_reciever = Mage::getStoreConfig('checkout/payment_failed/reciever', $checkout->getStoreId());
$sendTo = array(
array(
'email' => Mage::getStoreConfig('trans_email/ident_'.$_reciever.'/email', $checkout->getStoreId()),
'name' => Mage::getStoreConfig('trans_email/ident_'.$_reciever.'/name', $checkout->getStoreId())
)
);

if ($copyTo && $copyMethod == 'copy') {
foreach ($copyTo as $email) {
$sendTo[] = array(
'email' => $email,
'name' => null
);
}
}
$shippingMethod = '';
if ($shippingInfo = $checkout->getShippingAddress()->getShippingMethod()) {
$data = explode('_', $shippingInfo);
$shippingMethod = $data[0];
}

$paymentMethod = '';
if ($paymentInfo = $checkout->getPayment()) {
$paymentMethod = $paymentInfo->getMethod();
}

$items = '';
foreach ($checkout->getAllVisibleItems() as $_item) {
/* @var $_item Mage_Sales_Model_Quote_Item */
$items .= $_item->getProduct()->getName() . ' x '. $_item->getQty() . ' '
. $checkout->getStoreCurrencyCode() . ' '
. $_item->getProduct()->getFinalPrice($_item->getQty()) . "\n";
}
$total = $checkout->getStoreCurrencyCode() . ' ' . $checkout->getGrandTotal();

foreach ($sendTo as $recipient) {
$mailTemplate->setDesignConfig(array('area'=>'frontend', 'store'=>$checkout->getStoreId()))
->sendTransactional(
$template,
Mage::getStoreConfig('checkout/payment_failed/identity', $checkout->getStoreId()),
$recipient['email'],
$recipient['name'],
array(
'reason' => $message,
'checkoutType' => $checkoutType,
'dateAndTime' => Mage::app()->getLocale()->date(),
'customer' => Mage::helper('customer')->getFullCustomerName($checkout),
'customerEmail' => $checkout->getCustomerEmail(),
'billingAddress' => $checkout->getBillingAddress(),
'shippingAddress' => $checkout->getShippingAddress(),
'shippingMethod' => Mage::getStoreConfig('carriers/' . $shippingMethod . '/title'),
'paymentMethod' => Mage::getStoreConfig('payment/' . $paymentMethod . '/title'),
'items' => nl2br($items),
'total' => $total,
)
);
}

$translate->setTranslateInline(true);

return $this;
}

durch

public function sendPaymentFailedEmail($checkout, $message, $checkoutType = 'onepage')
{
return $this;
}

zu ersetzen.

Würde aber auch funktionieren 😉 Es kann jedoch sein, dass sich das System trotzdem in der exception.log beschwert. Aber Mails kommen keine mehr bzgl. “Zahlung fehlgeschlagen”.

Verwendet in Magento 1.9.4.0

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

Leave a Reply

Your email address will not be published. Required fields are marked *