Пример #1
0
	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;
	}
Пример #2
0
	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);
	}