diff --git a/.gitignore b/.gitignore index a14a7c3..48b6606 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ /.idea .idea +/.buildpath +/.project +/.settings vendor diff --git a/src/BitWeb/BankLink/BankLink.php b/src/BitWeb/BankLink/BankLink.php index 0a5c96c..b5098dd 100755 --- a/src/BitWeb/BankLink/BankLink.php +++ b/src/BitWeb/BankLink/BankLink.php @@ -2,6 +2,7 @@ namespace BitWeb\BankLink; +use BitWeb\BankLink\Swedbank\SwedBank; /** * Main BankLink class that represents actions for bank links * @@ -605,11 +606,17 @@ private function getMacSource() if (null === $value) { throw new Exception('"' . $order . '" has to be setted'); } - $data .= str_pad(strlen($value), 3, '0', STR_PAD_LEFT) . $value; + $length = $this->getValueStringLength($value); + $data .= str_pad($length, 3, '0', STR_PAD_LEFT) . $value; } return $data; } + protected function getValueStringLength($value) + { + return strlen($value); + } + /** * Load values from request. And sets into parameters * @param array $data Where to load values. Default is $_REQUEST diff --git a/src/BitWeb/BankLink/Constants.php b/src/BitWeb/BankLink/Constants.php index 14d2464..039654c 100755 --- a/src/BitWeb/BankLink/Constants.php +++ b/src/BitWeb/BankLink/Constants.php @@ -50,7 +50,7 @@ abstract class Constants * Saaja konto number */ const ACC = 'VK_ACC'; - const ACC_LENGTH = 16; + const ACC_LENGTH = 20; /** * Maksekorralduse viitenumber @@ -74,13 +74,13 @@ abstract class Constants * Saaja konto number */ const REC_ACC = 'VK_REC_ACC'; - const REC_ACC_LENGTH = 16; + const REC_ACC_LENGTH = 20; /** * Maksja konto number */ const SND_ACC = 'VK_SND_ACC'; - const SND_ACC_LENGTH = 16; + const SND_ACC_LENGTH = 20; /** * Maksekorralduse kuupäev diff --git a/src/BitWeb/BankLink/Parameter.php b/src/BitWeb/BankLink/Parameter.php index c7acdf7..0cf8343 100755 --- a/src/BitWeb/BankLink/Parameter.php +++ b/src/BitWeb/BankLink/Parameter.php @@ -52,10 +52,7 @@ public function getField() public function getFormattedValue() { - if (strstr($this->value, 'õ') || strstr($this->value, 'Ü')) { - return (string)trim(substr($this->value, 0, $this->length - 1)); - } - return (string)trim(substr($this->value, 0, $this->length)); + return (string)trim(mb_substr($this->value, 0, $this->length)); } public function getValue() diff --git a/src/BitWeb/BankLink/Swedbank/Constants.php b/src/BitWeb/BankLink/Swedbank/Constants.php index 2b8889e..4e6d90c 100755 --- a/src/BitWeb/BankLink/Swedbank/Constants.php +++ b/src/BitWeb/BankLink/Swedbank/Constants.php @@ -26,4 +26,6 @@ abstract class Constants extends BankLink\Constants const SND_NAME_LENGTH = 40; const RETURN_URL_LENGTH = 60; const BANK_ID = 'HP'; + const ENCODING = 'VK_ENCODING'; + const ENCODING_LENGTH = 10; } diff --git a/src/BitWeb/BankLink/Swedbank/SwedBank.php b/src/BitWeb/BankLink/Swedbank/SwedBank.php index ae0db1f..d848196 100755 --- a/src/BitWeb/BankLink/Swedbank/SwedBank.php +++ b/src/BitWeb/BankLink/Swedbank/SwedBank.php @@ -28,6 +28,11 @@ final class SwedBank extends BankLink * @var string */ protected $bankId = Constants::BANK_ID; + + /** + * @var string + */ + private $encoding = 'UTF-8'; /* (non-PHPdoc) * @see BankLink/BankLink#setSpecificParameters() @@ -35,6 +40,7 @@ final class SwedBank extends BankLink protected function setSpecificParameters() { $this->addParameter(Constants::MAC, Constants::MAC_LENGTH); + $this->addParameter(Constants::ENCODING, Constants::ENCODING_LENGTH, $this->encoding); } /** @@ -100,6 +106,7 @@ protected function create1101() $this->addMacParameter(Constants::T_DATE, Constants::T_DATE_LENGTH); $this->addParameter(Constants::LANG, Constants::LANG_LENGTH, $this->langauge); $this->addParameter(Constants::AUTO, Constants::AUTO_LENGTH); + $this->addParameter(Constants::ENCODING, Constants::ENCODING_LENGTH, $this->encoding); } /** @@ -149,4 +156,8 @@ protected function create4001() $this->addMacParameter(Constants::TIME, Constants::TIME_LENGTH); } + protected function getValueStringLength($value) + { + return mb_strlen($value, 'UTF-8'); + } }