public function loadPost() { $result = new \Icepay_Postback(); $result->setMerchantID((string) $this->merchantId)->setSecretCode((string) $this->secretCode); try { if ($result->validate()) { $this->status = new ResponseStatus($result->getStatus()); $this->statusDescription = $result->getPostback()->statusCode; $this->orderId = $result->getOrderID(); $this->parameters = (array) $result->getPostback(); } else { throw new InvalidResponseException('Could not verify post response data'); } } catch (\Exception $e) { throw new ApiException('There was a problem validating the post response', 0, $e); } }
$Modules = new Modules(); } $Checkout = Checkout::instance(false); $temp_data = $Checkout->get_all_data_from_temp_db($temp_orders_id); //get all orders data $icepay = new Icepay_Postback(); $icepay->setMerchantID($Icepay->instances[$temp_data[$temp_orders_id]['orders']['payment_method']]['merchant_id'])->setSecretCode($Icepay->instances[$temp_data[$temp_orders_id]['orders']['payment_method']]['secret_code'])->enableLogging()->logToFile(true, realpath("../logs"))->logToScreen(); $data = ''; foreach ($_POST as $key => $value) { $data .= $key . ': ' . "\n"; $data .= $value . "\n\n"; } tep_db_query('INSERT INTO payment_log (type, data, date) VALUES ("Icepay", "' . $data . '", NOW())'); tep_db_query('DELETE FROM payment_log WHERE date < DATE_SUB(NOW(), INTERVAL 30 DAY)'); try { if ($icepay->validate()) { if ($temp_data[$temp_orders_id]['orders']['processed_order_id'] > 0) { //Update order status switch ($icepay->getStatus()) { case Icepay_StatusCode::OPEN: //do nothing break; case Icepay_StatusCode::SUCCESS: tep_db_query('UPDATE orders SET orders_status = 2 WHERE orders_id = "' . $temp_data[$temp_orders_id]['orders']['processed_order_id'] . '"'); Checkout::send_order_error_mail(Translate('Icepay betaling is goedgekeurd voor weborder') . ': ' . $temp_data[$temp_orders_id]['orders']['processed_order_id'], sprintf(Translate('De betaling voor weborder %s is goedgekeurd door Icepay.'), $temp_data[$temp_orders_id]['orders']['processed_order_id'])); break; case Icepay_StatusCode::ERROR: //Redirect to cart tep_db_query('UPDATE orders SET orders_status = 53 WHERE orders_id = "' . $temp_data[$temp_orders_id]['orders']['processed_order_id'] . '"'); Checkout::send_order_error_mail(Translate('Ongeldige Icepay betaling voor weborder') . ': ' . $temp_data[$temp_orders_id]['orders']['processed_order_id'], sprintf(Translate('De betaling voor weborder %s is ongeldig verklaard door Icepay.'), $temp_data[$temp_orders_id]['orders']['processed_order_id'])); break;
public function postback() { $logger = OW::getLogger('ocsbillingicepay'); $logger->addEntry(print_r($_REQUEST, true), 'postback.data-array'); if (empty($_REQUEST['Reference'])) { $logger->addEntry("Empty reference", 'postback.reference'); $logger->writeLog(); exit; } require_once OW::getPluginManager()->getPlugin('ocsbillingicepay')->getClassesDir() . 'api' . DS . 'icepay_api_basic.php'; $gwKey = OCSBILLINGICEPAY_CLASS_IcepayAdapter::GATEWAY_KEY; $billingService = BOL_BillingService::getInstance(); $merchantId = $billingService->getGatewayConfigValue($gwKey, 'merchantId'); $encryptionCode = $billingService->getGatewayConfigValue($gwKey, 'encryptionCode'); $icepay = new Icepay_Postback(); $icepay->setMerchantID($merchantId)->setSecretCode($encryptionCode)->doIPCheck(); try { if ($icepay->validate()) { $hash = trim($_REQUEST['Reference']); $transId = trim($_REQUEST['TransactionID']); $sale = $billingService->getSaleByHash($hash); if (!$sale || !mb_strlen($transId)) { $logger->addEntry("Sale not found", 'postback.sale'); $logger->writeLog(); exit; } $adapter = new OCSBILLINGICEPAY_CLASS_IcepayAdapter(); if (!$billingService->saleDelivered($transId, $sale->gatewayId)) { $sale->transactionUid = $transId; if ($billingService->verifySale($adapter, $sale)) { $sale = $billingService->getSaleById($sale->id); $productAdapter = $billingService->getProductAdapter($sale->entityKey); if ($productAdapter) { $billingService->deliverSale($productAdapter, $sale); } } } $logger->addEntry("Validated!", 'validate-status'); } else { $logger->addEntry("Unable to validate postback data", 'validate-status'); } } catch (Exception $e) { $logger->addEntry($e->getMessage(), 'validate-exception'); } $logger->writeLog(); exit; }
/** * Do the postback validation and finish payment * @return bool|\Icepay_Postback */ public function doPostback() { try { $postback = new \Icepay_Postback(); $postback->setMerchantID($this->merchantID)->setSecretCode($this->secretCode)->doIPCheck(); if ($postback->validate() && $postback->getStatus() == \Icepay_StatusCode::SUCCESS) { return $postback; } } catch (\Exception $e) { \Yii::error($e->getMessage()); } return false; }