diff --git a/catalog/controller/extension/payment/wirecard.php b/catalog/controller/extension/payment/wirecard.php index 2286bec..5f154b6 100644 --- a/catalog/controller/extension/payment/wirecard.php +++ b/catalog/controller/extension/payment/wirecard.php @@ -43,7 +43,7 @@ class ControllerExtensionPaymentWirecard extends Controller { protected $data = array(); - private $pluginVersion = '1.3.0'; + private $pluginVersion = '1.4.0'; private $prefix = 'wirecard'; diff --git a/catalog/model/extension/payment/wirecard.php b/catalog/model/extension/payment/wirecard.php index f79f3cd..a257019 100644 --- a/catalog/model/extension/payment/wirecard.php +++ b/catalog/model/extension/payment/wirecard.php @@ -214,14 +214,18 @@ public function send_request($prefix, $paymentType, $order, $birthday, $plugin_v { $fields = $this->get_config($prefix); try { + $language_info = $order['language_code']; //languagecode is like 'en-gb' but should be 'en' - $language_info = explode('-', $order['language_code']); + if (strpos($language_info, '-') !== false) { + $language_info = explode('-', $language_info); + $language_info = $language_info[0]; + } $client = new WirecardCEE_QPay_FrontendClient(array( 'CUSTOMER_ID' => $fields['customerId'], 'SHOP_ID' => $fields['shopId'], 'SECRET' => $fields['secret'], - 'LANGUAGE' => $language_info[0] + 'LANGUAGE' => $language_info )); // consumer data (IP and User agent) are mandatory! @@ -259,6 +263,7 @@ public function send_request($prefix, $paymentType, $order, $birthday, $plugin_v ->setServiceUrl($fields['serviceUrl']) ->setImageUrl($fields['imageURL']) ->setConsumerData($consumerData) + ->createConsumerMerchantCrmId($order['email']) ->setDisplayText($fields['displayText']) ->setCustomerStatement($this->get_customer_statement($order)) ->setDuplicateRequestCheck(false) diff --git a/system/library/wirecard/WirecardCEE/QPay/Config/client.config.php b/system/library/wirecard/WirecardCEE/QPay/Config/client.config.php index 22d9c04..e6c83ca 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Config/client.config.php +++ b/system/library/wirecard/WirecardCEE/QPay/Config/client.config.php @@ -1,24 +1,47 @@ 'https://checkout.wirecard.com/page/init-server.php', - 'TOOLKIT_URL' => 'https://checkout.wirecard.com/page/toolkit.php', - 'MODULE_NAME' => 'WirecardCEE_Checkout_Page', - 'MODULE_VERSION' => '3.0.0', - 'DEPENDENCIES' => Array( - 'FRAMEWORK_NAME' => 'Zend_Framework', - 'FRAMEWORK_VERSION' => Array( - 'MINIMUM' => '1.11.10', - 'CURRENT' => Zend_Version::VERSION - ), + 'FRONTEND_URL' => 'https://checkout.wirecard.com/page/init-server.php', + 'TOOLKIT_URL' => 'https://checkout.wirecard.com/page/toolkit.php', + 'MODULE_NAME' => 'WirecardCEE_QPay', + 'MODULE_VERSION' => '3.3.0', + 'DEPENDENCIES' => Array( + 'FRAMEWORK_NAME' => 'Zend_Framework', + 'FRAMEWORK_VERSION' => Array( + 'MINIMUM' => '1.11.10', + 'CURRENT' => Zend_Version::VERSION ), - 'USE_DEBUG' => FALSE -); + ), + 'USE_DEBUG' => false +); \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Config/user.config.php b/system/library/wirecard/WirecardCEE/QPay/Config/user.config.php index 5776172..cf337e2 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Config/user.config.php +++ b/system/library/wirecard/WirecardCEE/QPay/Config/user.config.php @@ -1,13 +1,35 @@ Array( - 'CUSTOMER_ID' => 'D200001', - 'SHOP_ID' => '', - 'SECRET' => 'B8AKTPWBRMNBV455FG6M2DANE99WU2', - 'SERVICE_URL' => 'https://checkout.wirecard.com/page/init.php', - 'LANGUAGE' => 'en', - 'TOOLKIT_PASSWORD' => 'jcv45z' - ) + 'WirecardCEEQPayConfig' => Array( + 'CUSTOMER_ID' => 'D200001', + 'SHOP_ID' => '', + 'SECRET' => 'B8AKTPWBRMNBV455FG6M2DANE99WU2', + 'LANGUAGE' => 'en', + 'TOOLKIT_PASSWORD' => 'jcv45z' + ) ); \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Error.php b/system/library/wirecard/WirecardCEE/QPay/Error.php index 8fedc59..8ee20fe 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Error.php +++ b/system/library/wirecard/WirecardCEE/QPay/Error.php @@ -1,27 +1,51 @@ setMessage($message); } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Exception/BadMethodCallException.php b/system/library/wirecard/WirecardCEE/QPay/Exception/BadMethodCallException.php index 248e377..85cd533 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Exception/BadMethodCallException.php +++ b/system/library/wirecard/WirecardCEE/QPay/Exception/BadMethodCallException.php @@ -1,18 +1,42 @@ _fingerprintOrder = new WirecardCEE_Stdlib_FingerprintOrder(); - //if no config was sent fallback to default config file if (is_null($aConfig)) { $aConfig = WirecardCEE_QPay_Module::getConfig(); } - if (isset($aConfig['WirecardCEEQPayConfig'])) { + if (isset( $aConfig['WirecardCEEQPayConfig'] )) { //we only need the WirecardCEEQPayConfig here $aConfig = $aConfig['WirecardCEEQPayConfig']; } //let's store configuration details in internal objects - $this->oUserConfig = new Zend_Config($aConfig); - $this->oClientConfig = new Zend_Config(WirecardCEE_QPay_Module::getClientConfig()); - - self::$FRAMEWORK_NAME = $this->getClientConfig()->DEPENDENCIES->FRAMEWORK_NAME; + $this->oUserConfig = new WirecardCEE_Stdlib_Config($aConfig); + $this->oClientConfig = new WirecardCEE_Stdlib_Config(WirecardCEE_QPay_Module::getClientConfig()); //now let's check if the CUSTOMER_ID, SHOP_ID, LANGUAGE and SECRET exist in $this->oUserConfig object that we created from config array - $sCustomerId = isset($this->oUserConfig->CUSTOMER_ID) ? trim($this->oUserConfig->CUSTOMER_ID) : null; - $sShopId = isset($this->oUserConfig->SHOP_ID) ? trim($this->oUserConfig->SHOP_ID) : null; - $sLanguage = isset($this->oUserConfig->LANGUAGE) ? trim($this->oUserConfig->LANGUAGE) : null; - $sSecret = isset($this->oUserConfig->SECRET) ? trim($this->oUserConfig->SECRET) : null; + $sCustomerId = isset( $this->oUserConfig->CUSTOMER_ID ) ? trim($this->oUserConfig->CUSTOMER_ID) : null; + $sShopId = isset( $this->oUserConfig->SHOP_ID ) ? trim($this->oUserConfig->SHOP_ID) : null; + $sLanguage = isset( $this->oUserConfig->LANGUAGE ) ? trim($this->oUserConfig->LANGUAGE) : null; + $sSecret = isset( $this->oUserConfig->SECRET ) ? trim($this->oUserConfig->SECRET) : null; //If not throw the InvalidArgumentException exception! - if (empty($sCustomerId) || is_null($sCustomerId)) { - throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('CUSTOMER_ID passed to %s is invalid.', __METHOD__)); + if (empty( $sCustomerId ) || is_null($sCustomerId)) { + throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('CUSTOMER_ID passed to %s is invalid.', + __METHOD__)); } - if (empty($sLanguage) || is_null($sLanguage)) { - throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('LANGUAGE passed to %s is invalid.', __METHOD__)); + if (empty( $sLanguage ) || is_null($sLanguage)) { + throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('LANGUAGE passed to %s is invalid.', + __METHOD__)); } - if (empty($sSecret) || is_null($sSecret)) { - throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('SECRET passed to %s is invalid.', __METHOD__)); + if (empty( $sSecret ) || is_null($sSecret)) { + throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('SECRET passed to %s is invalid.', + __METHOD__)); } - // we're using md5 for hash-ing - WirecardCEE_Stdlib_Fingerprint::setHashAlgorithm(WirecardCEE_Stdlib_Fingerprint::HASH_ALGORITHM_MD5); + // we're using hmac sha512 for hash-ing + WirecardCEE_Stdlib_Fingerprint::setHashAlgorithm(WirecardCEE_Stdlib_Fingerprint::HASH_ALGORITHM_HMAC_SHA512); //everything ok! let's set the fields $this->_setField(self::CUSTOMER_ID, $sCustomerId); @@ -264,27 +309,48 @@ public function __construct(Array $aConfig = null) { * @throws WirecardCEE_QPay_Exception_InvalidArgumentException * @return WirecardCEE_QPay_Response_Initiation */ - public function initiate() { + public function initiate() + { //First let's check if all mandatory fields are set! If not add them to $aMissingFields Array Object $aMissingFields = new ArrayObject(); - if (!$this->_isFieldSet(self::AMOUNT)) $aMissingFields->append(self::AMOUNT); - if (!$this->_isFieldSet(self::PAYMENT_TYPE)) $aMissingFields->append(self::PAYMENT_TYPE); - if (!$this->_isFieldSet(self::ORDER_DESCRIPTION)) $aMissingFields->append(self::ORDER_DESCRIPTION); - if (!$this->_isFieldSet(self::SUCCESS_URL)) $aMissingFields->append(self::SUCCESS_URL); - if (!$this->_isFieldSet(self::CANCEL_URL)) $aMissingFields->append(self::CANCEL_URL); - if (!$this->_isFieldSet(self::FAILURE_URL)) $aMissingFields->append(self::FAILURE_URL); - if (!$this->_isFieldSet(self::SERVICE_URL)) $aMissingFields->append(self::SERVICE_URL); - if (!$this->_isFieldSet(self::CURRENCY)) $aMissingFields->append(self::CURRENCY); - if (!$this->_isFieldSet(self::LANGUAGE)) $aMissingFields->append(self::LANGUAGE); - if (!$this->_isConsumerDataValid()) $aMissingFields->append('Consumer IP Address, Consumer User Agent'); + if (!$this->_isFieldSet(self::AMOUNT)) { + $aMissingFields->append(self::AMOUNT); + } + if (!$this->_isFieldSet(self::PAYMENT_TYPE)) { + $aMissingFields->append(self::PAYMENT_TYPE); + } + if (!$this->_isFieldSet(self::ORDER_DESCRIPTION)) { + $aMissingFields->append(self::ORDER_DESCRIPTION); + } + if (!$this->_isFieldSet(self::SUCCESS_URL)) { + $aMissingFields->append(self::SUCCESS_URL); + } + if (!$this->_isFieldSet(self::CANCEL_URL)) { + $aMissingFields->append(self::CANCEL_URL); + } + if (!$this->_isFieldSet(self::FAILURE_URL)) { + $aMissingFields->append(self::FAILURE_URL); + } + if (!$this->_isFieldSet(self::SERVICE_URL)) { + $aMissingFields->append(self::SERVICE_URL); + } + if (!$this->_isFieldSet(self::CURRENCY)) { + $aMissingFields->append(self::CURRENCY); + } + if (!$this->_isFieldSet(self::LANGUAGE)) { + $aMissingFields->append(self::LANGUAGE); + } + if (!$this->_isConsumerDataValid()) { + $aMissingFields->append('Consumer IP Address, Consumer User Agent'); + } //Are there any errors in the $aMissingFields object? //If so throw the InvalidArgumentException and print all the fields that are missing! if ($aMissingFields->count()) { throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf( "Could not initiate QPay! Missing mandatory field(s): %s; thrown in %s; Please use the appropriate setter functions to set missing fields.", - implode(", ", (array)$aMissingFields), __METHOD__)); + implode(", ", (array) $aMissingFields), __METHOD__)); } //this is where the magic happens! We send our data to response object and hopefully get back the response object with 'redirectUrl'. @@ -299,11 +365,14 @@ public function initiate() { * Setter for amount * * @param int|float $amount + * * @return WirecardCEE_QPay_FrontendClient * @formatter:on */ - public function setAmount($amount) { + public function setAmount($amount) + { $this->_setField(self::AMOUNT, $amount); + return $this; } @@ -311,10 +380,13 @@ public function setAmount($amount) { * Setter for currency * * @param string $sCurrency + * * @return WirecardCEE_QPay_FrontendClient */ - public function setCurrency($sCurrency) { + public function setCurrency($sCurrency) + { $this->_setField(self::CURRENCY, $sCurrency); + return $this; } @@ -322,10 +394,13 @@ public function setCurrency($sCurrency) { * Setter for payment type * * @param string $sPaymentType + * * @return WirecardCEE_QPay_FrontendClient */ - public function setPaymentType($sPaymentType) { + public function setPaymentType($sPaymentType) + { $this->_setField(self::PAYMENT_TYPE, $sPaymentType); + return $this; } @@ -333,10 +408,13 @@ public function setPaymentType($sPaymentType) { * Setter for order description * * @param string $sDesc + * * @return WirecardCEE_QPay_FrontendClient */ - public function setOrderDescription($sDesc) { + public function setOrderDescription($sDesc) + { $this->_setField(self::ORDER_DESCRIPTION, $sDesc); + return $this; } @@ -344,10 +422,13 @@ public function setOrderDescription($sDesc) { * Setter for success url * * @param string $sUrl + * * @return WirecardCEE_QPay_FrontendClient */ - public function setSuccessUrl($sUrl) { + public function setSuccessUrl($sUrl) + { $this->_setField(self::SUCCESS_URL, $sUrl); + return $this; } @@ -355,10 +436,13 @@ public function setSuccessUrl($sUrl) { * Setter for cancel url * * @param string $sUrl + * * @return WirecardCEE_QPay_FrontendClient */ - public function setCancelUrl($sUrl) { + public function setCancelUrl($sUrl) + { $this->_setField(self::CANCEL_URL, $sUrl); + return $this; } @@ -366,10 +450,13 @@ public function setCancelUrl($sUrl) { * Setter for failure url * * @param string $sUrl + * * @return WirecardCEE_QPay_FrontendClient */ - public function setFailureUrl($sUrl) { + public function setFailureUrl($sUrl) + { $this->_setField(self::FAILURE_URL, $sUrl); + return $this; } @@ -377,10 +464,13 @@ public function setFailureUrl($sUrl) { * Setter for service url * * @param string $sUrl + * * @return WirecardCEE_QPay_FrontendClient */ - public function setServiceUrl($sUrl) { + public function setServiceUrl($sUrl) + { $this->_setField(self::SERVICE_URL, $sUrl); + return $this; } @@ -388,10 +478,13 @@ public function setServiceUrl($sUrl) { * setter for the QPay parameter pendingUrl * * @param string $pendingUrl - * @return WirecardCEE_QMore_FrontendClient + * + * @return WirecardCEE_QPay_FrontendClient */ - public function setPendingUrl($pendingUrl) { + public function setPendingUrl($pendingUrl) + { $this->_setField(self::PENDING_URL, $pendingUrl); + return $this; } @@ -400,10 +493,13 @@ public function setPendingUrl($pendingUrl) { * Only applicable if payment type is EPS or IDL (iDeal) * * @param string $financialInstitution + * * @return WirecardCEE_QPay_FrontendClient */ - public function setFinancialInstitution($financialInstitution) { + public function setFinancialInstitution($financialInstitution) + { $this->_setField(self::FINANCIAL_INSTITUTION, $financialInstitution); + return $this; } @@ -411,10 +507,13 @@ public function setFinancialInstitution($financialInstitution) { * setter for the qpay parameter displaytext * * @param string $displayText + * * @return WirecardCEE_QPay_FrontendClient */ - public function setDisplayText($displayText) { + public function setDisplayText($displayText) + { $this->_setField(self::DISPLAY_TEXT, $displayText); + return $this; } @@ -422,10 +521,13 @@ public function setDisplayText($displayText) { * setter for the qpay parameter confirmUrl * * @param string $confirmUrl + * * @return WirecardCEE_QPay_FrontendClient */ - public function setConfirmUrl($confirmUrl) { + public function setConfirmUrl($confirmUrl) + { $this->_setField(self::CONFIRM_URL, $confirmUrl); + return $this; } @@ -433,10 +535,13 @@ public function setConfirmUrl($confirmUrl) { * setter for the qpay parameter imageUrl * * @param string $imageUrl + * * @return WirecardCEE_QPay_FrontendClient */ - public function setImageUrl($imageUrl) { + public function setImageUrl($imageUrl) + { $this->_setField(self::IMAGE_URL, $imageUrl); + return $this; } @@ -444,10 +549,13 @@ public function setImageUrl($imageUrl) { * setter for the qpay parameter windowName * * @param string $windowName + * * @return WirecardCEE_QPay_FrontendClient */ - public function setWindowName($windowName) { + public function setWindowName($windowName) + { $this->_requestData[self::WINDOW_NAME] = $windowName; + return $this; } @@ -455,10 +563,13 @@ public function setWindowName($windowName) { * setter for the qpay parameter layout * * @param string $strCustomerLayout + * * @return WirecardCEE_QPay_FrontendClient */ - public function setCustomerLayout($strCustomerLayout) { + public function setCustomerLayout($strCustomerLayout) + { $this->_requestData[self::LAYOUT] = $strCustomerLayout; + return $this; } @@ -466,45 +577,120 @@ public function setCustomerLayout($strCustomerLayout) { * setter for the qpay parameter duplicateRequestCheck * * @param bool $duplicateRequestCheck + * * @return WirecardCEE_QPay_FrontendClient */ - public function setDuplicateRequestCheck($duplicateRequestCheck) { + public function setDuplicateRequestCheck($duplicateRequestCheck) + { if ($duplicateRequestCheck) { $this->_setField(self::DUPLICATE_REQUEST_CHECK, self::$BOOL_TRUE); } + return $this; } /** - * setter for the qpay paramter customerStatement + * setter for the QMore parameter customerStatement * * @param string $customerStatement - * @return WirecardCEE_QPay_FrontendClient + * + * @return $this */ - public function setCustomerStatement($customerStatement) { + public function setCustomerStatement($customerStatement) + { $this->_setField(self::CUSTOMER_STATEMENT, $customerStatement); + + return $this; + } + + /** + * Setter for TransactionIdentifier + * + * @param string $sTxIdent + * + * @return WirecardCEE_QPay_FrontendClient + */ + public function setTransactionIdentifier($sTxIdent) + { + $this->_setField(self::TX_IDENT, $sTxIdent); + + return $this; + } + + /** + * setter for Paymenttype sort oder + * + * @param array $paymentTypes + * + * @return WirecardCEE_QPay_FrontendClient + */ + public function setPaymenttypeSortOrder($paymentTypes) + { + $this->_setField(self::PAYMENTTYPE_SORTORDER, implode(',', $paymentTypes)); + return $this; } + + /** + * @param string|null $prefix Prefix, e.g. Shopname + * @param string|null $uniqString Uniqid + * + * @return $this + * @throws Exception + */ + public function generateCustomerStatement($prefix = null, $uniqString = null) + { + if (!$this->_isFieldSet(self::PAYMENT_TYPE)) { + throw new Exception('Paymenttype field is not set.'); + } + + $this->_setField( + self::CUSTOMER_STATEMENT, + $this->_composeCustomerStatement($this->_requestData[self::PAYMENT_TYPE], $prefix, $uniqString)); + + return $this; + } + + /** + * getter for the QMore parameter customerStatement + * + * @return string|null + */ + public function getCustomerStatement() + { + if (!$this->_isFieldSet(self::CUSTOMER_STATEMENT)) { + return null; + } + + return $this->_requestData[self::CUSTOMER_STATEMENT]; + } + /** * setter for the qpay parameter orderReference * * @param string $orderReference + * * @return WirecardCEE_QPay_FrontendClient */ - public function setOrderReference($orderReference) { + public function setOrderReference($orderReference) + { $this->_setField(self::ORDER_REFERENCE, $orderReference); + return $this; } /** * setter for the qpay paramter autoDeposit * - * @param string $autoDeposit + * @param string $bBool + * * @return WirecardCEE_QPay_FrontendClient */ - public function setAutoDeposit($bBool) { - $this->_setField(self::AUTO_DEPOSIT, ($bBool) ? self::$BOOL_TRUE : self::$BOOL_FALSE); + public function setAutoDeposit($bBool) + { + $this->_setField(self::AUTO_DEPOSIT, ( $bBool ) ? self::$BOOL_TRUE : self::$BOOL_FALSE); + return $this; } @@ -512,24 +698,44 @@ public function setAutoDeposit($bBool) { * setter for the qpay parameter maxRetries * * @param string $maxRetries + * * @return WirecardCEE_QPay_FrontendClient */ - public function setMaxRetries($maxRetries) { + public function setMaxRetries($maxRetries) + { $maxRetries = intval($maxRetries); if ($maxRetries >= 0) { $this->_setField(self::MAX_RETRIES, $maxRetries); } + return $this; } + /** + * setter for the customer merchant crm id + * @param $userEmail + * + * @return $this + */ + public function createConsumerMerchantCrmId($userEmail) + { + $this->_setField(self::CONSUMER_MERCHANT_CRM_ID, md5($userEmail)); + + return $this; + } + + /** * setter for the qpay parameter orderNumber * * @param int $orderNumber + * * @return WirecardCEE_QPay_FrontendClient */ - public function setOrderNumber($orderNumber) { + public function setOrderNumber($orderNumber) + { $this->_setField(self::ORDER_NUMBER, $orderNumber); + return $this; } @@ -537,34 +743,83 @@ public function setOrderNumber($orderNumber) { * setter for the qpay parameter confirmMail * * @param string $confirmMail + * * @return WirecardCEE_QPay_FrontendClient */ - public function setConfirmMail($confirmMail) { + public function setConfirmMail($confirmMail) + { $this->_setField(self::CONFIRM_MAIL, $confirmMail); + + return $this; + } + + /** + * setter for the qpay parameter backgroundColor + * + * @param string $backgroundColor + * + * @return WirecardCEE_QPay_FrontendClient + */ + public function setBackgroundColor($backgroundColor) + { + $this->_setField(self::BACKGROUND_COLOR, $backgroundColor); + + return $this; + } + + /** + * setter for the qpay parameter backgroundColor + * + * @param string $layout + * + * @return WirecardCEE_QPay_FrontendClient + */ + public function setLayout($layout) + { + $this->_setField(self::LAYOUT, $layout); + return $this; } /** * adds given consumerData to qpay request * - * @param WirecardCEE_QPay_Request_Initiation_ConsumerData $consumerData + * @param WirecardCEE_Stdlib_ConsumerData $consumerData + * * @return WirecardCEE_QPay_FrontendClient */ - public function setConsumerData(WirecardCEE_Stdlib_ConsumerData $consumerData) { + public function setConsumerData(WirecardCEE_Stdlib_ConsumerData $consumerData) + { $this->oConsumerData = $consumerData; foreach ($consumerData->getData() as $key => $value) { $this->_setField($key, $value); } + + return $this; + } + + /** + * @param WirecardCEE_Stdlib_Basket $basket + * @return $this + */ + public function setBasket(WirecardCEE_Stdlib_Basket $basket) { + $this->oBasket = $basket; + foreach($basket->getData() AS $key => $value) { + $this->_setField($key, $value); + } return $this; } /** * - * @param string $plVersion + * @param string $sPluginVersion + * * @return WirecardCEE_QPay_FrontendClient */ - public function setPluginVersion($sPluginVersion) { + public function setPluginVersion($sPluginVersion) + { $this->_setField(self::PLUGIN_VERSION, $sPluginVersion); + return $this; } @@ -572,8 +827,10 @@ public function setPluginVersion($sPluginVersion) { * Getter for response object * * @return WirecardCEE_QPay_Response_Initiation + * @throws Exception */ - public function getResponse() { + public function getResponse() + { if (!$this->oResponse instanceof WirecardCEE_QPay_Response_Initiation) { throw new Exception(sprintf("%s should be called after the initiate() function!", __METHOD__)); } @@ -585,28 +842,35 @@ public function getResponse() { * Magic method for setting request parameters. * may be used for additional parameters * - * @param type $name - * @param type $value + * @param string $name + * @param mixed $value */ - public function __set($name, $value) { + public function __set($name, $value) + { $this->_setField($name, $value); } /** * generates an base64 encoded pluginVersion string from the given shop- * plugin- and library-versions - * QPAY Client Libary and Zend Framework Version will be added automatically + * QPAY Client Libary Version will be added automatically * * @param string $shopName * @param string $shopVersion * @param string $pluginName * @param string $pluginVersion * @param array|null $libraries + * * @return string base64 encoded pluginVersion */ - public static function generatePluginVersion($shopName, $shopVersion, $pluginName, $pluginVersion, $libraries = null) { + public static function generatePluginVersion( + $shopName, + $shopVersion, + $pluginName, + $pluginVersion, + $libraries = null + ) { $libraryString = self::_getQPayClientVersionString(); - $libraryString .= ', ' . self::_getZendFrameworkVersionString(); if (is_array($libraries)) { foreach ($libraries as $libName => $libVersion) { $libraryString .= ", {$libName} {$libVersion}"; @@ -628,11 +892,13 @@ public static function generatePluginVersion($shopName, $shopVersion, $pluginNam * * @return boolean */ - protected function _isConsumerDataValid() { + protected function _isConsumerDataValid() + { // if consumer data is not an instance of WirecardCEE_Stdlib_ConsumerData // or if it's empty don't even bother with any checkings... - if (empty($this->oConsumerData) || !$this->oConsumerData instanceof WirecardCEE_Stdlib_ConsumerData) + if (empty( $this->oConsumerData ) || !$this->oConsumerData instanceof WirecardCEE_Stdlib_ConsumerData) { return false; + } // @see WirecardCEE_QPay_Request_Initiation_ConsumerData $sConsumerIpAddressField = WirecardCEE_Stdlib_ConsumerData::getConsumerIpAddressFieldName(); @@ -644,8 +910,8 @@ protected function _isConsumerDataValid() { $aConsumerData = $this->oConsumerData->getData(); // check - return (isset($aConsumerData[$sConsumerIpAddressField]) && !empty($aConsumerData[$sConsumerIpAddressField])) && - (isset($aConsumerData[$sConsumerUserAgentField]) && !empty($aConsumerData[$sConsumerUserAgentField])); + return ( isset( $aConsumerData[$sConsumerIpAddressField] ) && !empty( $aConsumerData[$sConsumerIpAddressField] ) ) && + ( isset( $aConsumerData[$sConsumerUserAgentField] ) && !empty( $aConsumerData[$sConsumerUserAgentField] ) ); } /** @@ -654,7 +920,8 @@ protected function _isConsumerDataValid() { * @see WirecardCEE_Stdlib_Client_ClientAbstract::_getRequestUrl() * @return string */ - protected function _getRequestUrl() { + protected function _getRequestUrl() + { return $this->oClientConfig->FRONTEND_URL . '/init'; } @@ -664,29 +931,18 @@ protected function _getRequestUrl() { * @access private * @return String */ - protected static function _getQPayClientVersionString() { + protected static function _getQPayClientVersionString() + { return self::$LIBRARY_NAME . ' ' . self::$LIBRARY_VERSION; } - /** - * Getter for Zend Framework Versionstring - * - * @access private - * @return string - */ - protected static function _getZendFrameworkVersionString() { - if (!class_exists('Zend_Version', false)) { - require_once('Zend/Version.php'); - } - - return self::$FRAMEWORK_NAME . ' ' . Zend_Version::VERSION; - } - /** * Returns the user agent string + * * @return string */ - protected function _getUserAgent() { + protected function _getUserAgent() + { return "{$this->oClientConfig->MODULE_NAME};{$this->oClientConfig->MODULE_VERSION}"; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/MobileDetect.php b/system/library/wirecard/WirecardCEE/QPay/MobileDetect.php new file mode 100644 index 0000000..08b7d77 --- /dev/null +++ b/system/library/wirecard/WirecardCEE/QPay/MobileDetect.php @@ -0,0 +1,53 @@ +detector = new Mobile_Detect($headers, $userAgent); + } + + public function __call($name, $arguments) + { + return call_user_func_array(array($this->detector, $name), $arguments); + } +} diff --git a/system/library/wirecard/WirecardCEE/QPay/Module.php b/system/library/wirecard/WirecardCEE/QPay/Module.php index 8dd0807..1d69e7d 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Module.php +++ b/system/library/wirecard/WirecardCEE/QPay/Module.php @@ -1,21 +1,43 @@ _requestData[self::COMMAND] = self::$COMMAND_TRANSFER_FUND; + } + + /** + * seter for fundTransferType field + * + * @param $fundTransferType + */ + public function setType($fundTransferType) + { + $this->_requestData[self::FUNDTRANSFERTYPE] = $fundTransferType; + } + + /** + * seter for orderNumber field + * + * @param $orderNumber + * + * @return $this + */ + public function setOrderNumber($orderNumber) + { + $this->_setField(self::ORDER_NUMBER, $orderNumber); + + return $this; + } + + /** + * seter for orderReference field + * + * @param $orderReference + * + * @return $this + */ + public function setOrderReference($orderReference) + { + $this->_setField(self::ORDER_REFERENCE, $orderReference); + + return $this; + } + + /** + * seter for creditNumber field + * + * @param $creditNumber + * + * @return $this + */ + public function setCreditNumber($creditNumber) + { + $this->_setField(self::CREDIT_NUMBER, $creditNumber); + + return $this; + } + + /** + * seter for customerStatement field + * + * @param $customerStatement + * + * @return $this + */ + public function setCustomerStatement($customerStatement) + { + $this->_setField(self::CUSTOMER_STATEMENT, $customerStatement); + + return $this; + } + +} \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/Existing.php b/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/Existing.php new file mode 100644 index 0000000..62c1510 --- /dev/null +++ b/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/Existing.php @@ -0,0 +1,84 @@ +_setField(self::AMOUNT, $amount); + $this->_setField(self::CURRENCY, $currency); + $this->_setField(self::ORDER_DESCRIPTION, $orderDescription); + $this->_setField(self::SOURCE_ORDER_NUMBER, $sourceOrderNumber); + + $orderArray = Array( + self::CUSTOMER_ID, + self::SHOP_ID, + self::TOOLKIT_PASSWORD, + self::SECRET, + self::COMMAND, + self::LANGUAGE + ); + if ($this->_getField(self::ORDER_NUMBER) !== null) { + $orderArray[] = self::ORDER_NUMBER; + } + + if ($this->_getField(self::CREDIT_NUMBER) !== null) { + $orderArray[] = self::CREDIT_NUMBER; + } + + $orderArray[] = self::ORDER_DESCRIPTION; + $orderArray[] = self::AMOUNT; + $orderArray[] = self::CURRENCY; + + if ($this->_getField(self::ORDER_REFERENCE) !== null) { + $orderArray[] = self::ORDER_REFERENCE; + } + + if ($this->_getField(self::CUSTOMER_STATEMENT) !== null) { + $orderArray[] = self::CUSTOMER_STATEMENT; + } + + $orderArray[] = self::FUNDTRANSFERTYPE; + $orderArray[] = self::SOURCE_ORDER_NUMBER; + + $this->_fingerprintOrder->setOrder($orderArray); + + return new WirecardCEE_QPay_Response_Toolkit_TransferFund($this->_send()); + } +} \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/Moneta.php b/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/Moneta.php new file mode 100644 index 0000000..d666916 --- /dev/null +++ b/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/Moneta.php @@ -0,0 +1,85 @@ +_setField(self::AMOUNT, $amount); + $this->_setField(self::CURRENCY, $currency); + $this->_setField(self::ORDER_DESCRIPTION, $orderDescription); + $this->_setField(self::CUSTOMER_STATEMENT, $customerStatement); + $this->_setField(self::CONSUMERWALLETID, $consumerWalletId); + + $orderArray = Array( + self::CUSTOMER_ID, + self::SHOP_ID, + self::TOOLKIT_PASSWORD, + self::SECRET, + self::COMMAND, + self::LANGUAGE + ); + if ($this->_getField(self::ORDER_NUMBER) !== null) { + $orderArray[] = self::ORDER_NUMBER; + } + + if ($this->_getField(self::CREDIT_NUMBER) !== null) { + $orderArray[] = self::CREDIT_NUMBER; + } + + $orderArray[] = self::ORDER_DESCRIPTION; + $orderArray[] = self::AMOUNT; + $orderArray[] = self::CURRENCY; + + if ($this->_getField(self::ORDER_REFERENCE) !== null) { + $orderArray[] = self::ORDER_REFERENCE; + } + + if ($this->_getField(self::CUSTOMER_STATEMENT) !== null) { + $orderArray[] = self::CUSTOMER_STATEMENT; + } + + $orderArray[] = self::FUNDTRANSFERTYPE; + $orderArray[] = self::CONSUMERWALLETID; + + $this->_fingerprintOrder->setOrder($orderArray); + + return new WirecardCEE_QPay_Response_Toolkit_TransferFund($this->_send()); + } +} \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/SepaCT.php b/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/SepaCT.php new file mode 100644 index 0000000..3a4dfd6 --- /dev/null +++ b/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/SepaCT.php @@ -0,0 +1,90 @@ +_setField(self::AMOUNT, $amount); + $this->_setField(self::CURRENCY, $currency); + $this->_setField(self::ORDER_DESCRIPTION, $orderDescription); + //$this->_setField(self::CUSTOMER_STATEMENT, $customerStatement); + $this->_setField(self::BANKACCOUNTOWNER, $bankAccountOwner); + $this->_setField(self::BANKBIC, $bankBic); + $this->_setField(self::BANKACCOUNTIBAN, $bankAccountIban); + + $orderArray = Array( + self::CUSTOMER_ID, + self::SHOP_ID, + self::TOOLKIT_PASSWORD, + self::SECRET, + self::COMMAND, + self::LANGUAGE + ); + if ($this->_getField(self::ORDER_NUMBER) !== null) { + $orderArray[] = self::ORDER_NUMBER; + } + + if ($this->_getField(self::CREDIT_NUMBER) !== null) { + $orderArray[] = self::CREDIT_NUMBER; + } + + if ($this->_getField(self::ORDER_DESCRIPTION) !== null) { + $orderArray[] = self::ORDER_DESCRIPTION; + } + $orderArray[] = self::AMOUNT; + $orderArray[] = self::CURRENCY; + + if ($this->_getField(self::ORDER_REFERENCE) !== null) { + $orderArray[] = self::ORDER_REFERENCE; + } + + if ($this->_getField(self::CUSTOMER_STATEMENT) !== null) { + $orderArray[] = self::CUSTOMER_STATEMENT; + } + + $orderArray[] = self::FUNDTRANSFERTYPE; + $orderArray[] = self::BANKACCOUNTOWNER; + $orderArray[] = self::BANKBIC; + $orderArray[] = self::BANKACCOUNTIBAN; + + $this->_fingerprintOrder->setOrder($orderArray); + + return new WirecardCEE_QPay_Response_Toolkit_TransferFund($this->_send()); + } +} \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/SkrillWallet.php b/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/SkrillWallet.php new file mode 100644 index 0000000..4ac9b25 --- /dev/null +++ b/system/library/wirecard/WirecardCEE/QPay/Request/Backend/TransferFund/SkrillWallet.php @@ -0,0 +1,85 @@ +_setField(self::AMOUNT, $amount); + $this->_setField(self::CURRENCY, $currency); + $this->_setField(self::ORDER_DESCRIPTION, $orderDescription); + $this->_setField(self::CUSTOMER_STATEMENT, $customerStatement); + $this->_setField(self::CONSUMEREMAIL, $consumerEmail); + + $orderArray = Array( + self::CUSTOMER_ID, + self::SHOP_ID, + self::TOOLKIT_PASSWORD, + self::SECRET, + self::COMMAND, + self::LANGUAGE + ); + if ($this->_getField(self::ORDER_NUMBER) !== null) { + $orderArray[] = self::ORDER_NUMBER; + } + + if ($this->_getField(self::CREDIT_NUMBER) !== null) { + $orderArray[] = self::CREDIT_NUMBER; + } + + $orderArray[] = self::ORDER_DESCRIPTION; + $orderArray[] = self::AMOUNT; + $orderArray[] = self::CURRENCY; + + if ($this->_getField(self::ORDER_REFERENCE) !== null) { + $orderArray[] = self::ORDER_REFERENCE; + } + + if ($this->_getField(self::CUSTOMER_STATEMENT) !== null) { + $orderArray[] = self::CUSTOMER_STATEMENT; + } + + $orderArray[] = self::FUNDTRANSFERTYPE; + $orderArray[] = self::CONSUMEREMAIL; + + $this->_fingerprintOrder->setOrder($orderArray); + + return new WirecardCEE_QPay_Response_Toolkit_TransferFund($this->_send()); + } +} \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Initiation.php b/system/library/wirecard/WirecardCEE/QPay/Response/Initiation.php index 9aca8ce..458fea6 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Initiation.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Initiation.php @@ -1,27 +1,51 @@ _getField(self::REDIRECT_URL)) ? self::STATE_SUCCESS : self::STATE_FAILURE; + public function getStatus() + { + return ( $this->_getField(self::REDIRECT_URL) ) ? self::STATE_SUCCESS : self::STATE_FAILURE; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/ResponseAbstract.php b/system/library/wirecard/WirecardCEE/QPay/Response/ResponseAbstract.php index 7cb2360..667db54 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/ResponseAbstract.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/ResponseAbstract.php @@ -1,22 +1,45 @@ _response[self::$ERROR_MESSAGE])) { + if (isset( $this->_response[self::$ERROR_MESSAGE] )) { $oError = new WirecardCEE_QPay_Error($this->_response[self::$ERROR_MESSAGE]); - if(isset($this->_response[self::$ERROR_CONSUMER_MESSAGE])) + if (isset( $this->_response[self::$ERROR_CONSUMER_MESSAGE] )) { $oError->setConsumerMessage($this->_response[self::$ERROR_CONSUMER_MESSAGE]); + } } return $oError; diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/ApproveReversal.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/ApproveReversal.php index 44970dd..28bc78f 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/ApproveReversal.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/ApproveReversal.php @@ -1,19 +1,42 @@ _getField(self::$PAYMENT_NUMBER); - } + /** + * getter for the returned paymentNumber + * + * @return string + */ + public function getPaymentNumber() + { + return $this->_getField(self::$PAYMENT_NUMBER); + } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/DepositReversal.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/DepositReversal.php index 100fe5a..daa9919 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/DepositReversal.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/DepositReversal.php @@ -1,19 +1,42 @@ - */ - protected function _getField($name) { - return (array_key_exists($name, $this->_data)) ? $this->_data[$name] : false; - } + /** + * getter for given field + * + * @param string $name + * + * @return mixed + */ + protected function _getField($name) + { + return ( array_key_exists($name, $this->_data) ) ? $this->_data[$name] : false; + } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/GetOrderDetails.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/GetOrderDetails.php index 0041258..73e086b 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/GetOrderDetails.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/GetOrderDetails.php @@ -1,72 +1,101 @@ _getField(self::$ORDER); - $payments = $this->_getField(self::$PAYMENT); - $credits = $this->_getField(self::$CREDIT); + $orders = $this->_getField(self::$ORDER); + $payments = $this->_getField(self::$PAYMENT); + $credits = $this->_getField(self::$CREDIT); - $order = $orders[0]; - $order['paymentData'] = is_array($payments[0]) ? $payments[0] : Array(); - $order['creditData'] = is_array($credits[0]) ? $credits[0] : Array(); + $order = $orders[0]; + $order['paymentData'] = is_array($payments[0]) ? $payments[0] : Array(); + $order['creditData'] = is_array($credits[0]) ? $credits[0] : Array(); - $this->_order = new WirecardCEE_QPay_Response_Toolkit_Order($order); + $this->_order = new WirecardCEE_QPay_Response_Toolkit_Order($order); - } + } - /** - * getter for the returned order object - * - * @return WirecardCEE_QPay_Response_Toolkit_Order - */ - public function getOrder() { - return $this->_order; - } + /** + * getter for the returned order object + * + * @return WirecardCEE_QPay_Response_Toolkit_Order + */ + public function getOrder() + { + return $this->_order; + } } diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order.php index 7ab7767..d02099f 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order.php @@ -1,406 +1,473 @@ _setPayments($orderData['paymentData']); - $this->_setCredits($orderData['creditData']); - - unset($orderData['paymentData']); - unset($orderData['creditData']); - - $this->_data = $orderData; - } - - /** - * setter for payment object iterator - * - * @access private - * @param string[] $payments - */ - private function _setPayments($paymentEntries) { - $payments = Array(); - foreach($paymentEntries as $paymentEntry) { - switch($paymentEntry['paymentType']) { - case self::$PAYMENTTYPE_PAYPAL: - $payments[] = new WirecardCEE_QPay_Response_Toolkit_Order_Payment_Paypal($paymentEntry); - break; - case self::$PAYMENTTYPE_SOFORTUEBERWEISUNG: - $payments[] = new WirecardCEE_QPay_Response_Toolkit_Order_Payment_Sofortueberweisung($paymentEntry); - break; - case self::$PAYMENTTYPE_IDEAL: - $payments[] = new WirecardCEE_QPay_Response_Toolkit_Order_Payment_Ideal($paymentEntry); - break; - default: - $payments[] = new WirecardCEE_QPay_Response_Toolkit_Order_Payment($paymentEntry); - break; - } - } - $this->_payments = new WirecardCEE_QPay_Response_Toolkit_Order_PaymentIterator($payments); - } - - /** - * setter for credit object iterator - * - * @access private - * @param string[] $credits - */ - private function _setCredits($creditEntries) { - $credits = Array(); - foreach($creditEntries as $creditEntry) { - $credits[] = new WirecardCEE_QPay_Response_Toolkit_Order_Credit($creditEntry); - } - $this->_credits = new WirecardCEE_QPay_Response_Toolkit_Order_CreditIterator($credits); - } - - /** - * getter for order merchant number - * - * @return string - */ - public function getMerchantNumber() { - return $this->_getField(self::$MERCHANT_NUMBER); - } - - /** - * getter for order number - * - * @return string - */ - public function getOrderNumber() { - return $this->_getField(self::$ORDER_NUMBER); - } - - /** - * getter for used payment type - * - * @return string - */ - public function getPaymentType() { - return $this->_getField(self::$PAYMENT_TYPE); - } - - /** - * getter for orders amount - * - * @return string - */ - public function getAmount() { - return $this->_getField(self::$AMOUNT); - } - - /** - * getter for orders brand - * - * @return string - */ - public function getBrand() { - return $this->_getField(self::$BRAND); - } - - /** - * getter for orders currency - * - * @return type - */ - public function getCurrency() { - return $this->_getField(self::$CURRENCY); - } - - /** - * getter for the order description - * - * @return string - */ - public function getOrderDescription() { - return $this->_getField(self::$ORDER_DESCRIPTION); - } - - /** - * getter for the acquirer name - * - * @return string - */ - public function getAcquirer() { - return $this->_getField(self::$ACQUIRER); - } - - /** - * getter for the contract number - * - * @return string - */ - public function getContractNumber() { - return $this->_getField(self::$CONTRACT_NUMBER); - } - - /** - * getter for allowed follow-up operations - * - * @return string[] - */ - public function getOperationsAllowed() { - if ($this->_getField(self::$OPERATIONS_ALLOWED) == '') { - return Array(); - } - else { - return explode(',', $this->_getField(self::$OPERATIONS_ALLOWED)); - } - } - - /** - * getter for order reference - * - * @return string - */ - public function getOrderReference() { - return $this->_getField(self::$ORDER_REFERENCE); - } - - /** - * getter for customer statement text - * - * @return string - */ - public function getCustomerStatement() { - return $this->_getField(self::$CUSTOMER_STATEMENT); - } - - /** - * getter for the order text - * - * @return string - */ - public function getOrderText() { - return $this->_getField(self::$ORDER_TEXT); - } - - /** - * getter for the time this order has been created - * - * @return DateTime - */ - public function getTimeCreated() { - return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_CREATED)); - } - - /** - * getter for the last time this order has been modified - * - * @return DateTime - */ - public function getTimeModified() { - return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_MODIFIED)); - } - - /** - * getter for the current order state - * - * @return string - */ - public function getState() { - return $this->_getField(self::$STATE); - } - - /** - * getter for the source order number - * - * @return string - */ - public function getSourceOrderNumber() { - return $this->_getField(self::$SOURCE_ORDER_NUMBER); - } - - /** - * getter for corresponding payment objects - * - * @return WirecardCEE_QPay_Response_Toolkit_Order_PaymentIterator - */ - public function getPayments() { - return $this->_payments; - } - - /** - * getter for corresponding credit objects - * - * @return WirecardCEE_QPay_Response_Toolkit_Order_CreditIterator - */ - public function getCredits() { - return $this->_credits; - } +class WirecardCEE_QPay_Response_Toolkit_Order extends WirecardCEE_QPay_Response_Toolkit_FinancialObject +{ + /** + * CreditIterator object holder + * + * @var WirecardCEE_QPay_Response_Toolkit_Order_CreditIterator + * @internal + */ + private $_credits; + + /** + * PaymentIterator object holder + * + * @var WirecardCEE_QPay_Response_Toolkit_Order_PaymentIterator + * @internal + */ + private $_payments; + + /** + * Merchant number + * + * @staticvar string + * @internal + */ + private static $MERCHANT_NUMBER = 'merchantNumber'; + + /** + * Order number + * + * @staticvar string + * @internal + */ + private static $ORDER_NUMBER = 'orderNumber'; + + /** + * Payment type + * + * @staticvar string + * @internal + */ + private static $PAYMENT_TYPE = 'paymentType'; + + /** + * Amount + * + * @staticvar string + * @internal + */ + private static $AMOUNT = 'amount'; + + /** + * Brand + * + * @staticvar string + * @internal + */ + private static $BRAND = 'brand'; + + /** + * Currency + * + * @staticvar string + * @internal + */ + private static $CURRENCY = 'currency'; + + /** + * Order description + * + * @staticvar string + * @internal + */ + private static $ORDER_DESCRIPTION = 'orderDescription'; + + /** + * Acquirer + * + * @staticvar string + * @internal + */ + private static $ACQUIRER = 'acquirer'; + + /** + * Contract number + * + * @staticvar string + * @internal + */ + private static $CONTRACT_NUMBER = 'contractNumber'; + + /** + * Operations allowes + * + * @staticvar string + * @internal + */ + private static $OPERATIONS_ALLOWED = 'operationsAllowed'; + + /** + * Order reference + * + * @staticvar string + * @internal + */ + private static $ORDER_REFERENCE = 'orderReference'; + + /** + * Customer statement + * + * @staticvar string + * @internal + */ + private static $CUSTOMER_STATEMENT = 'customerStatement'; + + /** + * Order text + * + * @staticvar string + * @internal + */ + private static $ORDER_TEXT = 'orderText'; + + /** + * Time created + * + * @staticvar string + * @internal + */ + private static $TIME_CREATED = 'timeCreated'; + + /** + * Time modified + * + * @staticvar string + * @internal + */ + private static $TIME_MODIFIED = 'timeModified'; + + /** + * State + * + * @staticvar string + * @internal + */ + private static $STATE = 'state'; + + /** + * Source number + * + * @staticvar string + * @internal + */ + private static $SOURCE_ORDER_NUMBER = 'sourceOrderNumber'; + + /** + * Merchant number + * + * @staticvar string + * @internal + */ + private static $PAYMENTTYPE_PAYPAL = 'PPL'; + + /** + * Merchant number + * + * @staticvar string + * @internal + */ + private static $PAYMENTTYPE_SOFORTUEBERWEISUNG = 'SUE'; + + /** + * Merchant number + * + * @staticvar string + * @internal + */ + private static $PAYMENTTYPE_IDEAL = 'IDL'; + + /** + * creates an instance of the {@link + * WirecardCEE_QPay_Response_Toolkit_Order} object + * + * @param string[] $orderData + */ + public function __construct($orderData) + { + $this->_setPayments($orderData['paymentData']); + $this->_setCredits($orderData['creditData']); + + unset( $orderData['paymentData'] ); + unset( $orderData['creditData'] ); + + $this->_data = $orderData; + } + + /** + * setter for payment object iterator + * + * @access private + * + * @param string[] $payments + */ + private function _setPayments($paymentEntries) + { + $payments = Array(); + foreach ($paymentEntries as $paymentEntry) { + switch ($paymentEntry['paymentType']) { + case self::$PAYMENTTYPE_PAYPAL: + $payments[] = new WirecardCEE_QPay_Response_Toolkit_Order_Payment_Paypal($paymentEntry); + break; + case self::$PAYMENTTYPE_SOFORTUEBERWEISUNG: + $payments[] = new WirecardCEE_QPay_Response_Toolkit_Order_Payment_Sofortueberweisung($paymentEntry); + break; + case self::$PAYMENTTYPE_IDEAL: + $payments[] = new WirecardCEE_QPay_Response_Toolkit_Order_Payment_Ideal($paymentEntry); + break; + default: + $payments[] = new WirecardCEE_QPay_Response_Toolkit_Order_Payment($paymentEntry); + break; + } + } + $this->_payments = new WirecardCEE_QPay_Response_Toolkit_Order_PaymentIterator($payments); + } + + /** + * setter for credit object iterator + * + * @access private + * + * @param string[] $credits + */ + private function _setCredits($creditEntries) + { + $credits = Array(); + foreach ($creditEntries as $creditEntry) { + $credits[] = new WirecardCEE_QPay_Response_Toolkit_Order_Credit($creditEntry); + } + $this->_credits = new WirecardCEE_QPay_Response_Toolkit_Order_CreditIterator($credits); + } + + /** + * getter for order merchant number + * + * @return string + */ + public function getMerchantNumber() + { + return $this->_getField(self::$MERCHANT_NUMBER); + } + + /** + * getter for order number + * + * @return string + */ + public function getOrderNumber() + { + return $this->_getField(self::$ORDER_NUMBER); + } + + /** + * getter for used payment type + * + * @return string + */ + public function getPaymentType() + { + return $this->_getField(self::$PAYMENT_TYPE); + } + + /** + * getter for orders amount + * + * @return string + */ + public function getAmount() + { + return $this->_getField(self::$AMOUNT); + } + + /** + * getter for orders brand + * + * @return string + */ + public function getBrand() + { + return $this->_getField(self::$BRAND); + } + + /** + * getter for orders currency + * + * @return type + */ + public function getCurrency() + { + return $this->_getField(self::$CURRENCY); + } + + /** + * getter for the order description + * + * @return string + */ + public function getOrderDescription() + { + return $this->_getField(self::$ORDER_DESCRIPTION); + } + + /** + * getter for the acquirer name + * + * @return string + */ + public function getAcquirer() + { + return $this->_getField(self::$ACQUIRER); + } + + /** + * getter for the contract number + * + * @return string + */ + public function getContractNumber() + { + return $this->_getField(self::$CONTRACT_NUMBER); + } + + /** + * getter for allowed follow-up operations + * + * @return string[] + */ + public function getOperationsAllowed() + { + if ($this->_getField(self::$OPERATIONS_ALLOWED) == '') { + return Array(); + } else { + return explode(',', $this->_getField(self::$OPERATIONS_ALLOWED)); + } + } + + /** + * getter for order reference + * + * @return string + */ + public function getOrderReference() + { + return $this->_getField(self::$ORDER_REFERENCE); + } + + /** + * getter for customer statement text + * + * @return string + */ + public function getCustomerStatement() + { + return $this->_getField(self::$CUSTOMER_STATEMENT); + } + + /** + * getter for the order text + * + * @return string + */ + public function getOrderText() + { + return $this->_getField(self::$ORDER_TEXT); + } + + /** + * getter for the time this order has been created + * + * @return DateTime + */ + public function getTimeCreated() + { + return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_CREATED)); + } + + /** + * getter for the last time this order has been modified + * + * @return DateTime + */ + public function getTimeModified() + { + return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_MODIFIED)); + } + + /** + * getter for the current order state + * + * @return string + */ + public function getState() + { + return $this->_getField(self::$STATE); + } + + /** + * getter for the source order number + * + * @return string + */ + public function getSourceOrderNumber() + { + return $this->_getField(self::$SOURCE_ORDER_NUMBER); + } + + /** + * getter for corresponding payment objects + * + * @return WirecardCEE_QPay_Response_Toolkit_Order_PaymentIterator + */ + public function getPayments() + { + return $this->_payments; + } + + /** + * getter for corresponding credit objects + * + * @return WirecardCEE_QPay_Response_Toolkit_Order_CreditIterator + */ + public function getCredits() + { + return $this->_credits; + } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Credit.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Credit.php index 02d06f2..c6667f1 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Credit.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Credit.php @@ -1,206 +1,251 @@ _data = $creditData; - } - - /** - * getter for credits merchant number - * - * @return string - */ - public function getMerchantNumber() { - return (string) $this->_getField(self::$MERCHANT_NUMBER); - } - - /** - * getter for credit number - * - * @return string - */ - public function getCreditNumber() { - return (string) $this->_getField(self::$CREDIT_NUMBER); - } - - /** - * getter for the corresponding order number - * - * @return string - */ - public function getOrderNumber() { - return $this->_getField(self::$ORDER_NUMBER); - } - - /** - * getter for the corresponding batch number - * - * @return string - */ - public function getBatchNumber() { - return $this->_getField(self::$BATCH_NUMBER); - } - - /** - * getter for the credit amount - * - * @return string - */ - public function getAmount() { - return $this->_getField(self::$AMOUNT); - } - - /** - * getter for the credit currency - * - * @return string - */ - public function getCurrency() { - return (string) $this->_getField(self::$CURRENCY); - } - - /** - * getter for the creation time - * - * @return DateTime - */ - public function getTimeCreated() { - return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_CREATED)); - } - - /** - * getter for the last time this credit has been updated - * - * @return DateTime - */ - public function getTimeModified() { - return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_MODIFIED)); - } - - /** - * getter for the currenc credit state - * - * @return string - */ - public function getState() { - return $this->_getField(self::$STATE); - } - - /** - * getter for the allowed follow-up operations - * - * @return array - */ - public function getOperationsAllowed() { - return explode(',', $this->_getField(self::$OPERATIONS_ALLOWED)); - } - - /** - * getter for the gateway reference number - * - * @return string - */ - public function getGatewayReferenceNumber() { - return $this->_getField(self::$GATEWAY_REFERENCE_NUMBER); - } +class WirecardCEE_QPay_Response_Toolkit_Order_Credit extends WirecardCEE_QPay_Response_Toolkit_FinancialObject +{ + /** + * Merchant number + * + * @staticvar string + * @internal + */ + private static $MERCHANT_NUMBER = 'merchantNumber'; + + /** + * Credit number + * + * @staticvar string + * @internal + */ + private static $CREDIT_NUMBER = 'creditNumber'; + + /** + * Order number + * + * @staticvar string + * @internal + */ + private static $ORDER_NUMBER = 'orderNumber'; + + /** + * Batch number + * + * @staticvar string + * @internal + */ + private static $BATCH_NUMBER = 'batchNumber'; + + /** + * Amount + * + * @staticvar string + * @internal + */ + private static $AMOUNT = 'amount'; + + /** + * Currency + * + * @staticvar string + * @internal + */ + private static $CURRENCY = 'currency'; + + /** + * Time created + * + * @staticvar string + * @internal + */ + private static $TIME_CREATED = 'timeCreated'; + + /** + * Time modified + * + * @staticvar string + * @internal + */ + private static $TIME_MODIFIED = 'timeModified'; + + /** + * State + * + * @staticvar string + * @internal + */ + private static $STATE = 'state'; + + /** + * Operations allowed + * + * @staticvar string + * @internal + */ + private static $OPERATIONS_ALLOWED = 'operationsAllowed'; + + /** + * Gateway reference number + * + * @staticvar string + * @internal + */ + private static $GATEWAY_REFERENCE_NUMBER = 'gatewayReferenceNumber'; + + /** + * creates an instance of an {@link + * WirecardCEE_QPay_Response_Toolkit_Order_Credit} object + * + * @param string[] $creditData + */ + public function __construct($creditData) + { + $this->_data = $creditData; + } + + /** + * getter for credits merchant number + * + * @return string + */ + public function getMerchantNumber() + { + return (string) $this->_getField(self::$MERCHANT_NUMBER); + } + + /** + * getter for credit number + * + * @return string + */ + public function getCreditNumber() + { + return (string) $this->_getField(self::$CREDIT_NUMBER); + } + + /** + * getter for the corresponding order number + * + * @return string + */ + public function getOrderNumber() + { + return $this->_getField(self::$ORDER_NUMBER); + } + + /** + * getter for the corresponding batch number + * + * @return string + */ + public function getBatchNumber() + { + return $this->_getField(self::$BATCH_NUMBER); + } + + /** + * getter for the credit amount + * + * @return string + */ + public function getAmount() + { + return $this->_getField(self::$AMOUNT); + } + + /** + * getter for the credit currency + * + * @return string + */ + public function getCurrency() + { + return (string) $this->_getField(self::$CURRENCY); + } + + /** + * getter for the creation time + * + * @return DateTime + */ + public function getTimeCreated() + { + return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_CREATED)); + } + + /** + * getter for the last time this credit has been updated + * + * @return DateTime + */ + public function getTimeModified() + { + return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_MODIFIED)); + } + + /** + * getter for the currenc credit state + * + * @return string + */ + public function getState() + { + return $this->_getField(self::$STATE); + } + + /** + * getter for the allowed follow-up operations + * + * @return array + */ + public function getOperationsAllowed() + { + return explode(',', $this->_getField(self::$OPERATIONS_ALLOWED)); + } + + /** + * getter for the gateway reference number + * + * @return string + */ + public function getGatewayReferenceNumber() + { + return $this->_getField(self::$GATEWAY_REFERENCE_NUMBER); + } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/CreditIterator.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/CreditIterator.php index e51d017..30c98d7 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/CreditIterator.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/CreditIterator.php @@ -1,20 +1,43 @@ _position = 0; - $this->_objectArray = $objectArray; - } + /** + * + * @param array $objectArray objects to iterate through + */ + public function __construct(array $objectArray) + { + $this->_position = 0; + $this->_objectArray = $objectArray; + } - /** - * resets the current position to 0(first entry) - */ - public function rewind() { - $this->_position = 0; - } + /** + * resets the current position to 0(first entry) + */ + public function rewind() + { + $this->_position = 0; + } - /** - * the current Object - * @return Object - */ - public function current() { - return $this->_objectArray[$this->_position]; - } + /** + * the current Object + * + * @return Object + */ + public function current() + { + return $this->_objectArray[$this->_position]; + } - /** - * the current position - * @return int - */ - public function key() { - return $this->_position; - } + /** + * the current position + * + * @return int + */ + public function key() + { + return $this->_position; + } - /** - * go to the next position - */ - public function next() { - ++$this->_position; - } + /** + * go to the next position + */ + public function next() + { + ++ $this->_position; + } - /** - * checks if position is valid - * @see Iterator::valid() - */ - public function valid() { - return (bool) isset($this->_objectArray[$this->_position]); - } + /** + * checks if position is valid + * + * @see Iterator::valid() + */ + public function valid() + { + return (bool) isset( $this->_objectArray[$this->_position] ); + } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment.php index e1ed457..1eed5b6 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment.php @@ -1,253 +1,304 @@ _data = $paymentData; - } - - /** - * getter for payments merchant number - * - * @return string - */ - public function getMerchantNumber() { - return $this->_getField(self::$MERCHANT_NUMBER); - } - - /** - * getter for the payment number - * - * @return string - */ - public function getPaymentNumber() { - return $this->_getField(self::$PAYMENT_NUMBER); - } - - /** - * getter for the corrensponding order number - * - * @return string - */ - public function getOrderNumber() { - return $this->_getField(self::$ORDER_NUMBER); - } - - /** - * getter for the approved amount - * - * @return string - */ - public function getApproveAmount() { - return $this->_getField(self::$APPROVE_AMOUNT); - } - - /** - * getter for the deposited amount - * - * @return string - */ - public function getDepositAmount() { - return $this->_getField(self::$DEPOSIT_AMOUNT); - } - - /** - * getter for the payment currency - * - * @return string - */ - public function getCurrency() { - return $this->_getField(self::$CURRENCY); - } - - /** - * getter for the creation time of this payment - * - * @return DateTime - */ - public function getTimeCreated() { - return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_CREATED)); - } - - /** - * getter for the last time this payment has been updated - * - * @return DateTime - */ - public function getTimeModified() { - return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_MODIFIED)); - } - - /** - * getter for the current payment state - * - * @return string - */ - public function getState() { - return $this->_getField(self::$STATE); - } - - /** - * getter for the paymenttype - * - * @return string - */ - public function getPaymentType() { - return $this->_getField(self::$PAYMENT_TYPE); - } - - /** - * getter for the allowed follow-up operations - * - * @return string[] - */ - public function getOperationsAllowed() { - return explode(',', $this->_getField(self::$OPERATIONS_ALLOWED)); - } - - /** - * getter for the gateway reference number - * - * @return string - */ - public function getGatewayReferencenumber() { - return $this->_getField(self::$GATEWAY_REFERENCE_NUMBER); - } - - /** - * getter for the AVS result-code - * - * @return string - */ - public function getAvsResultCode() { - return $this->_getField(self::$AVS_RESULT_CODE); - } - - /** - * getter for the AVS result-message - * - * @return string - */ - public function getAvsResultMessage() { - return $this->_getField(self::$AVS_RESULT_MESSAGE); - } +class WirecardCEE_QPay_Response_Toolkit_Order_Payment extends WirecardCEE_QPay_Response_Toolkit_FinancialObject +{ + /** + * Merchant number + * + * @staticvar string + * @internal + */ + private static $MERCHANT_NUMBER = 'merchantNumber'; + + /** + * Payment number + * + * @staticvar string + * @internal + */ + private static $PAYMENT_NUMBER = 'paymentNumber'; + + /** + * Order number + * + * @staticvar string + * @internal + */ + private static $ORDER_NUMBER = 'orderNumber'; + + /** + * Approve amount + * + * @staticvar string + * @internal + */ + private static $APPROVE_AMOUNT = 'approveAmount'; + + /** + * Deposit amount + * + * @staticvar string + * @internal + */ + private static $DEPOSIT_AMOUNT = 'depositAmount'; + + /** + * Currency + * + * @staticvar string + * @internal + */ + private static $CURRENCY = 'currency'; + + /** + * Time created + * + * @staticvar string + * @internal + */ + private static $TIME_CREATED = 'timeCreated'; + + /** + * Time modified + * + * @staticvar string + * @internal + */ + private static $TIME_MODIFIED = 'timeModified'; + + /** + * State + * + * @staticvar string + * @internal + */ + private static $STATE = 'state'; + + /** + * Payment type + * + * @staticvar string + * @internal + */ + private static $PAYMENT_TYPE = 'paymentType'; + + /** + * Operations allowed + * + * @staticvar string + * @internal + */ + private static $OPERATIONS_ALLOWED = 'operationsAllowed'; + + /** + * Gateway reference number + * + * @staticvar string + * @internal + */ + private static $GATEWAY_REFERENCE_NUMBER = 'gatewayReferenceNumber'; + + /** + * AVS result code + * + * @staticvar string + * @internal + */ + private static $AVS_RESULT_CODE = 'avsResultCode'; + + /** + * AVS result message + * + * @staticvar string + * @internal + */ + private static $AVS_RESULT_MESSAGE = 'avsResultMessage'; + + /** + * creates an instance of an {@link + * WirecardCEE_QPay_Response_Toolkit_Order_Payment} object + * + * @param string[] $paymentData + */ + public function __construct($paymentData) + { + $this->_data = $paymentData; + } + + /** + * getter for payments merchant number + * + * @return string + */ + public function getMerchantNumber() + { + return $this->_getField(self::$MERCHANT_NUMBER); + } + + /** + * getter for the payment number + * + * @return string + */ + public function getPaymentNumber() + { + return $this->_getField(self::$PAYMENT_NUMBER); + } + + /** + * getter for the corrensponding order number + * + * @return string + */ + public function getOrderNumber() + { + return $this->_getField(self::$ORDER_NUMBER); + } + + /** + * getter for the approved amount + * + * @return string + */ + public function getApproveAmount() + { + return $this->_getField(self::$APPROVE_AMOUNT); + } + + /** + * getter for the deposited amount + * + * @return string + */ + public function getDepositAmount() + { + return $this->_getField(self::$DEPOSIT_AMOUNT); + } + + /** + * getter for the payment currency + * + * @return string + */ + public function getCurrency() + { + return $this->_getField(self::$CURRENCY); + } + + /** + * getter for the creation time of this payment + * + * @return DateTime + */ + public function getTimeCreated() + { + return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_CREATED)); + } + + /** + * getter for the last time this payment has been updated + * + * @return DateTime + */ + public function getTimeModified() + { + return DateTime::createFromFormat(self::$DATETIME_FORMAT, $this->_getField(self::$TIME_MODIFIED)); + } + + /** + * getter for the current payment state + * + * @return string + */ + public function getState() + { + return $this->_getField(self::$STATE); + } + + /** + * getter for the paymenttype + * + * @return string + */ + public function getPaymentType() + { + return $this->_getField(self::$PAYMENT_TYPE); + } + + /** + * getter for the allowed follow-up operations + * + * @return string[] + */ + public function getOperationsAllowed() + { + return explode(',', $this->_getField(self::$OPERATIONS_ALLOWED)); + } + + /** + * getter for the gateway reference number + * + * @return string + */ + public function getGatewayReferencenumber() + { + return $this->_getField(self::$GATEWAY_REFERENCE_NUMBER); + } + + /** + * getter for the AVS result-code + * + * @return string + */ + public function getAvsResultCode() + { + return $this->_getField(self::$AVS_RESULT_CODE); + } + + /** + * getter for the AVS result-message + * + * @return string + */ + public function getAvsResultMessage() + { + return $this->_getField(self::$AVS_RESULT_MESSAGE); + } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Ideal.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Ideal.php index af3afe1..afd6f75 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Ideal.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Ideal.php @@ -1,67 +1,95 @@ _getField(self::$CONSUMER_NAME); - } + /** + * getter for iDEAL consumer Name + * + * @return string + */ + public function getConsumerName() + { + return $this->_getField(self::$CONSUMER_NAME); + } - /** - * getter for iDEAL consumer City - * - * @return string - */ - public function getConsumerCity() { - return $this->_getField(self::$CONSUMER_CITY); - } + /** + * getter for iDEAL consumer City + * + * @return string + */ + public function getConsumerCity() + { + return $this->_getField(self::$CONSUMER_CITY); + } - /** - * getter for iDEAL consumer account-number - * - * @return string - */ - public function getConsumerAccountNumber() { - return $this->_getField(self::$CONSUMER_ACCOUNT_NUMBER); - } + /** + * getter for iDEAL consumer account-number + * + * @return string + */ + public function getConsumerAccountNumber() + { + return $this->_getField(self::$CONSUMER_ACCOUNT_NUMBER); + } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Paypal.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Paypal.php index 432e0f3..9ebc4ed 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Paypal.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Paypal.php @@ -1,227 +1,275 @@ _getField(self::$PAYER_ID); - } - - /** - * getter for PayPal payer email - * - * @return string - */ - public function getPayerEmail() { - return $this->_getField(self::$PAYER_EMAIL); - } - - /** - * getter for PayPal payer firstname - * - * @return string - */ - public function getPayerFirstName() { - return $this->_getField(self::$PAYER_FIRST_NAME); - } - - /** - * getter for PayPal payer lastname - * - * @return string - */ - public function getPayerLastName() { - return $this->_getField(self::$PAYER_LAST_NAME); - } - - /** - * getter for PayPal payer country address field - * - * @return string - */ - public function getPayerAddressCountry() { - return $this->_getField(self::$PAYER_ADDRESS_COUNTRY); - } - - /** - * getter for PayPal payer city address field - * - * @return string - */ - public function getPayerAddressCity() { - return $this->_getField(self::$PAYER_ADDRESS_CITY); - } - - /** - * getter for PayPal payer state address field - * - * @return string - */ - public function getPayerAddressState() { - return $this->_getField(self::$PAYER_ADDRESS_STATE); - } - - /** - * getter for PayPal payer name address field - * - * @return string - */ - public function getPayerAddressName() { - return $this->_getField(self::$PAYER_ADDRESS_NAME); - } - - /** - * getter for PayPal payer street 1 address field - * - * @return string - */ - public function getPayerAddressStreet1() { - return $this->_getField(self::$PAYER_ADDRESS_STREET_1); - } - - /** - * getter for PayPal payer street 2 address field - * - * @return string - */ - public function getPayerAddressStreet2() { - return $this->_getField(self::$PAYER_ADDRESS_STREET_2); - } - - /** - * getter for PayPal payer zipcode address field - * - * @return string - */ - public function getPayerAddressZip() { - return $this->_getField(self::$PAYER_ADDRESS_ZIP); - } - - /** - * getter for PayPal payer address status - * - * @return string - */ - public function getPayerAddressStatus() { - return $this->_getField(self::$PAYER_ADDRESS_STATUS); - } - - /** - * getter for PayPal protection eligibility - * - * @return string - */ - public function getProtectionEligibility() { - return $this->_getField(self::$PROTECTION_ELIGIBILITY); - } +class WirecardCEE_QPay_Response_Toolkit_Order_Payment_Paypal extends WirecardCEE_QPay_Response_Toolkit_Order_Payment +{ + /** + * PayPal - payer ID + * + * @staticvar string + * @internal + */ + private static $PAYER_ID = 'paypalPayerID'; + + /** + * PayPal - payer email + * + * @staticvar string + * @internal + */ + private static $PAYER_EMAIL = 'paypalPayerEmail'; + + /** + * PayPal - payer first name + * + * @staticvar string + * @internal + */ + private static $PAYER_FIRST_NAME = 'paypalPayerFirstName'; + + /** + * PayPal - payer last name + * + * @staticvar string + * @internal + */ + private static $PAYER_LAST_NAME = 'paypalPayerLastName'; + + /** + * PayPal - payer address - coountry + * + * @staticvar string + * @internal + */ + private static $PAYER_ADDRESS_COUNTRY = 'paypalPayerAddressCountry'; + + /** + * PayPal - payer address - city + * + * @staticvar string + * @internal + */ + private static $PAYER_ADDRESS_CITY = 'paypalPayerAddressCity'; + + /** + * PayPal - payer address - state + * + * @staticvar string + * @internal + */ + private static $PAYER_ADDRESS_STATE = 'paypalPayerAddressState'; + + /** + * PayPal - payer address - name + * + * @staticvar string + * @internal + */ + private static $PAYER_ADDRESS_NAME = 'paypalPayerAddressName'; + + /** + * PayPal - payer address - street 1 + * + * @staticvar string + * @internal + */ + private static $PAYER_ADDRESS_STREET_1 = 'paypalPayerAddressStreet1'; + + /** + *PayPal - payer address - street 2 + * + * @staticvar string + * @internal + */ + private static $PAYER_ADDRESS_STREET_2 = 'paypalPayerAddressStreet2'; + + /** + * PayPal - payer address - zip + * + * @staticvar string + * @internal + */ + private static $PAYER_ADDRESS_ZIP = 'paypalPayerAddressZIP'; + + /** + * PayPal - payer address - status + * + * @staticvar string + * @internal + */ + private static $PAYER_ADDRESS_STATUS = 'paypalPayerAddressStatus'; + + /** + * PayPal - payer eligibility + * + * @staticvar string + * @internal + */ + private static $PROTECTION_ELIGIBILITY = 'paypalProtectionEligibility'; + + /** + * getter for PayPal payerID + * + * @return string + */ + public function getPayerId() + { + return $this->_getField(self::$PAYER_ID); + } + + /** + * getter for PayPal payer email + * + * @return string + */ + public function getPayerEmail() + { + return $this->_getField(self::$PAYER_EMAIL); + } + + /** + * getter for PayPal payer firstname + * + * @return string + */ + public function getPayerFirstName() + { + return $this->_getField(self::$PAYER_FIRST_NAME); + } + + /** + * getter for PayPal payer lastname + * + * @return string + */ + public function getPayerLastName() + { + return $this->_getField(self::$PAYER_LAST_NAME); + } + + /** + * getter for PayPal payer country address field + * + * @return string + */ + public function getPayerAddressCountry() + { + return $this->_getField(self::$PAYER_ADDRESS_COUNTRY); + } + + /** + * getter for PayPal payer city address field + * + * @return string + */ + public function getPayerAddressCity() + { + return $this->_getField(self::$PAYER_ADDRESS_CITY); + } + + /** + * getter for PayPal payer state address field + * + * @return string + */ + public function getPayerAddressState() + { + return $this->_getField(self::$PAYER_ADDRESS_STATE); + } + + /** + * getter for PayPal payer name address field + * + * @return string + */ + public function getPayerAddressName() + { + return $this->_getField(self::$PAYER_ADDRESS_NAME); + } + + /** + * getter for PayPal payer street 1 address field + * + * @return string + */ + public function getPayerAddressStreet1() + { + return $this->_getField(self::$PAYER_ADDRESS_STREET_1); + } + + /** + * getter for PayPal payer street 2 address field + * + * @return string + */ + public function getPayerAddressStreet2() + { + return $this->_getField(self::$PAYER_ADDRESS_STREET_2); + } + + /** + * getter for PayPal payer zipcode address field + * + * @return string + */ + public function getPayerAddressZip() + { + return $this->_getField(self::$PAYER_ADDRESS_ZIP); + } + + /** + * getter for PayPal payer address status + * + * @return string + */ + public function getPayerAddressStatus() + { + return $this->_getField(self::$PAYER_ADDRESS_STATUS); + } + + /** + * getter for PayPal protection eligibility + * + * @return string + */ + public function getProtectionEligibility() + { + return $this->_getField(self::$PROTECTION_ELIGIBILITY); + } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Sofortueberweisung.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Sofortueberweisung.php index a3d8043..6abb97f 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Sofortueberweisung.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/Payment/Sofortueberweisung.php @@ -1,147 +1,185 @@ _getField(self::$SENDER_ACCOUNT_OWNER); - } - - /** - * getter for sofortueberweisung.de sender account number - * - * @return string - */ - public function getSenderAccountNumber() { - return $this->_getField(self::$SENDER_ACCOUNT_NUMBER); - } - - /** - * getter for sofortueberweisung.de sender bank number - * - * @return string - */ - public function getSenderBankNumber() { - return $this->_getField(self::$SENDER_BANK_NUMBER); - } - - /** - * getter for sofortueberweisung.de sender bank name - * - * @return string - */ - public function getSenderBankName() { - return $this->_getField(self::$SENDER_BANK_NAME); - } - - /** - * getter for sofortueberweisung.de sender BIC - * - * @return string - */ - public function getSenderBic() { - return $this->_getField(self::$SENDER_BIC); - } - - /** - * getter for sofortueberweisung.de sender IBAN - * - * @return string - */ - public function getSenderIban() { - return $this->_getField(self::$SENDER_IBAN); - } - - /** - * getter for sofortueberweisung.de sender country - * - * @return string - */ - public function getSenderCountry() { - return $this->_getField(self::$SENDER_COUNTRY); - } - - /** - * getter for sofortueberweisung.de Security criteria - * - * @return string - */ - public function getSecurityCriteria() { - return $this->_getField(self::$SECURITY_CRITERIA); - } +class WirecardCEE_QPay_Response_Toolkit_Order_Payment_Sofortueberweisung extends WirecardCEE_QPay_Response_Toolkit_Order_Payment +{ + /** + * Sender - account owner + * + * @staticvar string + * @internal + */ + private static $SENDER_ACCOUNT_OWNER = 'senderAccountOwner'; + + /** + * Sender - account number + * + * @staticvar string + * @internal + */ + private static $SENDER_ACCOUNT_NUMBER = 'senderAccountNumber'; + + /** + * Sender - bank number + * + * @staticvar string + * @internal + */ + private static $SENDER_BANK_NUMBER = 'senderBankNumber'; + + /** + * Sender - bank name + * + * @staticvar string + * @internal + */ + private static $SENDER_BANK_NAME = 'senderBankName'; + + /** + * Sender - BIC + * + * @staticvar string + * @internal + */ + private static $SENDER_BIC = 'senderBIC'; + + /** + * Sender - IBAN + * + * @staticvar string + * @internal + */ + private static $SENDER_IBAN = 'senderIBAN'; + + /** + * Sender - Country + * + * @staticvar string + * @internal + */ + private static $SENDER_COUNTRY = 'senderCountry'; + + /** + * Security criteria + * + * @staticvar string + * @internal + */ + private static $SECURITY_CRITERIA = 'securityCriteria'; + + /** + * getter for sofortueberweisung.de sender account owner + * + * @return string + */ + public function getSenderAccountOwner() + { + return $this->_getField(self::$SENDER_ACCOUNT_OWNER); + } + + /** + * getter for sofortueberweisung.de sender account number + * + * @return string + */ + public function getSenderAccountNumber() + { + return $this->_getField(self::$SENDER_ACCOUNT_NUMBER); + } + + /** + * getter for sofortueberweisung.de sender bank number + * + * @return string + */ + public function getSenderBankNumber() + { + return $this->_getField(self::$SENDER_BANK_NUMBER); + } + + /** + * getter for sofortueberweisung.de sender bank name + * + * @return string + */ + public function getSenderBankName() + { + return $this->_getField(self::$SENDER_BANK_NAME); + } + + /** + * getter for sofortueberweisung.de sender BIC + * + * @return string + */ + public function getSenderBic() + { + return $this->_getField(self::$SENDER_BIC); + } + + /** + * getter for sofortueberweisung.de sender IBAN + * + * @return string + */ + public function getSenderIban() + { + return $this->_getField(self::$SENDER_IBAN); + } + + /** + * getter for sofortueberweisung.de sender country + * + * @return string + */ + public function getSenderCountry() + { + return $this->_getField(self::$SENDER_COUNTRY); + } + + /** + * getter for sofortueberweisung.de Security criteria + * + * @return string + */ + public function getSecurityCriteria() + { + return $this->_getField(self::$SECURITY_CRITERIA); + } } diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/PaymentIterator.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/PaymentIterator.php index 38619be..6c15e29 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/PaymentIterator.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Order/PaymentIterator.php @@ -1,19 +1,42 @@ _getField(self::$ORDER_NUMBER); - } + /** + * getter for the returned order number + * + * @return string + */ + public function getOrderNumber() + { + return $this->_getField(self::$ORDER_NUMBER); + } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Refund.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Refund.php index 696cab9..988093b 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Refund.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/Refund.php @@ -1,35 +1,59 @@ _getField(self::$CREDIT_NUMBER); - } + /** + * getter for the returned credit number + * + * @return string + */ + public function getCreditNumber() + { + return $this->_getField(self::$CREDIT_NUMBER); + } } diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/RefundReversal.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/RefundReversal.php index f070058..3b90bc9 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/RefundReversal.php +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/RefundReversal.php @@ -1,19 +1,42 @@ _getField(self::$STATUS); - } + /** + * getter for the toolkit operation status + * + * @return string + */ + public function getStatus() + { + return $this->_getField(self::$STATUS); + } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/TransferFund.php b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/TransferFund.php new file mode 100644 index 0000000..aefe14b --- /dev/null +++ b/system/library/wirecard/WirecardCEE/QPay/Response/Toolkit/TransferFund.php @@ -0,0 +1,59 @@ +_getField(self::$CREDIT_NUMBER); + } +} diff --git a/system/library/wirecard/WirecardCEE/QPay/Return/Cancel.php b/system/library/wirecard/WirecardCEE/QPay/Return/Cancel.php index d1b48a4..4875118 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Return/Cancel.php +++ b/system/library/wirecard/WirecardCEE/QPay/Return/Cancel.php @@ -1,18 +1,42 @@ _returnData[self::$ERROR_MESSAGE]); - if(isset($this->_returnData[self::$ERROR_CONSUMER_MESSAGE])) + if (isset( $this->_returnData[self::$ERROR_CONSUMER_MESSAGE] )) { $oError->setConsumerMessage($this->_returnData[self::$ERROR_CONSUMER_MESSAGE]); + } return $oError; } diff --git a/system/library/wirecard/WirecardCEE/QPay/Return/Pending.php b/system/library/wirecard/WirecardCEE/QPay/Return/Pending.php index 4d65815..79e8b7d 100644 --- a/system/library/wirecard/WirecardCEE/QPay/Return/Pending.php +++ b/system/library/wirecard/WirecardCEE/QPay/Return/Pending.php @@ -1,18 +1,42 @@ |WirecardCEE_QPay_Return_Cancel|WirecardCEE_QPay_Return_Failure */ - protected static function _getInstance($return, $secret) { - switch(strtoupper($return['paymentState'])) { + protected static function _getInstance($return, $secret) + { + switch (strtoupper($return['paymentState'])) { case self::STATE_SUCCESS: return self::_getSuccessInstance($return, $secret); break; @@ -76,15 +105,17 @@ protected static function _getInstance($return, $secret) { * * @param string[] $return * @param string $secret - * @access private - * @return WirecardCEE_QPay_Return_Success + * + * @return WirecardCEE_QPay_Return_Success|WirecardCEE_QPay_Return_Success_CreditCard|WirecardCEE_QPay_Return_Success_Ideal|WirecardCEE_QPay_Return_Success_PayPal|WirecardCEE_QPay_Return_Success_Sofortueberweisung + * @throws WirecardCEE_QPay_Exception_InvalidResponseException */ - protected static function _getSuccessInstance($return, $secret) { + protected static function _getSuccessInstance($return, $secret) + { if (!array_key_exists('paymentType', $return)) { throw new WirecardCEE_QPay_Exception_InvalidResponseException('Invalid response from QPAY. Paymenttype is missing.'); } - switch(strtoupper($return['paymentType'])) { + switch (strtoupper($return['paymentType'])) { case WirecardCEE_Stdlib_PaymentTypeAbstract::CCARD: case WirecardCEE_Stdlib_PaymentTypeAbstract::CCARD_MOTO: case WirecardCEE_Stdlib_PaymentTypeAbstract::MAESTRO: diff --git a/system/library/wirecard/WirecardCEE/QPay/ToolkitClient.php b/system/library/wirecard/WirecardCEE/QPay/ToolkitClient.php index 229ff46..c9a8c36 100644 --- a/system/library/wirecard/WirecardCEE/QPay/ToolkitClient.php +++ b/system/library/wirecard/WirecardCEE/QPay/ToolkitClient.php @@ -1,77 +1,205 @@ _fingerprintOrder = new WirecardCEE_Stdlib_FingerprintOrder(); - if(is_null($aConfig)) { + if (is_null($aConfig)) { $aConfig = WirecardCEE_QPay_Module::getConfig(); } - if (isset($aConfig['WirecardCEEQPayConfig'])) { + if (is_array($aConfig) && isset( $aConfig['WirecardCEEQPayConfig'] )) { // we only need the WirecardCEEQPayConfig here $aConfig = $aConfig['WirecardCEEQPayConfig']; } // let's store configuration details in internal objects - $this->oUserConfig = new Zend_Config($aConfig); - $this->oClientConfig = new Zend_Config(WirecardCEE_QPay_Module::getClientConfig()); + $this->oUserConfig = is_object($aConfig) ? $aConfig : new WirecardCEE_Stdlib_Config($aConfig); + $this->oClientConfig = new WirecardCEE_Stdlib_Config(WirecardCEE_QPay_Module::getClientConfig()); // now let's check if the CUSTOMER_ID, SHOP_ID, LANGUAGE and SECRET // exist in $this->oUserConfig object that we created from config array - $sCustomerId = isset($this->oUserConfig->CUSTOMER_ID) ? trim($this->oUserConfig->CUSTOMER_ID) : null; - $sShopId = isset($this->oUserConfig->SHOP_ID) ? trim($this->oUserConfig->SHOP_ID) : null; - $sLanguage = isset($this->oUserConfig->LANGUAGE) ? trim($this->oUserConfig->LANGUAGE) : null; - $sSecret = isset($this->oUserConfig->SECRET) ? trim($this->oUserConfig->SECRET) : null; - $sToolkitPassword = isset($this->oUserConfig->TOOLKIT_PASSWORD) ? trim($this->oUserConfig->TOOLKIT_PASSWORD): null; + $sCustomerId = isset( $this->oUserConfig->CUSTOMER_ID ) ? trim($this->oUserConfig->CUSTOMER_ID) : null; + $sShopId = isset( $this->oUserConfig->SHOP_ID ) ? trim($this->oUserConfig->SHOP_ID) : null; + $sLanguage = isset( $this->oUserConfig->LANGUAGE ) ? trim($this->oUserConfig->LANGUAGE) : null; + $sSecret = isset( $this->oUserConfig->SECRET ) ? trim($this->oUserConfig->SECRET) : null; + $sToolkitPassword = isset( $this->oUserConfig->TOOLKIT_PASSWORD ) ? trim($this->oUserConfig->TOOLKIT_PASSWORD) : null; // If not throw the InvalidArgumentException exception! - if (empty($sCustomerId) || is_null($sCustomerId)) { - throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('CUSTOMER_ID passed to %s is invalid.', __METHOD__)); + if (empty( $sCustomerId ) || is_null($sCustomerId)) { + throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('CUSTOMER_ID passed to %s is invalid.', + __METHOD__)); } - if (empty($sLanguage) || is_null($sLanguage)) { - throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('LANGUAGE passed to %s is invalid.', __METHOD__)); + if (empty( $sLanguage ) || is_null($sLanguage)) { + throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('LANGUAGE passed to %s is invalid.', + __METHOD__)); } - if (empty($sSecret) || is_null($sSecret)) { - throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('SECRET passed to %s is invalid.', __METHOD__)); + if (empty( $sSecret ) || is_null($sSecret)) { + throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('SECRET passed to %s is invalid.', + __METHOD__)); } - if (empty($sToolkitPassword) || is_null($sToolkitPassword)) { - throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('TOOLKIT PASSWORD passed to %s is invalid.', __METHOD__)); + if (empty( $sToolkitPassword ) || is_null($sToolkitPassword)) { + throw new WirecardCEE_QPay_Exception_InvalidArgumentException(sprintf('TOOLKIT PASSWORD passed to %s is invalid.', + __METHOD__)); } - // we're using md5 for hash-ing - WirecardCEE_Stdlib_Fingerprint::setHashAlgorithm(WirecardCEE_Stdlib_Fingerprint::HASH_ALGORITHM_MD5); + // we're using hmac sha512 for hash-ing + WirecardCEE_Stdlib_Fingerprint::setHashAlgorithm(WirecardCEE_Stdlib_Fingerprint::HASH_ALGORITHM_HMAC_SHA512); // everything ok! let's set the fields $this->_setField(self::CUSTOMER_ID, $sCustomerId); @@ -168,24 +305,27 @@ public function __construct(Array $aConfig = null) { * @throws WirecardCEE_Stdlib_Client_Exception_InvalidResponseException * @return WirecardCEE_QPay_Response_Toolkit_Refund */ - public function refund($iOrderNumber, $iAmount, $sCurrency) { + public function refund($iOrderNumber, $iAmount, $sCurrency, $basket=null) + { $this->_requestData[self::COMMAND] = self::$COMMAND_REFUND; $this->_setField(self::ORDER_NUMBER, $iOrderNumber); $this->_setField(self::AMOUNT, $iAmount); $this->_setField(self::CURRENCY, strtoupper($sCurrency)); + $this->_setBasket($basket); $this->_fingerprintOrder->setOrder(Array( - self::CUSTOMER_ID, - self::SHOP_ID, - self::TOOLKIT_PASSWORD, - self::SECRET, - self::COMMAND, - self::LANGUAGE, - self::ORDER_NUMBER, - self::AMOUNT, - self::CURRENCY + self::CUSTOMER_ID, + self::SHOP_ID, + self::TOOLKIT_PASSWORD, + self::SECRET, + self::COMMAND, + self::LANGUAGE, + self::ORDER_NUMBER, + self::AMOUNT, + self::CURRENCY )); + $this->_appendBasketFingerprintOrder($basket); return new WirecardCEE_QPay_Response_Toolkit_Refund($this->_send()); } @@ -196,22 +336,24 @@ public function refund($iOrderNumber, $iAmount, $sCurrency) { * @throws WirecardCEE_Stdlib_Client_Exception_InvalidResponseException * @return WirecardCEE_QPay_Response_Toolkit_RefundReversal */ - public function refundReversal($iOrderNumber, $iCreditNumber) { + public function refundReversal($iOrderNumber, $iCreditNumber) + { $this->_requestData[self::COMMAND] = self::$COMMAND_REFUND_REVERSAL; $this->_setField(self::ORDER_NUMBER, $iOrderNumber); $this->_setField(self::CREDIT_NUMBER, $iCreditNumber); $this->_fingerprintOrder->setOrder(Array( - self::CUSTOMER_ID, - self::SHOP_ID, - self::TOOLKIT_PASSWORD, - self::SECRET, - self::COMMAND, - self::LANGUAGE, - self::ORDER_NUMBER, - self::CREDIT_NUMBER + self::CUSTOMER_ID, + self::SHOP_ID, + self::TOOLKIT_PASSWORD, + self::SECRET, + self::COMMAND, + self::LANGUAGE, + self::ORDER_NUMBER, + self::CREDIT_NUMBER )); + return new WirecardCEE_QPay_Response_Toolkit_RefundReversal($this->_send()); } @@ -221,7 +363,14 @@ public function refundReversal($iOrderNumber, $iCreditNumber) { * @throws WirecardCEE_Stdlib_Client_Exception_InvalidResponseException * @return WirecardCEE_QPay_Response_Toolkit_RecurPayment */ - public function recurPayment($iSourceOrderNumber, $iAmount, $sCurrency, $sOrderDescription, $iOrderNumber = null, $bDepositFlag = null) { + public function recurPayment( + $iSourceOrderNumber, + $iAmount, + $sCurrency, + $sOrderDescription, + $iOrderNumber = null, + $bDepositFlag = null + ) { $this->_requestData[self::COMMAND] = self::$COMMAND_RECUR_PAYMENT; $this->_setField(self::SOURCE_ORDER_NUMBER, $iSourceOrderNumber); @@ -230,29 +379,30 @@ public function recurPayment($iSourceOrderNumber, $iAmount, $sCurrency, $sOrderD $this->_setField(self::ORDER_DESCRIPTION, $sOrderDescription); - if(!is_null($iOrderNumber)) { + if (!is_null($iOrderNumber)) { $this->_setField(self::ORDER_NUMBER, $iOrderNumber); } - if(!is_null($bDepositFlag)) { + if (!is_null($bDepositFlag)) { $this->_setField(self::AUTO_DEPOSIT, $bDepositFlag ? self::$BOOL_TRUE : self::$BOOL_FALSE); } $this->_fingerprintOrder->setOrder(Array( - self::CUSTOMER_ID, - self::SHOP_ID, - self::TOOLKIT_PASSWORD, - self::SECRET, - self::COMMAND, - self::LANGUAGE, - self::ORDER_NUMBER, - self::SOURCE_ORDER_NUMBER, - self::AUTO_DEPOSIT, - self::ORDER_DESCRIPTION, - self::AMOUNT, - self::CURRENCY + self::CUSTOMER_ID, + self::SHOP_ID, + self::TOOLKIT_PASSWORD, + self::SECRET, + self::COMMAND, + self::LANGUAGE, + self::ORDER_NUMBER, + self::SOURCE_ORDER_NUMBER, + self::AUTO_DEPOSIT, + self::ORDER_DESCRIPTION, + self::AMOUNT, + self::CURRENCY )); + return new WirecardCEE_QPay_Response_Toolkit_RecurPayment($this->_send()); } @@ -260,21 +410,23 @@ public function recurPayment($iSourceOrderNumber, $iAmount, $sCurrency, $sOrderD * Returns order details * * @param int|string $iOrderNumber + * * @throws WirecardCEE_Stdlib_Client_Exception_InvalidResponseException * @return WirecardCEE_QPay_Response_Toolkit_GetOrderDetails */ - public function getOrderDetails($iOrderNumber) { + public function getOrderDetails($iOrderNumber) + { $this->_requestData[self::COMMAND] = self::$COMMAND_GET_ORDER_DETAILS; $this->_setField(self::ORDER_NUMBER, $iOrderNumber); $this->_fingerprintOrder->setOrder(Array( - self::CUSTOMER_ID, - self::SHOP_ID, - self::TOOLKIT_PASSWORD, - self::SECRET, - self::COMMAND, - self::LANGUAGE, - self::ORDER_NUMBER + self::CUSTOMER_ID, + self::SHOP_ID, + self::TOOLKIT_PASSWORD, + self::SECRET, + self::COMMAND, + self::LANGUAGE, + self::ORDER_NUMBER )); return new WirecardCEE_QPay_Response_Toolkit_GetOrderDetails($this->_send()); @@ -286,19 +438,21 @@ public function getOrderDetails($iOrderNumber) { * @throws WirecardCEE_Stdlib_Client_Exception_InvalidResponseException * @return WirecardCEE_QPay_Response_Toolkit_ApproveReversal */ - public function approveReversal($iOrderNumber) { + public function approveReversal($iOrderNumber) + { $this->_requestData[self::COMMAND] = self::$COMMAND_APPROVE_REVERSAL; $this->_setField(self::ORDER_NUMBER, $iOrderNumber); $this->_fingerprintOrder->setOrder(Array( - self::CUSTOMER_ID, - self::SHOP_ID, - self::TOOLKIT_PASSWORD, - self::SECRET, - self::COMMAND, - self::LANGUAGE, - self::ORDER_NUMBER + self::CUSTOMER_ID, + self::SHOP_ID, + self::TOOLKIT_PASSWORD, + self::SECRET, + self::COMMAND, + self::LANGUAGE, + self::ORDER_NUMBER )); + return new WirecardCEE_QPay_Response_Toolkit_ApproveReversal($this->_send()); } @@ -308,24 +462,28 @@ public function approveReversal($iOrderNumber) { * @throws WirecardCEE_Stdlib_Client_Exception_InvalidResponseException * @return WirecardCEE_QPay_Response_Toolkit_Deposit */ - public function deposit($iOrderNumber, $iAmount, $sCurrency) { + public function deposit($iOrderNumber, $iAmount, $sCurrency, $basket=null) + { $this->_requestData[self::COMMAND] = self::$COMMAND_DEPOSIT; $this->_setField(self::ORDER_NUMBER, $iOrderNumber); $this->_setField(self::AMOUNT, $iAmount); $this->_setField(self::CURRENCY, strtoupper($sCurrency)); + $this->_setBasket($basket); $this->_fingerprintOrder->setOrder(Array( - self::CUSTOMER_ID, - self::SHOP_ID, - self::TOOLKIT_PASSWORD, - self::SECRET, - self::COMMAND, - self::LANGUAGE, - self::ORDER_NUMBER, - self::AMOUNT, - self::CURRENCY + self::CUSTOMER_ID, + self::SHOP_ID, + self::TOOLKIT_PASSWORD, + self::SECRET, + self::COMMAND, + self::LANGUAGE, + self::ORDER_NUMBER, + self::AMOUNT, + self::CURRENCY )); + $this->_appendBasketFingerprintOrder($basket); + return new WirecardCEE_QPay_Response_Toolkit_Deposit($this->_send()); } @@ -335,25 +493,65 @@ public function deposit($iOrderNumber, $iAmount, $sCurrency) { * @throws WirecardCEE_Stdlib_Client_Exception_InvalidResponseException * @return WirecardCEE_QPay_Response_Toolkit_DepositReversal */ - public function depositReversal($iOrderNumber, $iPaymentNumber) { + public function depositReversal($iOrderNumber, $iPaymentNumber) + { $this->_requestData[self::COMMAND] = self::$COMMAND_DEPOSIT_REVERSAL; $this->_setField(self::ORDER_NUMBER, $iOrderNumber); $this->_setField(self::PAYMENT_NUMBER, $iPaymentNumber); $this->_fingerprintOrder->setOrder(Array( - self::CUSTOMER_ID, - self::SHOP_ID, - self::TOOLKIT_PASSWORD, - self::SECRET, - self::COMMAND, - self::LANGUAGE, - self::ORDER_NUMBER, - self::PAYMENT_NUMBER + self::CUSTOMER_ID, + self::SHOP_ID, + self::TOOLKIT_PASSWORD, + self::SECRET, + self::COMMAND, + self::LANGUAGE, + self::ORDER_NUMBER, + self::PAYMENT_NUMBER )); + return new WirecardCEE_QPay_Response_Toolkit_DepositReversal($this->_send()); } + + /** + * TransferFund + * + * @param string $fundTransferType + * + * @return WirecardCEE_QPay_Request_Backend_TransferFund + * @throws WirecardCEE_Stdlib_Exception_InvalidTypeException + */ + public function transferFund($fundTransferType) + { + + switch ($fundTransferType) { + case self::$TRANSFER_FUND_TYPE_EXISTING: + $client = new WirecardCEE_QPay_Request_Backend_TransferFund_Existing($this->oUserConfig); + break; + + case self::$TRANSFER_FUND_TYPE_SKIRLLWALLET: + $client = new WirecardCEE_QPay_Request_Backend_TransferFund_SkrillWallet($this->oUserConfig); + break; + + case self::$TRANSFER_FUND_TYPE_MONETA: + $client = new WirecardCEE_QPay_Request_Backend_TransferFund_Moneta($this->oUserConfig); + break; + + case self::$TRANSFER_FUND_TYPE_SEPACT: + $client = new WirecardCEE_QPay_Request_Backend_TransferFund_SepaCT($this->oUserConfig); + break; + + default: + throw new WirecardCEE_Stdlib_Exception_InvalidTypeException('Invalid fundTransferType'); + } + + $client->setType($fundTransferType); + + return $client; + } + /** * ******************* * PROTECTED METHODS * @@ -365,15 +563,30 @@ public function depositReversal($iOrderNumber, $iPaymentNumber) { * @see WirecardCEE_Stdlib_Client_ClientAbstract::_getRequestUrl() * @return string */ - protected function _getRequestUrl() { + protected function _getRequestUrl() + { return (string) $this->oClientConfig->TOOLKIT_URL; } + /** + * getter for given field + * + * @param string $name + * + * @return string|null + */ + protected function _getField($name) + { + return array_key_exists($name, $this->_requestData) ? $this->_requestData[$name] : null; + } + /** * Returns the user agent string + * * @return string */ - protected function _getUserAgent() { + protected function _getUserAgent() + { return "{$this->oClientConfig->MODULE_NAME};{$this->oClientConfig->MODULE_VERSION}"; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Basket.php b/system/library/wirecard/WirecardCEE/Stdlib/Basket.php index 0a9e241..a3649c9 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Basket.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Basket.php @@ -1,47 +1,53 @@ getArticleNumber(); - $_quantity = $this->_getItemQuantity($_mArticleNumber); + $_quantity = $this->_getItemQuantity($_mArticleNumber); if (!$_quantity) { $this->_items[md5($_mArticleNumber)] = Array( - 'instance' => $oItem, - self::QUANTITY => $iQuantity + 'instance' => $oItem, + self::QUANTITY => $iQuantity ); - } - else { + } else { $this->_increaseQuantity($_mArticleNumber, $iQuantity); } return $this; } - /** - * Returns the basket total amount - * - * @return float - */ - public function getAmount() { - $total = 0.0; - - foreach($this->_items as $oItem) { - $total += $oItem['instance']->getUnitPrice() * $this->_getItemQuantity($oItem['instance']->getArticleNumber()); - } - - return $total; - } - /** * Returns the basket as pre-defined array (defined by WirecardCEE) * * @return Array */ - public function __toArray() { + public function getData() + { $_basketItems = $this->_items; - $_counter = 1; + $_counter = 1; - $this->_basket[self::BASKET_AMOUNT] = $this->getAmount(); - $this->_basket[self::BASKET_CURRENCY] = $this->_currency; - $this->_basket[self::BASKET_ITEMS] = count($_basketItems); + $this->_basket[self::BASKET_ITEMS] = count($_basketItems); - foreach($_basketItems as $oItem) { + foreach ($_basketItems as $oItem) { $mArticleNumber = $oItem['instance']->getArticleNumber(); - $oItem = $oItem['instance']; - - $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_ARTICLE_NUMBER] = $mArticleNumber; - $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . self::QUANTITY] = $this->_getItemQuantity($mArticleNumber); - $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_UNIT_PRICE] = $oItem->getUnitPrice(); - $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_TAX] = $oItem->getTax(); - $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_DESCRIPTION] = $oItem->getDescription(); - - $_counter++; + $oItem = $oItem['instance']; + + $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_ARTICLE_NUMBER] = $mArticleNumber; + $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . self::QUANTITY] = $this->_getItemQuantity($mArticleNumber); + $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_UNIT_GROSS_AMOUNT] = $oItem->getUnitGrossAmount(); + $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_UNIT_NET_AMOUNT] = $oItem->getUnitNetAmount(); + $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_UNIT_TAX_AMOUNT] = $oItem->getUnitTaxAmount(); + $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_UNIT_TAX_RATE] = $oItem->getUnitTaxRate(); + $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_DESCRIPTION] = $oItem->getDescription(); + $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_NAME] = $oItem->getName(); + $this->_basket[self::BASKET_ITEM_PREFIX . $_counter . WirecardCEE_Stdlib_Basket_Item::ITEM_IMAGE_URL] = $oItem->getImageUrl(); + + $_counter ++; } return $this->_basket; } - /** - * Sets the basket currency - * - * @param string $sCurrency - * @return WirecardCEE_Stdlib_Basket - */ - public function setCurrency($sCurrency) { - $this->_currency = $sCurrency; - return $this; - } - /** * Destructor */ - public function __destruct() { - unset($this); + public function __destruct() + { + unset( $this ); } /*************************************** @@ -160,12 +146,15 @@ public function __destruct() { * @param mixed(integer|string) $mArticleNumber * @param int $iQuantity */ - protected function _increaseQuantity($mArticleNumber, $iQuantity) { - if(!isset($this->_items[md5($mArticleNumber)])) { - throw new Exception(sprintf("There is no item in the basket with article number '%s'. Thrown in %s.", $mArticleNumber, __METHOD__)); + protected function _increaseQuantity($mArticleNumber, $iQuantity) + { + if (!isset( $this->_items[md5($mArticleNumber)] )) { + throw new Exception(sprintf("There is no item in the basket with article number '%s'. Thrown in %s.", + $mArticleNumber, __METHOD__)); } $this->_items[md5($mArticleNumber)][self::QUANTITY] += $iQuantity; + return true; } @@ -173,9 +162,11 @@ protected function _increaseQuantity($mArticleNumber, $iQuantity) { * Returns the quantity of item in basket * * @param mixed(integer|string) $mArticleNumber + * * @return integer */ - protected function _getItemQuantity($mArticleNumber) { - return (int) isset($this->_items[md5($mArticleNumber)]) ? $this->_items[md5($mArticleNumber)][self::QUANTITY] : 0; + protected function _getItemQuantity($mArticleNumber) + { + return (int) isset( $this->_items[md5($mArticleNumber)] ) ? $this->_items[md5($mArticleNumber)][self::QUANTITY] : 0; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Basket/Item.php b/system/library/wirecard/WirecardCEE/Stdlib/Basket/Item.php index 8f72454..afe9858 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Basket/Item.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Basket/Item.php @@ -1,31 +1,59 @@ setArticleNumber($mArticleNumber); } } /** - * Sets the item tax (amount not percentage!) + * Sets the item tax amount + * + * @param mixed(integer|float) $fTaxAmount + * @return WirecardCEE_Stdlib_Basket_Item + */ + public function setUnitTaxAmount($fTaxAmount) + { + $this->_setField(self::ITEM_UNIT_TAX_AMOUNT, $fTaxAmount); + return $this; + } + + /** + * Returns the tax amount + * + * @return mixed(integer|float) + */ + public function getUnitTaxAmount() + { + return $this->_itemData[self::ITEM_UNIT_TAX_AMOUNT]; + } + + /** + * Sets the item tax rate * - * @param integer/float + * @param mixed(integer|float) $fTaxRate + * @return WirecardCEE_Stdlib_Basket_Item */ - public function setTax($fTax) { - $this->_setField(self::ITEM_TAX, $fTax); + public function setUnitTaxRate($fTaxRate) + { + $this->_setField(self::ITEM_UNIT_TAX_RATE, $fTaxRate); return $this; } /** - * Returns the tax + * Returns the tax rate * - * @return multitype: + * @return mixed(integer|float) */ - public function getTax() { - return $this->_itemData[self::ITEM_TAX]; + public function getUnitTaxRate() + { + return $this->_itemData[self::ITEM_UNIT_TAX_RATE]; } /** * Sets the article number for an item * * @param mixed(string|integer) $mArticleNumber + * * @return WirecardCEE_Stdlib_Basket_Item */ - public function setArticleNumber($mArticleNumber) { + public function setArticleNumber($mArticleNumber) + { $this->_setField(self::ITEM_ARTICLE_NUMBER, $mArticleNumber); + return $this; } @@ -79,55 +137,134 @@ public function setArticleNumber($mArticleNumber) { * * @return mixed(string|integer) */ - public function getArticleNumber() { + public function getArticleNumber() + { return $this->_itemData[self::ITEM_ARTICLE_NUMBER]; } /** - * Sets the price for a unit + * Sets the gross amount for a unit * - * @param mixed(integer|float) $fPrice + * @param mixed(integer|float) $fAmount * @return WirecardCEE_Stdlib_Basket_Item */ - public function setUnitPrice($fPrice) { - $this->_setField(self::ITEM_UNIT_PRICE, $fPrice); + public function setUnitGrossAmount($fAmount) + { + $this->_setField(self::ITEM_UNIT_GROSS_AMOUNT, $fAmount); return $this; } /** - * Returns the price for a unit + * Returns the gross amount for a unit * * @return mixed(integer|float) */ - public function getUnitPrice() { - return $this->_itemData[self::ITEM_UNIT_PRICE]; + public function getUnitGrossAmount() + { + return $this->_itemData[self::ITEM_UNIT_GROSS_AMOUNT]; + } + + /** + * Sets the net amount for a unit + * + * @param mixed(integer|float) $fAmount + * @return WirecardCEE_Stdlib_Basket_Item + */ + public function setUnitNetAmount($fAmount) + { + $this->_setField(self::ITEM_UNIT_NET_AMOUNT, $fAmount); + return $this; + } + + /** + * Returns the net amount for a unit + * + * @return mixed(integer|float) + */ + public function getUnitNetAmount() + { + return $this->_itemData[self::ITEM_UNIT_NET_AMOUNT]; } /** * Sets the item description * * @param string $sDescription + * * @return WirecardCEE_Stdlib_Basket_Item */ - public function setDescription($sDescription) { + public function setDescription($sDescription) + { $this->_setField(self::ITEM_DESCRIPTION, (string) $sDescription); + return $this; } /** - * Retuns the item description + * Returns the item description * * @return string */ - public function getDescription() { - return (string) $this->_itemData[self::ITEM_DESCRIPTION]; + public function getDescription() + { + if(array_key_exists(self::ITEM_DESCRIPTION, $this->_itemData)) { + return (string) $this->_itemData[self::ITEM_DESCRIPTION]; + } + return null; + } + + /** + * Sets the item name + * + * @param string $sName + * @return WirecardCEE_Stdlib_Basket_Item + */ + public function setName($sName) { + $this->_setField(self::ITEM_NAME, (string) $sName); + return $this; + } + + /** + * Returns the item name + * + * @return string + */ + public function getName() + { + return (string) $this->_itemData[self::ITEM_NAME]; + } + + + /** + * Sets the item image url + * + * @param string $sImageUrl + * @return WirecardCEE_Stdlib_Basket_Item + */ + public function setImageUrl($sImageUrl) { + $this->_setField(self::ITEM_IMAGE_URL, (string) $sImageUrl); + return $this; + } + + /** + * Returns the item image url + * + * @return string + */ + public function getImageUrl() + { + if(array_key_exists(self::ITEM_IMAGE_URL, $this->_itemData)) { + return (string) $this->_itemData[self::ITEM_IMAGE_URL]; + } + return null; } /** * Destructor */ - public function __destruct() { - unset($this); + public function __destruct() + { + unset( $this ); } /*************************************** @@ -140,7 +277,8 @@ public function __destruct() { * @param string $sName * @param mixed $mValue */ - protected function _setField($sName, $mValue) { + protected function _setField($sName, $mValue) + { $this->_itemData[$sName] = $mValue; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Client/ClientAbstract.php b/system/library/wirecard/WirecardCEE/Stdlib/Client/ClientAbstract.php index 24eb993..8d0741f 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Client/ClientAbstract.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Client/ClientAbstract.php @@ -1,23 +1,44 @@ _httpClient = $httpClient; return $this; } @@ -202,18 +247,20 @@ public function setZendHttpClient(Zend_Http_Client $httpClient) { /** * Returns the user configuration object * - * @return Zend_Config + * @return WirecardCEE_Stdlib_Config */ - public function getUserConfig() { + public function getUserConfig() + { return $this->oUserConfig; } /** * Returns the client configuration object * - * @return Zend_Config + * @return WirecardCEE_Stdlib_Config */ - public function getClientConfig() { + public function getClientConfig() + { return $this->oClientConfig; } @@ -222,12 +269,13 @@ public function getClientConfig() { * * @return string */ - public function getUserAgentString() { - $oClientConfig = new Zend_Config(WirecardCEE_Stdlib_Module::getClientConfig()); + public function getUserAgentString() + { + $oClientConfig = new WirecardCEE_Stdlib_Config(WirecardCEE_Stdlib_Module::getClientConfig()); $sUserAgent = $this->_getUserAgent() . ";{$oClientConfig->MODULE_NAME};{$oClientConfig->MODULE_VERSION};"; - foreach($oClientConfig->DEPENDENCIES as $sValue) { + foreach ($oClientConfig->DEPENDENCIES as $sValue) { $sUserAgent .= is_string($sValue) ? $sValue . ";" : $sValue->CURRENT . ";"; } @@ -236,17 +284,20 @@ public function getUserAgentString() { /** * Returns all the request data as an array + * * @return array */ - public function getRequestData() { + public function getRequestData() + { return (array) $this->_requestData; } /** * Destructor */ - public function __destruct() { - unset($this); + public function __destruct() + { + unset( $this ); } /************************** @@ -274,8 +325,9 @@ abstract protected function _getUserAgent(); * * @param string $secret */ - protected function _setSecret($secret) { - $this->_secret = $secret; + protected function _setSecret($secret) + { + $this->_secret = $secret; $this->_fingerprintOrder[] = self::SECRET; } @@ -285,7 +337,8 @@ protected function _setSecret($secret) { * @throws WirecardCEE_Stdlib_Client_Exception_InvalidResponseException * @return Zend_Http_Response */ - protected function _send() { + protected function _send() + { if (count($this->_fingerprintOrder)) { $this->_fingerprintString = $this->_calculateFingerprint(); if (!is_null($this->_fingerprintString)) { @@ -295,8 +348,7 @@ protected function _send() { try { $response = $this->_sendRequest(); - } - catch (Zend_Http_Client_Exception $e) { + } catch (Zend_Http_Client_Exception $e) { throw new WirecardCEE_Stdlib_Client_Exception_InvalidResponseException($e->getMessage(), $e->getCode(), $e); } @@ -304,20 +356,21 @@ protected function _send() { } /** - * method to calculate md5 fingerprintstring from given fields. + * method to calculate fingerprint from given fields. * - * @return string - md5 fingerprint hash + * @return string - fingerprint hash */ - protected function _calculateFingerprint() { + protected function _calculateFingerprint() + { $oFingerprintOrder = $this->_fingerprintOrder; if ($this->_fingerprintOrderType == self::$FINGERPRINT_TYPE_DYNAMIC) { // we have to add REQUESTFINGERPRINTORDER to local fingerprintOrder to add correct value to param list - $oFingerprintOrder[] = self::REQUEST_FINGERPRINT_ORDER; + $oFingerprintOrder[] = self::REQUEST_FINGERPRINT_ORDER; $this->_requestData[self::REQUEST_FINGERPRINT_ORDER] = (string) $oFingerprintOrder; } // fingerprintFields == requestFields + secret - secret MUST NOT be send as param - $fingerprintFields = $this->_requestData; + $fingerprintFields = $this->_requestData; $fingerprintFields[self::SECRET] = $this->_secret; return WirecardCEE_Stdlib_Fingerprint::generate($fingerprintFields, $oFingerprintOrder); @@ -329,11 +382,12 @@ protected function _calculateFingerprint() { * @throws Zend_Http_Client_Exception * @return Zend_Http_Response */ - protected function _sendRequest() { + protected function _sendRequest() + { $httpClient = $this->_getZendHttpClient(); $httpClient->setParameterPost($this->_requestData); $httpClient->setConfig(Array( - 'useragent' => $this->getUserAgentString() + 'useragent' => $this->getUserAgentString() )); return $httpClient->request(Zend_Http_Client::POST); @@ -345,22 +399,26 @@ protected function _sendRequest() { * the ArrayAccess interface meaning we can use the array annotation [] on an object * * @see WirecardCEE_Stdlib_FingerprintOrder + * * @param string $name * @param mixed $value */ - protected function _setField($name, $value) { + protected function _setField($name, $value) + { $this->_requestData[(string) $name] = (string) $value; - $this->_fingerprintOrder[] = (string) $name; + $this->_fingerprintOrder[] = (string) $name; } /** * Check if we the field is set in the _requestData array * * @param string $sFieldname + * * @return boolean */ - protected function _isFieldSet($sFieldname) { - return (bool) (isset($this->_requestData[$sFieldname]) && !empty($this->_requestData[$sFieldname])); + protected function _isFieldSet($sFieldname) + { + return (bool) ( isset( $this->_requestData[$sFieldname] ) && !empty( $this->_requestData[$sFieldname] ) ); } /** @@ -369,16 +427,112 @@ protected function _isFieldSet($sFieldname) { * * @return Zend_Http_Client */ - protected function _getZendHttpClient() { + protected function _getZendHttpClient() + { if (is_null($this->_httpClient)) { // @todo implement SSL check here $this->_httpClient = new Zend_Http_Client($this->_getRequestUrl()); - } - else { + } else { $this->_httpClient->resetParameters(true); $this->_httpClient->setUri($this->_getRequestUrl()); } return $this->_httpClient; } + + /** + * Sets shopping basket data to _requestData + * + * @param WirecardCEE_Stdlib_Basket $basket + */ + protected function _setBasket($basket) + { + if($basket == null) { + return; + } + + foreach($basket->getData() AS $key => $value) { + $this->_setField($key, $value); + } + } + + /** + * Appends basket to fingerprint order + * + * @param WirecardCEE_Stdlib_Basket $basket + */ + protected function _appendBasketFingerprintOrder($basket) + { + if($basket == null) { + return; + } + + $data = $basket->getData(); + $this->_fingerprintOrder[] = WirecardCEE_Stdlib_Basket::BASKET_ITEMS; + for ($i = 1; $i <= (int)$data[WirecardCEE_Stdlib_Basket::BASKET_ITEMS]; $i++) { + $this->_fingerprintOrder[] = WirecardCEE_Stdlib_Basket::BASKET_ITEM_PREFIX . $i . WirecardCEE_Stdlib_Basket_Item::ITEM_ARTICLE_NUMBER; + $this->_fingerprintOrder[] = WirecardCEE_Stdlib_Basket::BASKET_ITEM_PREFIX . $i . WirecardCEE_Stdlib_Basket_Item::ITEM_QUANTITY; + $this->_fingerprintOrder[] = WirecardCEE_Stdlib_Basket::BASKET_ITEM_PREFIX . $i . WirecardCEE_Stdlib_Basket_Item::ITEM_DESCRIPTION; + $this->_fingerprintOrder[] = WirecardCEE_Stdlib_Basket::BASKET_ITEM_PREFIX . $i . WirecardCEE_Stdlib_Basket_Item::ITEM_NAME; + $this->_fingerprintOrder[] = WirecardCEE_Stdlib_Basket::BASKET_ITEM_PREFIX . $i . WirecardCEE_Stdlib_Basket_Item::ITEM_IMAGE_URL; + $this->_fingerprintOrder[] = WirecardCEE_Stdlib_Basket::BASKET_ITEM_PREFIX . $i . WirecardCEE_Stdlib_Basket_Item::ITEM_UNIT_GROSS_AMOUNT; + $this->_fingerprintOrder[] = WirecardCEE_Stdlib_Basket::BASKET_ITEM_PREFIX . $i . WirecardCEE_Stdlib_Basket_Item::ITEM_UNIT_NET_AMOUNT; + $this->_fingerprintOrder[] = WirecardCEE_Stdlib_Basket::BASKET_ITEM_PREFIX . $i . WirecardCEE_Stdlib_Basket_Item::ITEM_UNIT_TAX_AMOUNT; + $this->_fingerprintOrder[] = WirecardCEE_Stdlib_Basket::BASKET_ITEM_PREFIX . $i . WirecardCEE_Stdlib_Basket_Item::ITEM_UNIT_TAX_RATE; + } + } + + protected function _composeCustomerStatement($paymenttype, $prefix = null, $uniqString = null) + { + if ($prefix === null) { + $prefix = 'Web Shop'; + } + + $prefix = substr($prefix, 0, 9); + + if (!strlen($uniqString)) { + $uniqString = $this->generateUniqString(10); + } + + if ($paymenttype == WirecardCEE_Stdlib_PaymentTypeAbstract::POLI) { + $customerStatement = $prefix; + } else { + $customerStatement = sprintf('%s Id:%s', $prefix, $uniqString); + } + + return $customerStatement; + } + + /** + * returns a uniq String with default length 10. + * + * @param int $length + * + * @return string + */ + public function generateUniqString($length = 10) + { + $tid = ''; + + $alphabet = "023456789abcdefghikmnopqrstuvwxyzABCDEFGHIKMNOPQRSTUVWXYZ"; + + for ($i = 0; $i < $length; $i ++) { + $c = substr($alphabet, mt_rand(0, strlen($alphabet) - 1), 1); + + if (( ( $i % 2 ) == 0 ) && !is_numeric($c)) { + $i --; + continue; + } + if (( ( $i % 2 ) == 1 ) && is_numeric($c)) { + $i --; + continue; + } + + $alphabet = str_replace($c, '', $alphabet); + $tid .= $c; + } + + return $tid; + } + } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Client/Exception/ExceptionInterface.php b/system/library/wirecard/WirecardCEE/Stdlib/Client/Exception/ExceptionInterface.php index 7bdea4f..bf6ac0f 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Client/Exception/ExceptionInterface.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Client/Exception/ExceptionInterface.php @@ -1,19 +1,42 @@ _index = 0; + $this->_data = array(); + foreach ($array as $key => $value) { + if (is_array($value)) { + $this->_data[$key] = new self($value); + } else { + $this->_data[$key] = $value; + } + } + $this->_count = count($this->_data); + } + + /** + * Support isset() overloading on PHP 5.1 + * + * @param string $name + * + * @return boolean + */ + public function __isset($name) + { + return (bool) isset( $this->_data[$name] ); + } + + /** + * Support unset() overloading on PHP 5.1 + * + * @param string $name + * + * @return void + */ + public function __unset($name) + { + unset( $this->_data[$name] ); + $this->_count = count($this->_data); + $this->_skipNextIteration = true; + } + + /** + * Magic function so that $obj->value will work. + * + * @param string $name + * + * @return mixed + */ + public function __get($name) + { + return $this->get($name); + } + + /** + * Retrieve a value and return $default if there is no element set. + * + * @param string $name + * @param mixed $default + * + * @return mixed + */ + public function get($name, $default = null) + { + $result = $default; + if (array_key_exists($name, $this->_data)) { + $result = $this->_data[$name]; + } + + return $result; + } + + /** + * Defined by Countable interface + * + * @return int + */ + public function count() + { + return $this->_count; + } + + /** + * Defined by Iterator interface + * + * @return mixed + */ + public function current() + { + $this->_skipNextIteration = false; + + return current($this->_data); + } + + /** + * Defined by Iterator interface + * + * @return mixed + */ + public function key() + { + return key($this->_data); + } + + /** + * Defined by Iterator interface + */ + public function next() + { + if ($this->_skipNextIteration) { + $this->_skipNextIteration = false; + + return; + } + next($this->_data); + $this->_index ++; + } + + /** + * Defined by Iterator interface + */ + public function rewind() + { + $this->_skipNextIteration = false; + reset($this->_data); + $this->_index = 0; + } + + /** + * Defined by Iterator interface + * + * @return boolean + */ + public function valid() + { + return $this->_index < $this->_count; + } + + /** + * Return an associative array of the stored data. + * + * @return array + */ + public function toArray() + { + $array = array(); + $data = $this->_data; + foreach ($data as $key => $value) { + if ($value instanceof WirecardCEE_Stdlib_Config) { + $array[$key] = $value->toArray(); + } else { + $array[$key] = $value; + } + } + + return $array; + } +} \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Config/client.config.php b/system/library/wirecard/WirecardCEE/Stdlib/Config/client.config.php index d4de992..74ab763 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Config/client.config.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Config/client.config.php @@ -1,24 +1,46 @@ 'WirecardCEE_Stdlib', - 'MODULE_VERSION' => '3.0.0', - 'DEPENDENCIES' => array( - 'FRAMEWORK_NAME' => 'Zend_Framework', - 'FRAMEWORK_VERSION' => Array( - 'MINIMUM' => '1.11.10', - 'CURRENT' => Zend_Version::VERSION - ), - 'SCRIPTING_LANG' => 'PHP', - 'SCRIPTING_LANG_VERSION' => '5.2' + 'MODULE_NAME' => 'WirecardCEE_Stdlib', + 'MODULE_VERSION' => '3.0.2', + 'DEPENDENCIES' => array( + 'FRAMEWORK_NAME' => 'Zend_Framework', + 'FRAMEWORK_VERSION' => Array( + 'MINIMUM' => '1.11.10', + 'CURRENT' => Zend_Version::VERSION ), - 'USE_DEBUG' => FALSE + 'SCRIPTING_LANG' => 'PHP', + 'SCRIPTING_LANG_VERSION' => '5.2' + ), + 'USE_DEBUG' => false ); \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/ConsumerData.php b/system/library/wirecard/WirecardCEE/Stdlib/ConsumerData.php index c46b57d..1a31a50 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/ConsumerData.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/ConsumerData.php @@ -1,13 +1,35 @@ _setField(self::$EMAIL, $mailAddress); + return $this; } @@ -100,10 +140,13 @@ public function setEmail($mailAddress) { * setter for the birthdate of the consumer * * @param DateTime $birthDate + * * @return WirecardCEE_Stdlib_ConsumerData */ - public function setBirthDate(DateTime $birthDate) { + public function setBirthDate(DateTime $birthDate) + { $this->_setField(self::$BIRTH_DATE, $birthDate->format(self::$BIRTH_DATE_FORMAT)); + return $this; } @@ -111,10 +154,13 @@ public function setBirthDate(DateTime $birthDate) { * setter for the tax identification number of the consumer * * @param string $taxIdentificationNumber + * * @return WirecardCEE_Stdlib_ConsumerData */ - public function setTaxIdentificationNumber($taxIdentificationNumber) { + public function setTaxIdentificationNumber($taxIdentificationNumber) + { $this->_setField(self::$TAX_IDENTIFICATION_NUMBER, $taxIdentificationNumber); + return $this; } @@ -122,10 +168,13 @@ public function setTaxIdentificationNumber($taxIdentificationNumber) { * setter for the drivers license number of the consumer * * @param string $driversLicenseNumber + * * @return WirecardCEE_Stdlib_ConsumerData */ - public function setDriversLicenseNumber($driversLicenseNumber) { + public function setDriversLicenseNumber($driversLicenseNumber) + { $this->_setField(self::$DRIVERS_LICENSE_NUMBER, $driversLicenseNumber); + return $this; } @@ -133,10 +182,13 @@ public function setDriversLicenseNumber($driversLicenseNumber) { * setter for the drivers license country of the consumer * * @param string $driversLicenseCountry + * * @return WirecardCEE_Stdlib_ConsumerData */ - public function setDriversLicenseCountry($driversLicenseCountry) { + public function setDriversLicenseCountry($driversLicenseCountry) + { $this->_setField(self::$DRIVERS_LICENSE_COUNTRY, $driversLicenseCountry); + return $this; } @@ -144,10 +196,49 @@ public function setDriversLicenseCountry($driversLicenseCountry) { * setter for the drivers license state of the consumer * * @param string $driversLicenseState + * * @return WirecardCEE_Stdlib_ConsumerData */ - public function setDriversLicenseState($driversLicenseState) { + public function setDriversLicenseState($driversLicenseState) + { $this->_setField(self::$DRIVERS_LICENSE_STATE, $driversLicenseState); + + return $this; + } + + /** + * @param string $companyName + * + * @return WirecardCEE_Stdlib_ConsumerData + */ + public function setCompanyName($companyName) + { + $this->_setField(self::$COMPANY_NAME, $companyName); + + return $this; + } + + /** + * @param string $companyVatId + * + * @return WirecardCEE_Stdlib_ConsumerData + */ + public function setCompanyVatId($companyVatId) + { + $this->_setField(self::$COMPANY_VAT_ID, $companyVatId); + + return $this; + } + + /** + * @param string $companyTradeRegistryNumber + * + * @return WirecardCEE_Stdlib_ConsumerData + */ + public function setCompanyTradeRegistryNumber($companyTradeRegistryNumber) + { + $this->_setField(self::$COMPANY_TRADE_REGISTRY_NUMBER, $companyTradeRegistryNumber); + return $this; } @@ -156,11 +247,14 @@ public function setDriversLicenseState($driversLicenseState) { * used {@link WirecardCEE_Stdlib_ConsumerData::getData()} * * @param WirecardCEE_Stdlib_ConsumerData_Address $address + * * @return WirecardCEE_Stdlib_ConsumerData */ - public function addAddressInformation(WirecardCEE_Stdlib_ConsumerData_Address $address) { - $consumerData = array_merge($this->_consumerData, $address->getData()); + public function addAddressInformation(WirecardCEE_Stdlib_ConsumerData_Address $address) + { + $consumerData = array_merge($this->_consumerData, $address->getData()); $this->_consumerData = $consumerData; + return $this; } @@ -168,10 +262,13 @@ public function addAddressInformation(WirecardCEE_Stdlib_ConsumerData_Address $a * setter for the consumer IP-Address * * @param string $consumerIpAddress + * * @return WirecardCEE_Stdlib_ConsumerData */ - public function setIpAddress($consumerIpAddress) { + public function setIpAddress($consumerIpAddress) + { $this->_setField(self::$IP_ADDRESS, $consumerIpAddress); + return $this; } @@ -179,10 +276,13 @@ public function setIpAddress($consumerIpAddress) { * setter for the consumer user-agent * * @param string $consumerUserAgent + * * @return WirecardCEE_Stdlib_ConsumerData */ - public function setUserAgent($consumerUserAgent) { + public function setUserAgent($consumerUserAgent) + { $this->_setField(self::$USER_AGENT, $consumerUserAgent); + return $this; } @@ -191,27 +291,28 @@ public function setUserAgent($consumerUserAgent) { * * @return string[] */ - public function getData() { + public function getData() + { return $this->_consumerData; } /** * Static getter for consumerUserAgentField * - * @internal * @return string */ - public static function getConsumerUserAgentFieldName() { + public static function getConsumerUserAgentFieldName() + { return self::$PREFIX . self::$USER_AGENT; } /** * Static getter for consumerIpField * - * @internal * @return string */ - public static function getConsumerIpAddressFieldName() { + public static function getConsumerIpAddressFieldName() + { return self::$PREFIX . self::$IP_ADDRESS; } @@ -220,9 +321,11 @@ public static function getConsumerIpAddressFieldName() { * * @param string $name * @param string $value + * * @access private */ - protected function _setField($name, $value) { + protected function _setField($name, $value) + { // e.g. consumerBillingFirstname $this->_consumerData[self::$PREFIX . $name] = (string) $value; } diff --git a/system/library/wirecard/WirecardCEE/Stdlib/ConsumerData/Address.php b/system/library/wirecard/WirecardCEE/Stdlib/ConsumerData/Address.php index 2f1814a..5d6ad53 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/ConsumerData/Address.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/ConsumerData/Address.php @@ -1,13 +1,35 @@ _addressType = $addressType; } @@ -134,10 +172,13 @@ public function __construct($addressType) { * setter for the firstname used for the given address. * * @param string $firstname + * * @return WirecardCEE_Stdlib_ConsumerData_Address */ - public function setFirstname($firstname) { + public function setFirstname($firstname) + { $this->_setField(self::$FIRSTNAME, $firstname); + return $this; } @@ -145,10 +186,13 @@ public function setFirstname($firstname) { * setter for the lastname used for the given address. * * @param string $lastname + * * @return WirecardCEE_Stdlib_ConsumerData_Address */ - public function setLastname($lastname) { + public function setLastname($lastname) + { $this->_setField(self::$LASTNAME, $lastname); + return $this; } @@ -156,10 +200,13 @@ public function setLastname($lastname) { * setter for the addressfield 1 used for the given address. * * @param string $address1 + * * @return WirecardCEE_Stdlib_ConsumerData_Address */ - public function setAddress1($address1) { + public function setAddress1($address1) + { $this->_setField(self::$ADDRESS1, $address1); + return $this; } @@ -167,10 +214,13 @@ public function setAddress1($address1) { * setter for the addressfield 2 used for the given address. * * @param string $address2 + * * @return WirecardCEE_Stdlib_ConsumerData_Address */ - public function setAddress2($address2) { + public function setAddress2($address2) + { $this->_setField(self::$ADDRESS2, $address2); + return $this; } @@ -178,10 +228,13 @@ public function setAddress2($address2) { * setter for the city used for the given address. * * @param string $city + * * @return WirecardCEE_Stdlib_ConsumerData_Address */ - public function setCity($city) { + public function setCity($city) + { $this->_setField(self::$CITY, $city); + return $this; } @@ -189,10 +242,13 @@ public function setCity($city) { * setter for the country used for the given address. * * @param string $country + * * @return WirecardCEE_Stdlib_ConsumerData_Address */ - public function setCountry($country) { + public function setCountry($country) + { $this->_setField(self::$COUNTRY, $country); + return $this; } @@ -200,10 +256,13 @@ public function setCountry($country) { * setter for the state used for the given address. * * @param string $state + * * @return WirecardCEE_Stdlib_ConsumerData_Address */ - public function setState($state) { + public function setState($state) + { $this->_setField(self::$STATE, $state); + return $this; } @@ -211,10 +270,13 @@ public function setState($state) { * setter for the zip code used for the given address. * * @param string $zipCode + * * @return WirecardCEE_Stdlib_ConsumerData_Address */ - public function setZipCode($zipCode) { + public function setZipCode($zipCode) + { $this->_setField(self::$ZIP_CODE, $zipCode); + return $this; } @@ -222,10 +284,13 @@ public function setZipCode($zipCode) { * setter for the phone number used for the given address. * * @param string $phone + * * @return WirecardCEE_Stdlib_ConsumerData_Address */ - public function setPhone($phone) { + public function setPhone($phone) + { $this->_setField(self::$PHONE, $phone); + return $this; } @@ -233,10 +298,13 @@ public function setPhone($phone) { * setter for the fax number used for the given address. * * @param string $fax + * * @return WirecardCEE_Stdlib_ConsumerData_Address */ - public function setFax($fax) { + public function setFax($fax) + { $this->_setField(self::$FAX, $fax); + return $this; } @@ -246,7 +314,8 @@ public function setFax($fax) { * @param string $name * @param string $value */ - protected function _setField($name, $value) { + protected function _setField($name, $value) + { // e.g. consumerBillingFirstname $this->_addressData[self::$PREFIX . $this->_addressType . $name] = (string) $value; } @@ -256,7 +325,8 @@ protected function _setField($name, $value) { * * @return string[] */ - public function getData() { + public function getData() + { return $this->_addressData; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Error.php b/system/library/wirecard/WirecardCEE/Stdlib/Error.php index c40c30b..8ac5c7c 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Error.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Error.php @@ -1,21 +1,44 @@ _message; } @@ -44,10 +68,13 @@ public function getMessage() { * Error Message setter * * @param string $message + * * @return WirecardCEE_Stdlib_Error */ - public function setMessage($message) { + public function setMessage($message) + { $this->_message = (string) $message; + return $this; } @@ -55,10 +82,13 @@ public function setMessage($message) { * Consumer message setter * * @param string $consumerMessage + * * @return WirecardCEE_Stdlib_Error */ - public function setConsumerMessage($consumerMessage) { + public function setConsumerMessage($consumerMessage) + { $this->_consumerMessage = (string) $consumerMessage; + return $this; } @@ -67,7 +97,8 @@ public function setConsumerMessage($consumerMessage) { * * @return string */ - public function getConsumerMessage() { + public function getConsumerMessage() + { return (string) $this->_consumerMessage; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Exception/ExceptionInterface.php b/system/library/wirecard/WirecardCEE/Stdlib/Exception/ExceptionInterface.php index b78a988..ff55968 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Exception/ExceptionInterface.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Exception/ExceptionInterface.php @@ -1,19 +1,42 @@ pair) or string ("first, second, thrid, fourth" format) * * @param string|array $mItems + * * @throws WirecardCEE_Stdlib_Exception_InvalidArgumentException */ - public function __construct($mItems = null) { + public function __construct($mItems = null) + { $this->_fingeprintOrder = Array(); - if(!is_null($mItems) && !$this->setOrder($mItems)) { - throw new WirecardCEE_Stdlib_Exception_InvalidArgumentException(sprintf("Unknown fingerprint format in %s on line %s", __METHOD__, __LINE__)); + if (!is_null($mItems) && !$this->setOrder($mItems)) { + throw new WirecardCEE_Stdlib_Exception_InvalidArgumentException(sprintf("Unknown fingerprint format in %s on line %s", + __METHOD__, __LINE__)); } } @@ -58,20 +84,21 @@ public function __construct($mItems = null) { * or from an existing array (normal "key=>pair" format). * * @param string|array $mItems + * * @return boolean */ - public function setOrder($mItems) { - if(is_array($mItems) && count($mItems)) { + public function setOrder($mItems) + { + if (is_array($mItems) && count($mItems)) { $this->_fingeprintOrder = Array(); - foreach($mItems as $sItem) { + foreach ($mItems as $sItem) { $this->_fingeprintOrder[] = trim($sItem); } + return true; - } - elseif(is_string($mItems)) { + } elseif (is_string($mItems)) { return $this->setOrder(explode(",", $mItems)); - } - else { + } else { return false; } } @@ -83,7 +110,8 @@ public function setOrder($mItems) { * * @return array */ - public function __toArray() { + public function __toArray() + { return (array) $this->_fingeprintOrder; } @@ -92,7 +120,8 @@ public function __toArray() { * * @return string */ - public function __toString() { + public function __toString() + { return (string) implode(",", $this->_fingeprintOrder); } @@ -102,11 +131,11 @@ public function __toString() { * @param int|string $mOffset * @param int|string $mValue */ - public function offsetSet($mOffset, $mValue) { - if(!$mOffset) { + public function offsetSet($mOffset, $mValue) + { + if (!$mOffset) { $this->_fingeprintOrder[] = trim($mValue); - } - else { + } else { $this->_fingeprintOrder[$mOffset] = trim($mValue); } } @@ -115,20 +144,24 @@ public function offsetSet($mOffset, $mValue) { * @see ArrayAccess::offsetGet($mOffset) * * @param int|string $mOffset + * * @return Mixed */ - public function offsetGet($mOffset) { - return isset($this->_fingeprintOrder[$mOffset]) ? $this->_fingeprintOrder[$mOffset] : null; + public function offsetGet($mOffset) + { + return isset( $this->_fingeprintOrder[$mOffset] ) ? $this->_fingeprintOrder[$mOffset] : null; } /** * @see ArrayAccess::offsetExists($mOffset) * * @param int|string $mOffset + * * @return boolean */ - public function offsetExists($mOffset) { - return (bool) isset($this->_fingeprintOrder[$mOffset]); + public function offsetExists($mOffset) + { + return (bool) isset( $this->_fingeprintOrder[$mOffset] ); } /** @@ -136,8 +169,9 @@ public function offsetExists($mOffset) { * * @param int|string $mOffset */ - public function offsetUnset($mOffset) { - unset($this->_fingeprintOrder[$mOffset]); + public function offsetUnset($mOffset) + { + unset( $this->_fingeprintOrder[$mOffset] ); } /** @@ -147,7 +181,8 @@ public function offsetUnset($mOffset) { * @see IteratorAggregate::getIterator() * @return ArrayIterator */ - public function getIterator() { + public function getIterator() + { return new ArrayIterator($this->_fingeprintOrder); } @@ -157,7 +192,8 @@ public function getIterator() { * @see Countable::count(); * @return number */ - public function count() { + public function count() + { return (int) count($this->_fingeprintOrder); } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Module.php b/system/library/wirecard/WirecardCEE/Stdlib/Module.php index 2025663..9053f40 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Module.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Module.php @@ -1,29 +1,52 @@ 'Bank Austria Creditanstalt', - 'BB-Racon' => 'Bank Burgenland', - 'ARZ|BAF' => 'Ärztebank', - 'ARZ|BCS' => 'Bankhaus Carl Spängler & Co. AG', - 'ARZ|BSS' => 'Bankhaus Schelhammer & Schattera AG', - 'Bawag|B' => 'BAWAG', - 'ARZ|VB' => 'Die östereischischen Volksbanken', - 'Bawag|E' => 'easybank', - 'Spardat|EBS' => 'Erste Bank und Sparkassen', - 'ARZ|GB' => 'Gärtnerbank', - 'ARZ|HAA' => 'Hypo Alpe-Adria-Bank AG, HYPO Alpe-Adria-Bank International AG', - 'ARZ|HI' => 'Hypo Investmentbank AG', - 'ARZ|HTB' => 'Hypo Tirol Bank AG', - 'ARZ|IB' => 'Immo-Bank', - 'ARZ|IKB' => 'Investkredit Bank AG', - 'ARZ|NLH' => 'Niesterösterreichische Landes-Hypothekenbank AG', - 'ARZ|AB' => 'Österreichische Apothekerbank', - 'Bawag|P' => 'PSK Bank', - 'Racon' => 'Raiffeisen Bank', - 'ARZ|SB' => 'Schoellerbank AG', - 'Bawag|S' => 'Sparda Bank', - 'ARZ|SBL' => 'Sparda-Bank Linz', - 'ARZ|SBVI' => 'Sparda-Bank Villach/Innsbruck', - 'ARZ|VLH' => 'Vorarlberger Landes- und Hypothekerbank AG', - 'ARZ|VRB' => 'VR-Bank Braunau' + 'ARZ|AAB' => 'Austrian Anadi Bank AG', + 'BA-CA' => 'Bank Austria Creditanstalt', + 'BB-Racon' => 'Bank Burgenland', + 'ARZ|BD' => 'bankdirekt.at AG', + 'ARZ|BAF' => 'Ärztebank', + 'ARZ|BCS' => 'Bankhaus Carl Spängler & Co. AG', + 'ARZ|BSS' => 'Bankhaus Schelhammer & Schattera AG', + 'Bawag|B' => 'BAWAG', + 'ARZ|VB' => 'Die österreichischen Volksbanken', + 'Bawag|E' => 'easybank', + 'Spardat|EBS' => 'Erste Bank und Sparkassen', + 'ARZ|GB' => 'Gärtnerbank', + 'ARZ|HAA' => 'Hypo Alpe-Adria-Bank AG, HYPO Alpe-Adria-Bank International AG', + 'ARZ|HI' => 'Hypo Investmentbank AG', + 'ARZ|HTB' => 'Hypo Tirol Bank AG', + 'ARZ|IB' => 'Immo-Bank', + 'ARZ|IKB' => 'Investkredit Bank AG', + 'ARZ|NLH' => 'Niederösterreichische Landes-Hypothekenbank AG', + 'ARZ|AB' => 'Österreichische Apothekerbank', + 'ARZ|PB' => 'PRIVAT BANK AG', + 'Bawag|P' => 'PSK Bank', + 'Racon' => 'Raiffeisen Bank', + 'ARZ|SB' => 'Schoellerbank AG', + 'Bawag|S' => 'Sparda Bank', + 'ARZ|SBL' => 'Sparda-Bank Linz', + 'ARZ|SBVI' => 'Sparda-Bank Villach/Innsbruck', + 'ARZ|VLH' => 'Vorarlberger Landes- und Hypothekerbank AG', + 'ARZ|VRB' => 'VR-Bank Braunau' ); /** @@ -88,36 +115,40 @@ abstract class WirecardCEE_Stdlib_PaymentTypeAbstract { * @todo would be nice to get this values directly from the server so the data is in sync */ protected static $_idl_financial_institutions = Array( - 'ABNAMROBANK' => 'ABN AMRO Bank', - 'ASNBANK' => 'ASN Bank', - 'FRIESLANDBANK' => 'Friesland Bank', - 'INGBANK' => 'ING', - 'KNAB' => 'knab', - 'RABOBANK' => 'Rabobank', - 'SNSBANK' => 'SNS Bank', - 'REGIOBANK' => 'RegioBank', - 'TRIODOSBANK' => 'Triodos Bank', - 'VANLANSCHOT' => 'Van Lanschot Bankiers' + 'ABNAMROBANK' => 'ABN AMRO Bank', + 'ASNBANK' => 'ASN Bank', + 'INGBANK' => 'ING', + 'KNAB' => 'Knab', + 'RABOBANK' => 'Rabobank', + 'SNSBANK' => 'SNS Bank', + 'REGIOBANK' => 'Regio Bank', + 'TRIODOSBANK' => 'Triodos Bank', + 'VANLANSCHOT' => 'Van Lanschot Bankiers' ); + /** * check if the given paymenttype has financial institions * * @param string $paymentType + * * @return bool */ - public static function hasFinancialInstitutions($paymentType) { - return (bool) ($paymentType == self::EPS || $paymentType == self::IDL); + public static function hasFinancialInstitutions($paymentType) + { + return (bool) ( $paymentType == self::EPS || $paymentType == self::IDL ); } /** * the an array of financial institutions for the given paymenttype. * * @param string $paymentType + * * @return string[] */ - public static function getFinancialInstitutions($paymentType) { - switch($paymentType) { + public static function getFinancialInstitutions($paymentType) + { + switch ($paymentType) { case self::EPS: return self::$_eps_financial_institutions; break; @@ -135,9 +166,11 @@ public static function getFinancialInstitutions($paymentType) { * Used in dd_wirecard_order.php (function: getPayment()) * * @param string $sFinancialInstitutionShortCode + * * @return string */ - public static function getFinancialInstitutionFullName($sFinancialInstitutionShortCode) { + public static function getFinancialInstitutionFullName($sFinancialInstitutionShortCode) + { if (array_key_exists($sFinancialInstitutionShortCode, self::$_eps_financial_institutions)) { return self::$_eps_financial_institutions[$sFinancialInstitutionShortCode]; } @@ -148,4 +181,4 @@ public static function getFinancialInstitutionFullName($sFinancialInstitutionSho return ""; } -} \ No newline at end of file +} diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Response/ResponseAbstract.php b/system/library/wirecard/WirecardCEE/Stdlib/Response/ResponseAbstract.php index c0f9d61..674d169 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Response/ResponseAbstract.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Response/ResponseAbstract.php @@ -1,81 +1,111 @@ _response = WirecardCEE_Stdlib_SerialApi::decode($response->getBody()); - } - elseif (is_array($response)) { + } elseif (is_array($response)) { $this->_response = $response; - } - else { - throw new WirecardCEE_Stdlib_Exception_InvalidResponseException(sprintf('Invalid response from WirecardCEE thrown in %s.', __METHOD__)); + } else { + throw new WirecardCEE_Stdlib_Exception_InvalidResponseException(sprintf('Invalid response from WirecardCEE thrown in %s.', + __METHOD__)); } } @@ -84,18 +114,21 @@ public function __construct($response) { * * @return boolean */ - public function hasFailed() { - return (bool) ($this->getStatus() == self::STATE_FAILURE); + public function hasFailed() + { + return (bool) ( $this->getStatus() >= self::STATE_FAILURE ); } /** * getter for given field * * @param string $name + * * @return string|array|null */ - protected function _getField($name) { - return isset($this->_response[$name]) ? $this->_response[$name] : null; + protected function _getField($name) + { + return isset( $this->_response[$name] ) ? $this->_response[$name] : null; } @@ -104,7 +137,18 @@ protected function _getField($name) { * * @return string */ - public function getRedirectUrl() { + public function getRedirectUrl() + { return (string) $this->_getField(self::REDIRECT_URL); } + + /** + * getter for the response data + * + * @return array + */ + public function getResponse() + { + return $this->_response; + } } diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Return/Cancel.php b/system/library/wirecard/WirecardCEE/Stdlib/Return/Cancel.php index b38bccc..391596b 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Return/Cancel.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Return/Cancel.php @@ -1,25 +1,48 @@ $secret, - self::$FINGERPRINT_ORDER_FIELD => 'responseFingerprintOrder', + self::$SECRET => $secret, + self::$FINGERPRINT_ORDER_FIELD => 'responseFingerprintOrder', )); - $oFingerprintValidator->setHashAlgorithm(WirecardCEE_Stdlib_Fingerprint::HASH_ALGORITHM_MD5); + $oFingerprintValidator->setHashAlgorithm($hashAlgo); $oFingerprintValidator->setOrderType(WirecardCEE_Stdlib_Validate_Fingerprint::TYPE_DYNAMIC); $this->addValidator($oFingerprintValidator, 'responseFingerprint'); } + + /** + * getter for the return parameter orderNumber + * + * @return string + */ + public function getOrderNumber() + { + return $this->orderNumber; + } + } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Return/ReturnAbstract.php b/system/library/wirecard/WirecardCEE/Stdlib/Return/ReturnAbstract.php index de1f416..8cb857c 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Return/ReturnAbstract.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Return/ReturnAbstract.php @@ -1,32 +1,57 @@ _returnData = $returnData; } /** * Validate function * - * @return boolean + * @return bool + * @throws Exception */ - public function validate() { + public function validate() + { // If there are no validators in the array then the validation is "successfull" - if(!count($this->_validators)) { + if (!count($this->_validators)) { return true; } $_bValid = true; // Iterate thru all the validators and validate every one of them - foreach($this->_validators as $param => $aValidator) { - foreach($aValidator as $oValidator) { + foreach ($this->_validators as $param => $aValidator) { + foreach ($aValidator as $oValidator) { + /** @var WirecardCEE_Stdlib_Validate_ValidateAbstract $oValidator */ $param = (string) $param; - if(!isset($this->_returnData[$param])) { - throw new Exception(sprintf("No key '{$param}' found in \$this->_returnData array. Thrown in %s on line %s.", __METHOD__, __LINE__)); + if (!isset( $this->_returnData[$param] )) { + throw new Exception(sprintf("No key '{$param}' found in \$this->_returnData array. Thrown in %s on line %s.", + __METHOD__, __LINE__)); } $bValidatorResult = $oValidator->isValid($this->_returnData[$param], $this->_returnData); @@ -86,8 +117,9 @@ public function validate() { * @param string $param * @return WirecardCEE_Stdlib_Return_ReturnAbstract */ - public function addValidator(Zend_Validate_Abstract $oValidator, $param) { - $this->_validators[(string) $param][] = $oValidator; + public function addValidator(Zend_Validate_Abstract $oValidator, $param) + { + $this->_validators[(string)$param][] = $oValidator; return $this; } @@ -96,7 +128,8 @@ public function addValidator(Zend_Validate_Abstract $oValidator, $param) { * * @return string */ - public function getPaymentState() { + public function getPaymentState() + { return (string) $this->_state; } @@ -104,10 +137,13 @@ public function getPaymentState() { * magic getter method * * @param string $name + * * @return string */ - public function __get($name) { + public function __get($name) + { $name = (string) $name; + return (string) array_key_exists($name, $this->_returnData) ? $this->_returnData[$name] : ''; } @@ -116,14 +152,19 @@ public function __get($name) { * * @return string[] */ - public function getReturned() { - // noone needs the responseFingerprintOrder and responseFingerprint in - // the shop. - if (array_key_exists('responseFingerprintOrder', $this->_returnData) && array_key_exists('responseFingerprint', $this->_returnData)) { - unset($this->_returnData['responseFingerprintOrder']); - unset($this->_returnData['responseFingerprint']); + public function getReturned() + { + $ret = $this->_returnData; + + // noone needs the responseFingerprintOrder and responseFingerprint in the shop. + if (array_key_exists('responseFingerprintOrder', $ret)) { + unset( $ret['responseFingerprintOrder'] ); + } + + if (array_key_exists('responseFingerprint', $ret)) { + unset( $ret['responseFingerprint'] ); } - return $this->_returnData; + return $ret; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success.php b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success.php index 94cedb1..b9216f0 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success.php @@ -1,28 +1,50 @@ _secret = (string) $secret; parent::__construct($returnData); $oFingerprintValidator = new WirecardCEE_Stdlib_Validate_Fingerprint(Array( - self::$SECRET => $secret, - self::$FINGERPRINT_ORDER_FIELD => 'responseFingerprintOrder', + self::$SECRET => $secret, + self::$FINGERPRINT_ORDER_FIELD => 'responseFingerprintOrder', )); - $oFingerprintValidator->setHashAlgorithm(WirecardCEE_Stdlib_Fingerprint::HASH_ALGORITHM_MD5); + $oFingerprintValidator->setHashAlgorithm($hashAlgo); $oFingerprintValidator->setOrderType(WirecardCEE_Stdlib_Validate_Fingerprint::TYPE_DYNAMIC); $this->addValidator($oFingerprintValidator, 'responseFingerprint'); @@ -71,7 +98,8 @@ public function __construct(Array $returnData, $secret) { * * @return string */ - public function getAmount() { + public function getAmount() + { return $this->amount; } @@ -80,7 +108,8 @@ public function getAmount() { * * @return string */ - public function getCurrency() { + public function getCurrency() + { return (string) $this->currency; } @@ -89,7 +118,8 @@ public function getCurrency() { * * @return string */ - public function getPaymentType() { + public function getPaymentType() + { return (string) $this->paymentType; } @@ -98,7 +128,8 @@ public function getPaymentType() { * * @return string */ - public function getFinancialInstitution() { + public function getFinancialInstitution() + { return (string) $this->financialInstitution; } @@ -107,7 +138,8 @@ public function getFinancialInstitution() { * * @return string */ - public function getLanguage() { + public function getLanguage() + { return (string) $this->language; } @@ -116,7 +148,8 @@ public function getLanguage() { * * @return string */ - public function getOrderNumber() { + public function getOrderNumber() + { return $this->orderNumber; } @@ -125,7 +158,8 @@ public function getOrderNumber() { * * @return string */ - public function getGatewayReferenceNumber() { + public function getGatewayReferenceNumber() + { return $this->gatewayReferenceNumber; } @@ -134,7 +168,8 @@ public function getGatewayReferenceNumber() { * * @return string */ - public function getGatewayContractNumber() { + public function getGatewayContractNumber() + { return $this->gatewayContractNumber; } @@ -143,7 +178,8 @@ public function getGatewayContractNumber() { * * @return string */ - public function getAvsResponseCode() { + public function getAvsResponseCode() + { return $this->avsResponseCode; } @@ -152,7 +188,8 @@ public function getAvsResponseCode() { * * @return string */ - public function getAvsResponseMessage() { + public function getAvsResponseMessage() + { return (string) $this->avsResponseMessage; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/CreditCard.php b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/CreditCard.php index d843527..77ddea3 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/CreditCard.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/CreditCard.php @@ -1,30 +1,53 @@ anonymousPan; } @@ -33,7 +56,8 @@ public function getAnonymousPan() { * * @return string */ - public function getAuthenticated() { + public function getAuthenticated() + { return (string) $this->authenticated; } @@ -42,7 +66,8 @@ public function getAuthenticated() { * * @return string */ - public function getExpiry() { + public function getExpiry() + { return (string) $this->expiry; } @@ -51,7 +76,8 @@ public function getExpiry() { * * @return string */ - public function getCardholder() { + public function getCardholder() + { return (string) $this->cardholder; } @@ -60,7 +86,8 @@ public function getCardholder() { * * @return string */ - public function getMaskedPan() { + public function getMaskedPan() + { return (string) $this->maskedPan; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/Ideal.php b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/Ideal.php index 56134e9..8b3e12a 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/Ideal.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/Ideal.php @@ -1,29 +1,52 @@ idealConsumerName; } @@ -32,7 +55,8 @@ public function getConsumerName() { * * @return string */ - public function getConsumerCity() { + public function getConsumerCity() + { return (string) $this->idealConsumerCity; } @@ -41,7 +65,8 @@ public function getConsumerCity() { * * @return string */ - public function getConsumerAccountNumber() { + public function getConsumerAccountNumber() + { return (string) $this->idealConsumerAccountNumber; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/Masterpass.php b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/Masterpass.php new file mode 100644 index 0000000..fb24834 --- /dev/null +++ b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/Masterpass.php @@ -0,0 +1,203 @@ +masterpassBillingAddressCity; + } + + /** + * getter for the return parameter masterpassBillingAddressCountry + * + * @return string + */ + public function getMasterpassBillingAddressCountry() + { + return (string)$this->masterpassBillingAddressCountry; + } + + /** + * getter for the return parameter masterpassBillingAddressCountrySubdivision + * + * @return string + */ + public function getMasterpassBillingAddressCountrySubdivision() + { + return (string)$this->masterpassBillingAddressCountrySubdivision; + } + + /** + * getter for the return parameter masterpassBillingAddressPostalCode + * + * @return string + */ + public function getMasterpassBillingAddressPostalCode() + { + return (string)$this->masterpassBillingAddressPostalCode; + } + + /** + * getter for the return parameter masterpassBillingAddressAddressLine1 + * + * @return string + */ + public function getMasterpassBillingAddressAddressLine1() + { + return (string)$this->masterpassBillingAddressAddressLine1; + } + + /** + * getter for the return parameter masterpassBillingAddressAddressLine2 + * + * @return string + */ + public function getMasterpassBillingAddressAddressLine2() + { + return (string)$this->masterpassBillingAddressAddressLine2; + } + + /** + * getter for the return parameter masterpassBillingAddressAddressLine3 + * + * @return string + */ + public function getMasterpassBillingAddressAddressLine3() + { + return (string)$this->masterpassBillingAddressAddressLine3; + } + + /** + * getter for the return parameter masterpassShippingAddressRecipientName + * + * @return string + */ + public function getMasterpassShippingAddressRecipientName() + { + return (string)$this->masterpassShippingAddressRecipientName; + } + + /** + * getter for the return parameter masterpassShippingAddressRecipientPhoneNumber + * + * @return string + */ + public function getMasterpassShippingAddressRecipientPhoneNumber() + { + return (string)$this->masterpassShippingAddressRecipientPhoneNumber; + } + + /** + * getter for the return parameter masterpassShippingAddressCity + * + * @return string + */ + public function getMasterpassShippingAddressCity() + { + return (string)$this->masterpassShippingAddressCity; + } + + /** + * getter for the return parameter masterpassShippingAddressCountry + * + * @return string + */ + public function getMasterpassShippingAddressCountry() + { + return (string)$this->masterpassShippingAddressCountry; + } + + /** + * getter for the return parameter masterpassShippingAddressCountrySubdivision + * + * @return string + */ + public function getMasterpassShippingAddressCountrySubdivision() + { + return (string)$this->masterpassShippingAddressCountrySubdivision; + } + + /** + * getter for the return parameter masterpassShippingAddressPostalCode + * + * @return string + */ + public function getMasterpassShippingAddressPostalCode() + { + return (string)$this->masterpassShippingAddressPostalCode; + } + + /** + * getter for the return parameter masterpassShippingAddressAddressLine1 + * + * @return string + */ + public function getMasterpassShippingAddressAddressLine1() + { + return (string)$this->masterpassShippingAddressAddressLine1; + } + + /** + * getter for the return parameter masterpassShippingAddressAddressLine2 + * + * @return string + */ + public function getMasterpassShippingAddressAddressLine2() + { + return (string)$this->masterpassShippingAddressAddressLine2; + } + + /** + * getter for the return parameter masterpassShippingAddressAddressLine3 + * + * @return string + */ + public function getMasterpassShippingAddressAddressLine3() + { + return (string)$this->masterpassShippingAddressAddressLine3; + } + +} \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/PayPal.php b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/PayPal.php index ab0bd2a..236485b 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/PayPal.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/PayPal.php @@ -1,30 +1,53 @@ paypalPayerID; } @@ -33,7 +56,8 @@ public function getPayerId() { * * @return string */ - public function getPayerEmail() { + public function getPayerEmail() + { return $this->paypalPayerEmail; } @@ -42,7 +66,8 @@ public function getPayerEmail() { * * @return string */ - public function getPayerLastName() { + public function getPayerLastName() + { return $this->paypalPayerLastName; } @@ -51,7 +76,8 @@ public function getPayerLastName() { * * @return string */ - public function getPayerFirstName() { + public function getPayerFirstName() + { return $this->paypalPayerFirstName; } @@ -60,7 +86,8 @@ public function getPayerFirstName() { * * @return string */ - public function getPayerAddressName() { + public function getPayerAddressName() + { return $this->paypalPayerAddressName; } @@ -69,7 +96,8 @@ public function getPayerAddressName() { * * @return string */ - public function getPayerAddressCountry() { + public function getPayerAddressCountry() + { return $this->paypalPayerAddressCountry; } @@ -78,7 +106,8 @@ public function getPayerAddressCountry() { * * @return string */ - public function getPayerAddressCity() { + public function getPayerAddressCity() + { return $this->paypalPayerAddressCity; } @@ -87,7 +116,8 @@ public function getPayerAddressCity() { * * @return string */ - public function getPayerAddressState() { + public function getPayerAddressState() + { return $this->paypalPayerAddressState; } @@ -96,7 +126,8 @@ public function getPayerAddressState() { * * @return string */ - public function getPayerAddressStreet1() { + public function getPayerAddressStreet1() + { return $this->paypalPayerAddressStreet1; } @@ -105,7 +136,8 @@ public function getPayerAddressStreet1() { * * @return string */ - public function getPayerAddressStreet2() { + public function getPayerAddressStreet2() + { return $this->paypalPayerAddressStreet2; } @@ -114,7 +146,8 @@ public function getPayerAddressStreet2() { * * @return string */ - public function getPayerAddressZip() { + public function getPayerAddressZip() + { return $this->paypalPayerAddressZIP; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/SepaDD.php b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/SepaDD.php new file mode 100644 index 0000000..29a7e61 --- /dev/null +++ b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/SepaDD.php @@ -0,0 +1,83 @@ +creditorId; + } + + /** + * getter for the return parameter dueDate + * + * @return string + */ + public function getDueDate() + { + return $this->dueDate; + } + + /** + * getter for the return parameter mandateId + * + * @return string + */ + public function getMandateId() + { + return $this->mandateId; + } + + /** + * getter for the return parameter mandateSignatureDate + * + * @return string + */ + public function getMandateSignatureDate() + { + return $this->mandateSignatureDate; + } + +} \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/Sofortueberweisung.php b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/Sofortueberweisung.php index 87b406e..de58400 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/Sofortueberweisung.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/Return/Success/Sofortueberweisung.php @@ -1,30 +1,53 @@ senderAccountOwner; } @@ -33,7 +56,8 @@ public function getSenderAccountOwner() { * * @return string */ - public function getSenderAccountNumber() { + public function getSenderAccountNumber() + { return $this->senderAccountNumber; } @@ -42,7 +66,8 @@ public function getSenderAccountNumber() { * * @return string */ - public function getSenderBankNumber() { + public function getSenderBankNumber() + { return $this->senderBankNumber; } @@ -51,7 +76,8 @@ public function getSenderBankNumber() { * * @return string */ - public function getSenderBankName() { + public function getSenderBankName() + { return $this->senderBankName; } @@ -60,7 +86,8 @@ public function getSenderBankName() { * * @return string */ - public function getSenderBic() { + public function getSenderBic() + { return $this->senderBIC; } @@ -69,7 +96,8 @@ public function getSenderBic() { * * @return string */ - public function getSenderIban() { + public function getSenderIban() + { return $this->senderIBAN; } @@ -78,7 +106,8 @@ public function getSenderIban() { * * @return string */ - public function getSenderCountry() { + public function getSenderCountry() + { return $this->senderCountry; } @@ -87,7 +116,8 @@ public function getSenderCountry() { * * @return string */ - public function getSecurityCriteria() { + public function getSecurityCriteria() + { return $this->securityCriteria; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/ReturnFactoryAbstract.php b/system/library/wirecard/WirecardCEE/Stdlib/ReturnFactoryAbstract.php index 7275770..f0d5016 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/ReturnFactoryAbstract.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/ReturnFactoryAbstract.php @@ -1,10 +1,36 @@ '; - if (empty($messages)) { + public static function generateConfirmResponseString($messages = null, $inCommentTag = false) + { + $template = ''; + if (empty( $messages )) { $returnValue = str_replace('%status%', 'OK', $template); - $returnValue = str_replace('%message% ', '', $returnValue); - } - else { + $returnValue = str_replace('%message%', '', $returnValue); + } else { $returnValue = str_replace('%status%', 'NOK', $template); - $returnValue = str_replace('%message%', 'message="' . strval($messages) . '"', $returnValue); + $returnValue = str_replace('%message%', 'message="' . strval($messages) . '" ', $returnValue); } if ($inCommentTag) { $returnValue = ''; } + return $returnValue; } } \ No newline at end of file diff --git a/system/library/wirecard/WirecardCEE/Stdlib/SerialApi.php b/system/library/wirecard/WirecardCEE/Stdlib/SerialApi.php index 6857d57..8a6b400 100644 --- a/system/library/wirecard/WirecardCEE/Stdlib/SerialApi.php +++ b/system/library/wirecard/WirecardCEE/Stdlib/SerialApi.php @@ -1,21 +1,43 @@ $value) { + foreach ($aValueToEncode as $key => $value) { $serializedString = self::_addEntryEncode($key, $value, $serializedString); } + return $serializedString; - } - else { - throw new WirecardCEE_Stdlib_Exception_InvalidTypeException(sprintf('Invalid type for %s. Array must be given.', __METHOD__)); + } else { + throw new WirecardCEE_Stdlib_Exception_InvalidTypeException(sprintf('Invalid type for %s. Array must be given.', + __METHOD__)); } } @@ -46,65 +72,64 @@ public static function encode($aValueToEncode) { * @param mixed|mixed[] value for key entry * @param string serialized String */ - protected static function _addEntryEncode($key, $value, $serializedString = '') { + protected static function _addEntryEncode($key, $value, $serializedString = '') + { if (is_array($value)) { - $entryValue = Array(); - $entryKey = ''; - $nextEntryKey = ''; + $entryValue = Array(); + $entryKey = ''; + $nextEntryKey = ''; $nextEntryValue = ''; - foreach($value as $subKey => $subValue) { + foreach ($value as $subKey => $subValue) { if (is_int($subKey)) { - $subKey++; + $subKey ++; if (!is_array($subValue)) { if ($entryKey == '') { if (is_numeric(substr(strrchr($key, '.'), 1))) { $entryKey = $key . '.' . $subKey; - } - else { + } else { $entryKey = $key; } } $entryValue[] = $subValue; // next loop continue; - } - else { - if (!empty($entryValue)) { - $serializedString = self::_addLastEntryArrayEncode($entryKey, $entryValue, $serializedString); - $entryValue = ''; - $entryKey = ''; + } else { + if (!empty( $entryValue )) { + $serializedString = self::_addLastEntryArrayEncode($entryKey, $entryValue, + $serializedString); + $entryValue = ''; + $entryKey = ''; } } } - if (empty($entryValue)) { + if (empty( $entryValue )) { $serializedString = self::_addEntryEncode($key . '.' . $subKey, $subValue, $serializedString); - } - else { - $nextEntryKey = $key . '.' . $subKey; + } else { + $nextEntryKey = $key . '.' . $subKey; $nextEntryValue = $subValue; } } - if (!empty($entryValue)) { + if (!empty( $entryValue )) { $serializedString = self::_addLastEntryArrayEncode($entryKey, $entryValue, $serializedString); - $entryValue = ''; - $entryKey = ''; + $entryValue = ''; + $entryKey = ''; if ($nextEntryKey != '' && $nextEntryValue != '') { $serializedString = self::_addEntryEncode($nextEntryKey, $nextEntryValue, $serializedString); - $nextEntryKey = ''; - $nextEntryValue = ''; + $nextEntryKey = ''; + $nextEntryValue = ''; } } - } - else { + } else { if ($serializedString != '') { $serializedString .= '&'; } if (is_int($key)) { - $key++; + $key ++; } $serializedString .= urlencode((string) $key) . '=' . urlencode((string) $value); } + return $serializedString; } @@ -113,33 +138,36 @@ protected static function _addEntryEncode($key, $value, $serializedString = '') * @param string $sKey * @param array $aValues * @param string $serializedString + * * @return string */ - protected static function _addLastEntryArrayEncode($sKey, Array $aValues, $serializedString) { + protected static function _addLastEntryArrayEncode($sKey, Array $aValues, $serializedString) + { $valueString = ''; - foreach($aValues as $value) { + foreach ($aValues as $value) { if ($valueString == '') { $valueString = urlencode((string) $value); - } - else { + } else { $valueString .= ',' . urlencode((string) $value); } } if ($serializedString == '') { $serializedString = urlencode((string) $sKey) . '=' . $valueString; - } - else { + } else { $serializedString .= '&' . urlencode((string) $sKey) . '=' . $valueString; } + return $serializedString; } - public static function decode($encodedValue) { - $decodedValue = Array(); + public static function decode($encodedValue) + { + $decodedValue = Array(); $keyValueStrings = explode('&', $encodedValue); - foreach($keyValueStrings as $entry) { + foreach ($keyValueStrings as $entry) { $decodedValue = self::_addEntryDecode($entry, $decodedValue); } + return $decodedValue; } @@ -147,59 +175,60 @@ public static function decode($encodedValue) { * * @param string $sEntry * @param array $aDecodedValue + * * @throws WirecardCEE_Stdlib_Exception_InvalidFormatException * @return Array */ - protected static function _addEntryDecode($sEntry, $aDecodedValue) { + protected static function _addEntryDecode($sEntry, $aDecodedValue) + { $aEntry = explode('=', $sEntry); if (!is_array($aEntry) || count($aEntry) < 2) { // ignore keys only return $aDecodedValue; - } - else - if (count($aEntry) == 2) { - $keyArray = explode('.', $aEntry[0]); - if (is_array($keyArray) && count($keyArray) > 1) { - $position = & $aDecodedValue; - foreach($keyArray as $keyName) { - if ($keyName == intval($keyName)) { - $keyName--; - } - if (!isset($position[$keyName])) { - $position[$keyName] = Array(); - } - $position = & $position[$keyName]; + } else if (count($aEntry) == 2) { + $keyArray = explode('.', $aEntry[0]); + if (is_array($keyArray) && count($keyArray) > 1) { + $position = &$aDecodedValue; + foreach ($keyArray as $keyName) { + if ($keyName == intval($keyName)) { + $keyName --; } - $position = self::_decodeValueArray($aEntry[1]); - } - else { - if ($aEntry[0] == intval($aEntry[0])) { - $aEntry[0]--; + if (!isset( $position[$keyName] )) { + $position[$keyName] = Array(); } - $aDecodedValue[urldecode($aEntry[0])] = self::_decodeValueArray($aEntry[1]); + $position = &$position[$keyName]; } - return $aDecodedValue; - } - else { - throw new WirecardCEE_Stdlib_Exception_InvalidFormatException('Invalid format for WirecardCEE_Stdlib_SerialApi::decode. Expecting key=value pairs'); + $position = self::_decodeValueArray($aEntry[1]); + } else { + if ($aEntry[0] == intval($aEntry[0])) { + $aEntry[0] --; + } + $aDecodedValue[urldecode($aEntry[0])] = self::_decodeValueArray($aEntry[1]); } + + return $aDecodedValue; + } else { + throw new WirecardCEE_Stdlib_Exception_InvalidFormatException('Invalid format for WirecardCEE_Stdlib_SerialApi::decode. Expecting key=value pairs'); + } } /** * * @param string $sValue + * * @return multitype: string | string */ - protected static function _decodeValueArray($sValue) { + protected static function _decodeValueArray($sValue) + { $aValues = explode(',', $sValue); if (is_array($aValues) && count($aValues) > 1) { $aEntries = Array(); - foreach($aValues as $sEntry) { + foreach ($aValues as $sEntry) { $aEntries[] = urldecode($sEntry); } + return $aEntries; - } - else { + } else { return urldecode($sValue); } } diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Validate/Exception.php b/system/library/wirecard/WirecardCEE/Stdlib/Validate/Exception.php new file mode 100644 index 0000000..7f2df19 --- /dev/null +++ b/system/library/wirecard/WirecardCEE/Stdlib/Validate/Exception.php @@ -0,0 +1,36 @@ + "Given fingerprint does not match calculated one.", - self::INVALID_LENGTH => "'%value%' has invalid length for hash algorithm %hash%.", - self::FINGERPRINTORDER_MISSING => 'Parameter fingerprintOrder is missing' + self::INVALID => "Given fingerprint does not match calculated one.", + self::INVALID_LENGTH => "'%value%' has invalid length for hash algorithm %hash%.", + self::FINGERPRINTORDER_MISSING => 'Parameter fingerprintOrder is missing' ); /** @@ -109,119 +137,152 @@ class WirecardCEE_Stdlib_Validate_Fingerprint extends Zend_Validate_Abstract { * @internal */ protected $_messageVariables = array( - 'hash' => 'hashAlgorithm' + 'hash' => 'hashAlgorithm' ); /** * Constructor - * @param Array $options - optional + * + * @param array $options - optional */ - public function __construct($options = array()) { + public function __construct($options = array()) + { $this->fingerprintOrder = new WirecardCEE_Stdlib_FingerprintOrder(); - if($options instanceof Zend_Config) { + if ($options instanceof WirecardCEE_Stdlib_Config) { $options = $options->toArray(); } - if(!empty($options['fingerprintOrder'])) { + if (!empty( $options['fingerprintOrder'] )) { $this->setOrder($options['fingerprintOrder']); } - if(!empty($options['fingerprintOrderField'])) { + if (!empty( $options['fingerprintOrderField'] )) { $this->setFingerprintOrderField($options['fingerprintOrderField']); } - if(!empty($options['hashAlgorithm'])) { + if (!empty( $options['hashAlgorithm'] )) { $this->setHashAlgorithm($options['hashAlgorithm']); } - if(!empty($options['orderType'])) { + if (!empty( $options['orderType'] )) { $this->setOrderType($options['orderType']); } - if(!empty($options['secret'])) { + if (!empty( $options['secret'] )) { $this->setSecret($options['secret']); } } /** * Sets the fingerprint order field + * * @param string $sFingerprintOrderField + * * @return WirecardCEE_Stdlib_Validate_Fingerprint */ - public function setFingerprintOrderField($sFingerprintOrderField) { + public function setFingerprintOrderField($sFingerprintOrderField) + { $this->fingerprintOrderField = strtolower($sFingerprintOrderField); + return $this; } /** * Sets the ordere type + * * @param string $orderType - * @return WirecardCEE_Stdlib_Validate_FingerprintValidator + * + * @return WirecardCEE_Stdlib_Validate_Fingerprint */ - public function setOrderType($orderType) { + public function setOrderType($orderType) + { $this->fingerprintOrderType = (string) $orderType; + return $this; } /** * Sets the fingeprint order + * * @param string|array $order - * @return WirecardCEE_Stdlib_Validate_FingerprintValidator + * + * @return WirecardCEE_Stdlib_Validate_Fingerprint */ - public function setOrder($order) { + public function setOrder($order) + { $this->fingerprintOrder->setOrder($order); + return $this; } /** * Hash algorithm setter + * * @param string $hashAlgorithm - * @return WirecardCEE_Stdlib_Validate_FingerprintValidator + * + * @return WirecardCEE_Stdlib_Validate_Fingerprint */ - public function setHashAlgorithm($hashAlgorithm) { + public function setHashAlgorithm($hashAlgorithm) + { $this->hashAlgorithm = (string) $hashAlgorithm; WirecardCEE_Stdlib_Fingerprint::setHashAlgorithm($hashAlgorithm); + return $this; } /** * Secret setter + * * @param string $secret - * @return WirecardCEE_Stdlib_Validate_FingerprintValidator + * + * @return WirecardCEE_Stdlib_Validate_Fingerprint */ - public function setSecret($secret) { + public function setSecret($secret) + { $this->secret = (string) $secret; + return $this; } /** * Add madatory field + * * @param string $mandatoryField - * @return WirecardCEE_Stdlib_Validate_FingerprintValidator + * + * @return WirecardCEE_Stdlib_Validate_Fingerprint */ - public function addMandatoryField($mandatoryField) { - if(!in_array((string) $mandatoryField, $this->_mandatoryFields)) { + public function addMandatoryField($mandatoryField) + { + if (!in_array((string) $mandatoryField, $this->_mandatoryFields)) { $this->_mandatoryFields[] = (string) $mandatoryField; } + return $this; } /** * Sets mandatory fields + * * @param array $mandatoryFields - * @return WirecardCEE_Stdlib_Validate_FingerprintValidator + * + * @return WirecardCEE_Stdlib_Validate_Fingerprint */ - public function setMandatoryFields(Array $mandatoryFields) { + public function setMandatoryFields(Array $mandatoryFields) + { $this->_mandatoryFields = $mandatoryFields; + return $this; } /** * Is validator check valid? + * * @see Zend_Validate_Interface::isValid() */ - public function isValid($value, $context = null) { + public function isValid($value, $context = null) + { $context = array_change_key_case($context, CASE_LOWER); - switch($this->hashAlgorithm) { + switch ($this->hashAlgorithm) { + case WirecardCEE_Stdlib_Fingerprint::HASH_ALGORITHM_HMAC_SHA512: case WirecardCEE_Stdlib_Fingerprint::HASH_ALGORITHM_SHA512: $stringLength = 128; break; @@ -229,41 +290,44 @@ public function isValid($value, $context = null) { $stringLength = 32; break; default: - throw new WirecardCEE_Stdlib_Exception_UnexpectedValueException(sprintf("Used hash algorithm '%s' is not supported. MD5 or SHA512 are currently supported.", $this->hashAlgorithm)); + throw new WirecardCEE_Stdlib_Exception_UnexpectedValueException(sprintf("Used hash algorithm '%s' is not supported. MD5, SHA512, or HMAC_SHA512 are currently supported.", + $this->hashAlgorithm)); break; } - if(strlen($value) != $stringLength) { + if (strlen($value) != $stringLength) { return false; } - if($this->fingerprintOrderType == self::TYPE_FIXED) { + if ($this->fingerprintOrderType == self::TYPE_FIXED) { $fingerprintOrder = $this->fingerprintOrder; - } - else { - if(array_key_exists($this->fingerprintOrderField, $context)) { + } else { + if (array_key_exists($this->fingerprintOrderField, $context)) { $fingerprintOrder = new WirecardCEE_Stdlib_FingerprintOrder(strtolower($context[$this->fingerprintOrderField])); - } - else { + } else { $this->_error(self::FINGERPRINTORDER_MISSING); + return false; } } $fingerprintOrder->setOrder(array_map('strtolower', $this->fingerprintOrder->__toArray())); + if (!in_array('secret', $fingerprintOrder->__toArray())) { + throw new WirecardCEE_Stdlib_Exception_UnexpectedValueException(); + } $fingerprintFields = Array(); - foreach($fingerprintOrder as $fingerprintFieldKey) { - if($fingerprintFieldKey == 'secret') { + foreach ($fingerprintOrder as $fingerprintFieldKey) { + if ($fingerprintFieldKey == 'secret') { $fingerprintFields[$fingerprintFieldKey] = $this->secret; - } - else { - $fingerprintFields[$fingerprintFieldKey] = isset($context[$fingerprintFieldKey]) ? $context[$fingerprintFieldKey] : ''; + } else { + $fingerprintFields[$fingerprintFieldKey] = isset( $context[$fingerprintFieldKey] ) ? $context[$fingerprintFieldKey] : ''; } } - if(!WirecardCEE_Stdlib_Fingerprint::compare($fingerprintFields, $fingerprintOrder, $value)) { + if (!WirecardCEE_Stdlib_Fingerprint::compare($fingerprintFields, $fingerprintOrder, $value)) { $this->_error(self::INVALID); + return false; } diff --git a/system/library/wirecard/WirecardCEE/Stdlib/Validate/Interface.php b/system/library/wirecard/WirecardCEE/Stdlib/Validate/Interface.php new file mode 100644 index 0000000..1717e3d --- /dev/null +++ b/system/library/wirecard/WirecardCEE/Stdlib/Validate/Interface.php @@ -0,0 +1,61 @@ +_messages; + } + + /** + * Returns an array of the names of variables that are used in constructing validation failure messages + * + * @return array + */ + public function getMessageVariables() + { + return array_keys($this->_messageVariables); + } + + /** + * Returns the message templates from the validator + * + * @return array + */ + public function getMessageTemplates() + { + return $this->_messageTemplates; + } + + /** + * Sets the validation failure message template for a particular key + * + * @param string $messageString + * @param string $messageKey OPTIONAL + * + * @return WirecardCEE_Stdlib_Validate_ValidateAbstract Provides a fluent interface + * @throws WirecardCEE_Stdlib_Validate_Exception + */ + public function setMessage($messageString, $messageKey = null) + { + if ($messageKey === null) { + $keys = array_keys($this->_messageTemplates); + foreach ($keys as $key) { + $this->setMessage($messageString, $key); + } + + return $this; + } + + if (!isset( $this->_messageTemplates[$messageKey] )) { + throw new WirecardCEE_Stdlib_Validate_Exception("No message template exists for key '$messageKey'"); + } + + $this->_messageTemplates[$messageKey] = $messageString; + + return $this; + } + + /** + * Sets validation failure message templates given as an array, where the array keys are the message keys, + * and the array values are the message template strings. + * + * @param array $messages + * + * @return WirecardCEE_Stdlib_Validate_ValidateAbstract + */ + public function setMessages(array $messages) + { + foreach ($messages as $key => $message) { + $this->setMessage($message, $key); + } + + return $this; + } + + /** + * Magic function returns the value of the requested property, if and only if it is the value or a + * message variable. + * + * @param string $property + * + * @return mixed + * @throws WirecardCEE_Stdlib_Validate_Exception + */ + public function __get($property) + { + if ($property == 'value') { + return $this->_value; + } + if (array_key_exists($property, $this->_messageVariables)) { + return $this->{$this->_messageVariables[$property]}; + } + + throw new WirecardCEE_Stdlib_Validate_Exception("No property exists by the name '$property'"); + } + + /** + * Constructs and returns a validation failure message with the given message key and value. + * + * Returns null if and only if $messageKey does not correspond to an existing template. + * + * If a translator is available and a translation exists for $messageKey, + * the translation will be used. + * + * @param string $messageKey + * @param string $value + * + * @return string + */ + protected function _createMessage($messageKey, $value) + { + if (!isset( $this->_messageTemplates[$messageKey] )) { + return null; + } + + $message = $this->_messageTemplates[$messageKey]; + + if (is_object($value)) { + if (!in_array('__toString', get_class_methods($value))) { + $value = get_class($value) . ' object'; + } else { + $value = $value->__toString(); + } + } else { + $value = implode((array) $value); + } + + if ($this->getObscureValue()) { + $value = str_repeat('*', strlen($value)); + } + + $message = str_replace('%value%', $value, $message); + foreach ($this->_messageVariables as $ident => $property) { + $message = str_replace( + "%$ident%", + implode(' ', (array) $this->$property), + $message + ); + } + + $length = self::getMessageLength(); + if (( $length > - 1 ) && ( strlen($message) > $length )) { + $message = substr($message, 0, ( self::getMessageLength() - 3 )) . '...'; + } + + return $message; + } + + /** + * @param string $messageKey + * @param string $value OPTIONAL + * + * @return void + */ + protected function _error($messageKey, $value = null) + { + if ($messageKey === null) { + $keys = array_keys($this->_messageTemplates); + $messageKey = current($keys); + } + if ($value === null) { + $value = $this->_value; + } + $this->_messages[$messageKey] = $this->_createMessage($messageKey, $value); + } + + /** + * Sets the value to be validated and clears the messages and errors arrays + * + * @param mixed $value + * + * @return void + */ + protected function _setValue($value) + { + $this->_value = $value; + $this->_messages = array(); + } + + /** + * Set flag indicating whether or not value should be obfuscated in messages + * + * @param bool $flag + * + * @return WirecardCEE_Stdlib_Validate_ValidateAbstract + */ + public function setObscureValue($flag) + { + $this->_obscureValue = (bool) $flag; + + return $this; + } + + /** + * Retrieve flag indicating whether or not value should be obfuscated in + * messages + * + * @return bool + */ + public function getObscureValue() + { + return $this->_obscureValue; + } + + /** + * Returns the maximum allowed message length + * + * @return integer + */ + public static function getMessageLength() + { + return self::$_messageLength; + } + + /** + * Sets the maximum allowed message length + * + * @param integer $length + */ + public static function setMessageLength($length = - 1) + { + self::$_messageLength = $length; + } +}