/** * Tests Services_Paymill_Refunds->create() * @depends testRefundWithLessAmount */ public function testRefundRestfromLastTest($transactionId) { $params = array('transactionId' => $transactionId, 'params' => array('amount' => 1000)); $refund = $this->_refunds->create($params); $this->assertEquals($refund['data']['transaction']['id'], $transactionId); $this->assertEquals($refund['data']['transaction']['amount'], 0); $this->assertEquals($refund['data']['transaction']['status'], 'refunded'); }
private function proceedRefund($transactionId) { $result = false; $this->init(); $this->load->model('sale/order'); $orderId = $this->getPost('orderId', 0); $transaction = $this->paymillTransaction->getOne($transactionId); $this->log('Transaction used for Refund', var_export($transaction, true)); if (is_array($transaction)) { try { $result = $this->paymillRefund->create(array('transactionId' => $transactionId, 'params' => array('amount' => $transaction['origin_amount']))); $this->log('Refund resulted in', var_export($result, true)); $this->log('Refund successfully', $transaction['id']); $orderStatusId = $this->db->query('SELECT `order_status_id` FROM `' . DB_PREFIX . 'order_status` WHERE `name`= "Refunded"')->row['order_status_id']; $this->model_sale_order->addOrderHistory($orderId, array('order_status_id' => $orderStatusId, 'notify' => true, 'comment' => '')); } catch (Exception $ex) { $result = false; } } return $result; }
/** * Creates a refund from the ordernumber passed as an argument * @param Mage_Sales_Model_Order_Refund $creditmemo * @return boolean Indicator of success */ public function createRefund($creditmemo, $payment) { //Gather Data try { $refundsObject = new Services_Paymill_Refunds(Mage::helper('paymill/optionHelper')->getPrivateKey(), Mage::helper('paymill')->getApiUrl()); } catch (Exception $ex) { Mage::helper('paymill/loggingHelper')->log("No Refund created due to illegal parameters.", $ex->getMessage()); return false; } //Create Refund $params = array('transactionId' => $payment->getAdditionalInformation('paymillTransactionId'), 'source' => Mage::helper('paymill')->getSourceString(), 'params' => array('amount' => (int) Mage::helper("paymill/paymentHelper")->getAmount($creditmemo))); Mage::helper('paymill/loggingHelper')->log("Try to refund.", var_export($params, true)); try { $refund = $refundsObject->create($params); } catch (Exception $ex) { Mage::helper('paymill/loggingHelper')->log("No Refund created.", $ex->getMessage(), var_export($params, true)); return false; } //Validate Refund and return feedback return $this->validateRefund($refund); }
/** * Refund the selected paymill transaction */ public function refundTransaction() { $oxOrder = $this->getEditObject(); $transaction = oxNew('paymill_transaction'); $transaction->load($this->getEditObjectId()); //Create Refund $params = array('transactionId' => $transaction->paymill_transaction__transaction_id->rawValue, 'params' => array('amount' => (int) ($this->_getRefundAmount() * 100))); $refundsObject = new Services_Paymill_Refunds(trim(oxRegistry::getConfig()->getShopConfVar('PAYMILL_PRIVATEKEY')), paymill_util::API_ENDPOINT); oxRegistry::getSession()->setVariable('refund', true); try { $refund = $refundsObject->create($params); } catch (Exception $ex) { } if (isset($refund['response_code']) && $refund['response_code'] == 20000) { $oxOrder->assign(array('oxorder__oxdiscount' => $this->_getRefundAmount())); $oxOrder->reloadDiscount(false); $oxOrder->recalculateOrder(); oxRegistry::getSession()->setVariable('success', true); } else { oxRegistry::getSession()->setVariable('error', true); } }
<?php require_once 'includes/application_top.php'; require_once DIR_WS_CLASSES . 'order.php'; require_once dirname(__FILE__) . '/../ext/modules/payment/paymill/lib/Services/Paymill/Refunds.php'; if (isset($_GET['oID']) && !empty($_GET['oID'])) { $order = new order($_GET['oID']); $transaction = tep_db_fetch_array(tep_db_query("SELECT * FROM pi_paymill_transaction WHERE order_id = '" . $_GET['oID'] . "'")); require_once dirname(__FILE__) . '/../includes/modules/payment/' . $transaction['payment_code'] . '.php'; include dirname(__FILE__) . '/../includes/languages/' . $_SESSION['language'] . '/modules/payment/' . $transaction['payment_code'] . '.php'; $payment = new $transaction['payment_code'](); //Create Refund $params = array('transactionId' => $transaction['transaction_id'], 'source' => $payment->version . '_' . str_replace(' ', '_', PROJECT_VERSION), 'params' => array('amount' => $transaction['amount'])); $refundsObject = new Services_Paymill_Refunds($payment->privateKey, $payment->apiUrl); $error = ''; try { $refund = $refundsObject->create($params); } catch (Exception $ex) { $error = $ex->getMessage(); } if (isset($refund['response_code']) && $refund['response_code'] == 20000) { $statusArray = tep_db_fetch_array(tep_db_query("select orders_status_id from " . TABLE_ORDERS_STATUS . " where orders_status_name = 'Paymill [Refund]' limit 1")); tep_db_query("UPDATE " . TABLE_ORDERS . " SET orders_status='" . $statusArray['orders_status_id'] . "' WHERE orders_id='" . $_GET['oID'] . "'"); $messageStack->add_session(PAYMILL_REFUND_SUCCESS, 'success'); } else { $messageStack->add_session(PAYMILL_REFUND_ERROR, 'error'); } } tep_redirect(tep_href_link(FILENAME_ORDERS, 'oID=' . $_GET['oID'] . '&action=edit', true, false));
/** * Action Listener to execute the capture for applicable transactions * */ public function refundAction() { $result = false; $code = null; require_once dirname(__FILE__) . '/../../lib/Services/Paymill/Transactions.php'; require_once dirname(__FILE__) . '/../../lib/Services/Paymill/Refunds.php'; $swConfig = Shopware()->Plugins()->Frontend()->PaymPaymentCreditcard()->Config(); $refund = new Services_Paymill_Refunds(trim($swConfig->get("privateKey")), 'https://api.paymill.com/v2/'); $transactionObject = new Services_Paymill_Transactions(trim($swConfig->get("privateKey")), 'https://api.paymill.com/v2/'); $modelHelper = new Shopware_Plugins_Frontend_PaymPaymentCreditcard_Components_ModelHelper(); $orderNumber = $modelHelper->getOrderNumberById($this->Request()->getParam("orderId")); $transactionId = $modelHelper->getPaymillTransactionId($orderNumber); $transactionResult = $transactionObject->getOne($transactionId); //Create Transaction $parameter = array('transactionId' => $transactionId, 'params' => array('amount' => $transactionResult['amount'], 'description' => $transactionResult['client']['email'] . " " . Shopware()->Config()->get('shopname'))); $response = $refund->create($parameter); if (isset($response['response_code'])) { $code = $response['response_code']; } //Validate result and prepare feedback if ($this->_validateRefundResponse($response)) { $result = true; $modelHelper->setPaymillRefund($orderNumber, $response['id']); $this->_updatePaymentStatus(20, $this->Request()->getParam("orderId")); } $this->View()->assign(array('success' => $result, 'code' => $code)); }