/** * Refund money * * @param Varien_Object $invoicePayment * @return Mage_GoogleCheckout_Model_Payment */ public function refund(Varien_Object $payment, $amount) { $transactionId = $payment->getAdditionalInformation('sofort_transaction'); $order = $payment->getOrder(); if (!empty($transactionId)) { $PnagInvoice = new PnagInvoice(Mage::getStoreConfig('payment/sofort/configkey'), $transactionId); $PnagInvoice->cancelInvoice($transactionId); if ($PnagInvoice->isError()) { Mage::throwException($PnagInvoice->getError()); } else { $payment->setTransactionId($transactionId . '-refund')->setShouldCloseParentTransaction(true)->setIsTransactionClosed(0); $order->addStatusHistoryComment(Mage::helper('pnsofortueberweisung')->__('The invoice has been canceled.'))->setIsVisibleOnFront(true); $order->save(); Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('pnsofortueberweisung')->__('Successfully canceled invoice. Credit memo created: %s', $transactionId)); return $this; } } Mage::getSingleton('adminhtml/session')->addError(Mage::helper('pnsofortueberweisung')->__('Could not cancel invoice.')); return $this; }
$_POST['sofort_action'] = 'sofort_buttons'; $_POST['sofort_button'] = 'cancel'; } if ($_POST['sofort_action'] == 'sofort_buttons') { switch ($_POST['sofort_button']) { case 'invoice': case 'preview': case 'credit': $PnagInvoice->getInvoice(); break; case 'confirm': $errors = $PnagInvoice->confirmInvoice(); $warnings = $PnagInvoice->getWarnings(); break; case 'cancel': $errors = $PnagInvoice->cancelInvoice(); $warnings = $PnagInvoice->getWarnings(); break; default: break; } $errorCodes = ""; $successCodes = ""; if ($errors) { $errorCodes .= "<div class='sofort_error'>"; foreach ($errors as $oneError) { if (defined('MODULE_PAYMENT_SOFORT_MULTIPAY_XML_FAULT_' . $oneError['code'])) { $errorCodes .= constant('MODULE_PAYMENT_SOFORT_MULTIPAY_XML_FAULT_' . $oneError['code']) . "<br/>"; } else { $errorCodes .= MODULE_PAYMENT_SOFORT_MULTIPAY_XML_FAULT_0 . "<br/>"; }
$PnagInvoice->setReason('Invoice', 'Invoice'); $PnagInvoice->setEmailCustomer('*****@*****.**'); $PnagInvoice->addItemToInvoice(md5('unique'), 'Art01', 'a simple title', 1.2, 0, 'a simple description', 6, 19); $PnagInvoice->setAbortUrl('http://127.0.0.1'); $PnagInvoice->setSuccessUrl('http://127.0.0.1'); $PnagInvoice->setTimeoutUrl('http://127.0.0.1'); $PnagInvoice->setNotificationUrl('http://127.0.0.1'); try { $err = $PnagInvoice->checkout(); getWebPage($PnagInvoice->getPaymentUrl()); } catch (XmlToArrayException $e) { } $transactionId = $PnagInvoice->getTransactionId(); $PnagInvoice = new PnagInvoice(CONFIGKEY, $transactionId); $creditNoteNumber = '13214'; $PnagInvoice->cancelInvoice($transactionId, $creditNoteNumber); /** * Get a web file (HTML, XHTML, XML, image, etc.) from a URL. Return an * array containing the HTTP server response header fields and content. */ function getWebPage($url) { $options = array(CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_ENCODING => "", CURLOPT_USERAGENT => "sofort example", CURLOPT_AUTOREFERER => true, CURLOPT_CONNECTTIMEOUT => 120, CURLOPT_TIMEOUT => 120, CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYPEER => false); $ch = curl_init($url); curl_setopt_array($ch, $options); $content = curl_exec($ch); $err = curl_errno($ch); $errmsg = curl_error($ch); $header = curl_getinfo($ch); curl_close($ch); $header['errno'] = $err;
/** * cancel PNAG invoice * * @param Varien_Event_Observer $observer * @return $this */ public function sales_order_payment_cancel($observer) { // dont trigger if we are notifyed if (!empty($GLOBALS['isNotificationAction'])) { return $this; } //get payment $payment = $observer->getEvent()->getPayment(); $method = $payment->getMethod(); if ($method != 'sofortrechnung') { return $this; } $transactionId = $payment->getAdditionalInformation('sofort_transaction'); if (!empty($transactionId)) { $PnagInvoice = new PnagInvoice(Mage::getStoreConfig('payment/sofort/configkey'), $transactionId); if ($PnagInvoice->getStatus() != 'loss') { $PnagInvoice->cancelInvoice($transactionId); } if ($PnagInvoice->isError()) { Mage::throwException($PnagInvoice->getError()); } else { Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('pnsofortueberweisung')->__('Successfully canceled invoice: %s', $transactionId)); return $this; } } Mage::getSingleton('adminhtml/session')->addError(Mage::helper('pnsofortueberweisung')->__('Could not cancel invoice.')); return $this; }