protected function checkConsumerScore($request) { include_once 'Controllers/Frontend/PaymentBuiswPaymentPayone.php'; $return = new stdClass(); $user = Shopware()->System()->sMODULES['sAdmin']->sGetUserData(); $languangeSql = 'SELECT `locale` FROM s_core_locales WHERE id = ' .(int) $user['additional']['user']['language']; $userLanguage = Shopware()->Db()->fetchOne($languangeSql); $tmpLang = explode('_', $userLanguage); $userLanguage = $tmpLang[0]; $customerLang = $userLanguage; $user = $user['billingaddress']; $user_id = $user['id']; $expireDays = Shopware_Controllers_Backend_BuiswPaymentPayone::Config('bonitaets_lifetime'); $boniType = Shopware_Controllers_Backend_BuiswPaymentPayone::Config('bonitaets_type'); $mode = Shopware_Controllers_Backend_BuiswPaymentPayone::Config('bonitaets_mode'); $defaultScoring = Shopware_Controllers_Backend_BuiswPaymentPayone::Config('bonitaets_defaultindex'); $minBasketValue = Shopware_Controllers_Backend_BuiswPaymentPayone::Config('bonitaets_minbasketvalue'); $basket = Shopware()->Modules()->Basket()->sGetBasket(); $basketValue = $basket['AmountNumeric']; // if bonicheck deactivated or min basket value not reached, return false if ($boniType == "NO" || $basketValue < $minBasketValue) { $return->status = false; return $return; } else $return->status = true; // get loaded scoring key $scoringKey = ($boniType == 'IB') ? 'infoscore' : 'ampelwert'; if (!$expireDays) $expireDays = 1; if (!$defaultScoring) $defaultScoring = 350; // select user scoring from db within the configured expire days $sql = 'SELECT ' . $scoringKey . ' FROM s_bui_plg_payone_boni_users WHERE user_id=? AND type=? AND DATE_SUB(CURDATE(),INTERVAL ? DAY) <= date'; $userScoring = Shopware()->Db()->fetchOne($sql,array($user_id, $boniType, $expireDays)); // return stored user scoring if ($userScoring != "") { $return->$scoringKey = $userScoring; return $return; } $countryBillingSQL = "SELECT countryiso FROM s_core_countries WHERE id=" . $user['countryID']; $countryBilling = Shopware()->Db()->fetchOne($countryBillingSQL); $err = false; $apilogid = null; $params = Shopware_Controllers_Frontend_PaymentBuiswPaymentPayone::createFundamentalParams($mode); $params['request'] = "consumerscore"; $params['addresschecktype'] = "NO"; $params['consumerscoretype'] = $boniType; $params['firstname'] = $user['firstname']; $params['lastname'] = $user['lastname']; if ($user['company']) $params['company'] = $user['company']; $params['street'] = $user['street'] . " " . $user['streetnumber']; $params['zip'] = $user['zipcode']; $params['city'] = $user['city']; $params['country'] = $countryBilling; $params['telephonenumber'] = $user['phone']; $params['birthday'] = date("Ymd", strtotime($user['birthday'])); $params['language'] = $customerLang; if ((int) $params['birthday'] < 0) unset($params['birthday']); ksort($params); $response = Shopware_Controllers_Frontend_PaymentBuiswPaymentPayone::curlCallAndApiLog($params, $err, $apilogid); $table = new payone_BoniUsers(); $count = $table->count("where user_id=" . $user['id']); // if error occur or address not found, return default score if ($response['status'] == "ERROR" || $response['status'] == "INVALID") { $data = array ("infoscore" => $defaultScoring, "user_id" => $user['id'], "type" => $boniType, "date" => date("Y-m-d")); if ($count == 0) $table->insert($data); else $table->update($data, "user_id=" . $user['id']); $_SESSION['boni_proved']->infoscore = $defaultScoring; $return->infoscore = $defaultScoring; return $return; } if ($boniType == 'IB' && $response['score'] == "G") $response['scorevalue'] = 550; $data = array ("ampelwert" => $response['score'], "infoscore" => $response['scorevalue'], "user_id" => $user['id'], "type" => $boniType, "date" => date("Y-m-d")); if ($count == 0) $table->insert($data); else $table->update($data, "user_id=" . $user['id']); $return->ampelwert = $response['score']; $return->infoscore = $response['scorevalue']; $_SESSION['boni_proved'] = $return; return $return; }
public function refundAmountAction() { Shopware()->Plugins()->Controller()->ViewRenderer()->setNoRender(); $return = new stdClass(); $amount = $this->checkAmmount ($this->Request()->getParam('amount')); if (is_object ($amount)) { echo json_encode($amount); exit (0); } $order_number = (int) $this->Request()->getParam('oID'); $row = Shopware()->Db()->fetchRow('select transactionID,userID from s_order where ordernumber="' . $order_number . '"'); $txid = $row['transactionID']; //$uid = Shopware()->Session()->sUserId = $row['userID']; try { require_once dirname(__FILE__).'/../Frontend/PaymentBuiswPaymentPayone.php'; $translog = new payone_TransactionLogs(); $s = $translog->select()->columns(array ('id','api_log_id','amount','currency', 'mode', 'data_array')); $s->where('transaction_no=?', $txid); $transLogEntry = $translog->fetchRow($s); $mode = $transLogEntry['mode']; $captureAndRefund = new payone_CaptureAndRefund(); $nextSequenceNumber = $captureAndRefund->nextSequenceNumber($txid); $params = Shopware_Controllers_Frontend_PaymentBuiswPaymentPayone::createFundamentalParams($mode == 'l' ? 'live' : 'test'); // $params['request'] = 'refund'; $params['request'] = 'debit'; $params['txid'] = $txid; $amount = -1 * $amount; $params['amount'] = $amount; $params['sequencenumber'] = $nextSequenceNumber; $params['currency'] = $transLogEntry['currency']; $err = false; $apilogid = null; $response = Shopware_Controllers_Frontend_PaymentBuiswPaymentPayone::curlCallAndApiLog($params, $err, $apilogid); if ($err) { $return->error = 'technical problems: ' . $response[0]; echo json_encode ($return); exit (0); } if ($response['status'] == 'ERROR') { $return->error = 'error (' . $response['errorcode'] . ') ' . $response['errormessage']; echo json_encode ($return); exit (0); } // erst ab hier ist alles erstmal ok. $captureAndRefund->log ($txid, $nextSequenceNumber, $amount,$apilogid); } catch (Exception $e) { $return->error = 'technical problems: ' . $e->getMessage(); echo json_encode ($return); exit (0); } echo json_encode($return); }