From e276198fcb66ebee0fec81869be1ba2fef068956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Efe=20Kocaba=C5=9F?= Date: Wed, 24 May 2017 17:25:59 +0300 Subject: [PATCH] Added APM php client and tests --- samples/initialize_apm.php | 86 +++++ samples/retrieve_apm.php | 15 + src/Iyzipay/Model/Apm.php | 23 ++ src/Iyzipay/Model/ApmResource.php | 262 +++++++++++++++ src/Iyzipay/Model/ApmType.php | 11 + src/Iyzipay/Model/Mapper/ApmMapper.php | 24 ++ .../Model/Mapper/ApmResourceMapper.php | 94 ++++++ .../Model/Mapper/PaymentItemMapper.php | 120 +++++++ .../Model/Mapper/PaymentResourceMapper.php | 110 +----- .../Request/CreateApmInitializeRequest.php | 258 ++++++++++++++ src/Iyzipay/Request/RetrieveApmRequest.php | 37 ++ tests/Iyzipay/Tests/Model/ApmTest.php | 29 ++ .../Tests/Model/Mapper/ApmMapperTest.php | 148 ++++++++ .../Model/Mapper/ApmResourceMapperTest.php | 150 +++++++++ .../CreateApmInitializeRequestTest.php | 317 ++++++++++++++++++ .../Tests/Request/RetrieveApmRequestTest.php | 55 +++ tests/Iyzipay/Tests/mock/create-apm.json | 11 + tests/Iyzipay/Tests/mock/retrieve-apm.json | 129 +++++++ 18 files changed, 1770 insertions(+), 109 deletions(-) create mode 100644 samples/initialize_apm.php create mode 100644 samples/retrieve_apm.php create mode 100644 src/Iyzipay/Model/Apm.php create mode 100644 src/Iyzipay/Model/ApmResource.php create mode 100644 src/Iyzipay/Model/ApmType.php create mode 100644 src/Iyzipay/Model/Mapper/ApmMapper.php create mode 100644 src/Iyzipay/Model/Mapper/ApmResourceMapper.php create mode 100644 src/Iyzipay/Model/Mapper/PaymentItemMapper.php create mode 100644 src/Iyzipay/Request/CreateApmInitializeRequest.php create mode 100644 src/Iyzipay/Request/RetrieveApmRequest.php create mode 100644 tests/Iyzipay/Tests/Model/ApmTest.php create mode 100644 tests/Iyzipay/Tests/Model/Mapper/ApmMapperTest.php create mode 100644 tests/Iyzipay/Tests/Model/Mapper/ApmResourceMapperTest.php create mode 100644 tests/Iyzipay/Tests/Request/CreateApmInitializeRequestTest.php create mode 100644 tests/Iyzipay/Tests/Request/RetrieveApmRequestTest.php create mode 100644 tests/Iyzipay/Tests/mock/create-apm.json create mode 100644 tests/Iyzipay/Tests/mock/retrieve-apm.json diff --git a/samples/initialize_apm.php b/samples/initialize_apm.php new file mode 100644 index 00000000..ebd23227 --- /dev/null +++ b/samples/initialize_apm.php @@ -0,0 +1,86 @@ +setLocale(\Iyzipay\Model\Locale::TR); +$request->setConversationId("123456789"); +$request->setPrice("1"); +$request->setPaidPrice("1.2"); +$request->setCurrency(\Iyzipay\Model\Currency::EUR); +$request->setCountryCode("DE"); +$request->setPaymentChannel(\Iyzipay\Model\PaymentChannel::WEB); +$request->setPaymentGroup(\Iyzipay\Model\PaymentGroup::PRODUCT); +$request->setAccountHolderName("John Doe"); +$request->setMerchantCallbackUrl("https://www.merchant.com/callback"); +$request->setMerchantErrorUrl("https://www.merchant.com/error"); +$request->setMerchantNotificationUrl("https://www.merchant.com/notification"); +$request->setApmType(\Iyzipay\Model\ApmType::SOFORT); + +$buyer = new \Iyzipay\Model\Buyer(); +$buyer->setId("BY789"); +$buyer->setName("John"); +$buyer->setSurname("Doe"); +$buyer->setGsmNumber("905350000000"); +$buyer->setEmail("email@email.com"); +$buyer->setIdentityNumber("74300864791"); +$buyer->setLastLoginDate("2015-10-05 12:43:35"); +$buyer->setRegistrationDate("2013-04-21 15:12:09"); +$buyer->setRegistrationAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"); +$buyer->setIp("85.34.78.112"); +$buyer->setCity("Istanbul"); +$buyer->setCountry("Turkey"); +$buyer->setZipCode("34732"); +$request->setBuyer($buyer); + +$shippingAddress = new \Iyzipay\Model\Address(); +$shippingAddress->setContactName("Jane Doe"); +$shippingAddress->setCity("Istanbul"); +$shippingAddress->setCountry("Turkey"); +$shippingAddress->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"); +$shippingAddress->setZipCode("34742"); +$request->setShippingAddress($shippingAddress); + +$billingAddress = new \Iyzipay\Model\Address(); +$billingAddress->setContactName("Jane Doe"); +$billingAddress->setCity("Istanbul"); +$billingAddress->setCountry("Turkey"); +$billingAddress->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"); +$billingAddress->setZipCode("34742"); +$request->setBillingAddress($billingAddress); + +$basketItems = array(); +$firstBasketItem = new \Iyzipay\Model\BasketItem(); +$firstBasketItem->setId("BI101"); +$firstBasketItem->setName("Binocular"); +$firstBasketItem->setCategory1("Collectibles"); +$firstBasketItem->setCategory2("Accessories"); +$firstBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL); +$firstBasketItem->setPrice("0.3"); +$basketItems[0] = $firstBasketItem; + +$secondBasketItem = new \Iyzipay\Model\BasketItem(); +$secondBasketItem->setId("BI102"); +$secondBasketItem->setName("Game code"); +$secondBasketItem->setCategory1("Game"); +$secondBasketItem->setCategory2("Online Game Items"); +$secondBasketItem->setItemType(\Iyzipay\Model\BasketItemType::VIRTUAL); +$secondBasketItem->setPrice("0.5"); +$basketItems[1] = $secondBasketItem; + +$thirdBasketItem = new \Iyzipay\Model\BasketItem(); +$thirdBasketItem->setId("BI103"); +$thirdBasketItem->setName("Usb"); +$thirdBasketItem->setCategory1("Electronics"); +$thirdBasketItem->setCategory2("Usb / Cable"); +$thirdBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL); +$thirdBasketItem->setPrice("0.2"); +$basketItems[2] = $thirdBasketItem; +$request->setBasketItems($basketItems); + +# make request +$apmInitialize = \Iyzipay\Model\Apm::create($request, Config::options()); + +# print result +print_r($apmInitialize); \ No newline at end of file diff --git a/samples/retrieve_apm.php b/samples/retrieve_apm.php new file mode 100644 index 00000000..158456ee --- /dev/null +++ b/samples/retrieve_apm.php @@ -0,0 +1,15 @@ +setLocale(\Iyzipay\Model\Locale::TR); +$request->setConversationId("123456789"); +$request->setPaymentId("1"); + +# make request +$apmRetrieve = \Iyzipay\Model\Apm::retrieve($request, Config::options()); + +# print result +print_r($apmRetrieve); \ No newline at end of file diff --git a/src/Iyzipay/Model/Apm.php b/src/Iyzipay/Model/Apm.php new file mode 100644 index 00000000..bd763ef8 --- /dev/null +++ b/src/Iyzipay/Model/Apm.php @@ -0,0 +1,23 @@ +post($options->getBaseUrl() . "/payment/apm/initialize", parent::getHttpHeaders($request, $options), $request->toJsonString()); + return ApmMapper::create($rawResult)->jsonDecode()->mapApm(new Apm()); + } + + public static function retrieve(RetrieveApmRequest $request, Options $options) + { + $rawResult = parent::httpClient()->post($options->getBaseUrl() . "/payment/apm/retrieve", parent::getHttpHeaders($request, $options), $request->toJsonString()); + return ApmMapper::create($rawResult)->jsonDecode()->mapApm(new Apm()); + } +} \ No newline at end of file diff --git a/src/Iyzipay/Model/ApmResource.php b/src/Iyzipay/Model/ApmResource.php new file mode 100644 index 00000000..85333c09 --- /dev/null +++ b/src/Iyzipay/Model/ApmResource.php @@ -0,0 +1,262 @@ +redirectUrl; + } + + public function setRedirectUrl($redirectUrl) + { + $this->redirectUrl = $redirectUrl; + } + + public function getPrice() + { + return $this->price; + } + + public function setPrice($price) + { + $this->price = $price; + } + + public function getPaidPrice() + { + return $this->paidPrice; + } + + public function setPaidPrice($paidPrice) + { + $this->paidPrice = $paidPrice; + } + + public function getPaymentId() + { + return $this->paymentId; + } + + public function setPaymentId($paymentId) + { + $this->paymentId = $paymentId; + } + + public function getMerchantCommissionRate() + { + return $this->merchantCommissionRate; + } + + public function setMerchantCommissionRate($merchantCommissionRate) + { + $this->merchantCommissionRate = $merchantCommissionRate; + } + + public function getMerchantCommissionRateAmount() + { + return $this->merchantCommissionRateAmount; + } + + public function setMerchantCommissionRateAmount($merchantCommissionRateAmount) + { + $this->merchantCommissionRateAmount = $merchantCommissionRateAmount; + } + + public function getIyziCommissionRateAmount() + { + return $this->iyziCommissionRateAmount; + } + + public function setIyziCommissionRateAmount($iyziCommissionRateAmount) + { + $this->iyziCommissionRateAmount = $iyziCommissionRateAmount; + } + + public function getIyziCommissionFee() + { + return $this->iyziCommissionFee; + } + + public function setIyziCommissionFee($iyziCommissionFee) + { + $this->iyziCommissionFee = $iyziCommissionFee; + } + + public function getBasketId() + { + return $this->basketId; + } + + public function setBasketId($basketId) + { + $this->basketId = $basketId; + } + + public function getCurrency() + { + return $this->currency; + } + + public function setCurrency($currency) + { + $this->currency = $currency; + } + + public function getPaymentItems() + { + return $this->paymentItems; + } + + public function setPaymentItems($paymentItems) + { + $this->paymentItems = $paymentItems; + } + + public function getPhase() + { + return $this->phase; + } + + public function setPhase($phase) + { + $this->phase = $phase; + } + + public function getAccountHolderName() + { + return $this->accountHolderName; + } + + public function setAccountHolderName($accountHolderName) + { + $this->accountHolderName = $accountHolderName; + } + + public function getAccountNumber() + { + return $this->accountNumber; + } + + public function setAccountNumber($accountNumber) + { + $this->accountNumber = $accountNumber; + } + + public function getBankName() + { + return $this->bankName; + } + + public function setBankName($bankName) + { + $this->bankName = $bankName; + } + + public function getBankCode() + { + return $this->bankCode; + } + + public function setBankCode($bankCode) + { + $this->bankCode = $bankCode; + } + + public function getBic() + { + return $this->bic; + } + + public function setBic($bic) + { + $this->bic = $bic; + } + + public function getPaymentPurpose() + { + return $this->paymentPurpose; + } + + public function setPaymentPurpose($paymentPurpose) + { + $this->paymentPurpose = $paymentPurpose; + } + + public function getIban() + { + return $this->iban; + } + + public function setIban($iban) + { + $this->iban = $iban; + } + + public function getCountryCode() + { + return $this->countryCode; + } + + public function setCountryCode($countryCode) + { + $this->countryCode = $countryCode; + } + + public function getApm() + { + return $this->apm; + } + + public function setApm($apm) + { + $this->apm = $apm; + } + + public function getMobilePhone() + { + return $this->mobilePhone; + } + + public function setMobilePhone($mobilePhone) + { + $this->mobilePhone = $mobilePhone; + } + + public function getPaymentStatus() + { + return $this->paymentStatus; + } + + public function setPaymentStatus($paymentStatus) + { + $this->paymentStatus = $paymentStatus; + } +} \ No newline at end of file diff --git a/src/Iyzipay/Model/ApmType.php b/src/Iyzipay/Model/ApmType.php new file mode 100644 index 00000000..b93a6fd1 --- /dev/null +++ b/src/Iyzipay/Model/ApmType.php @@ -0,0 +1,11 @@ +mapApmFrom($apm, $this->jsonObject); + } +} \ No newline at end of file diff --git a/src/Iyzipay/Model/Mapper/ApmResourceMapper.php b/src/Iyzipay/Model/Mapper/ApmResourceMapper.php new file mode 100644 index 00000000..3c915c5b --- /dev/null +++ b/src/Iyzipay/Model/Mapper/ApmResourceMapper.php @@ -0,0 +1,94 @@ +redirectUrl)) { + $apmResource->setRedirectUrl($jsonObject->redirectUrl); + } + if (isset($jsonObject->price)) { + $apmResource->setPrice($jsonObject->price); + } + if (isset($jsonObject->paidPrice)) { + $apmResource->setPaidPrice($jsonObject->paidPrice); + } + if (isset($jsonObject->paymentId)) { + $apmResource->setPaymentId($jsonObject->paymentId); + } + if (isset($jsonObject->merchantCommissionRate)) { + $apmResource->setMerchantCommissionRate($jsonObject->merchantCommissionRate); + } + if (isset($jsonObject->merchantCommissionRateAmount)) { + $apmResource->setMerchantCommissionRateAmount($jsonObject->merchantCommissionRateAmount); + } + if (isset($jsonObject->iyziCommissionRateAmount)) { + $apmResource->setIyziCommissionRateAmount($jsonObject->iyziCommissionRateAmount); + } + if (isset($jsonObject->iyziCommissionFee)) { + $apmResource->setIyziCommissionFee($jsonObject->iyziCommissionFee); + } + if (isset($jsonObject->basketId)) { + $apmResource->setBasketId($jsonObject->basketId); + } + if (isset($jsonObject->currency)) { + $apmResource->setCurrency($jsonObject->currency); + } + if (isset($jsonObject->itemTransactions)) { + $apmResource->setPaymentItems(PaymentItemMapper::create()->mapPaymentItems($jsonObject->itemTransactions)); + } + if (isset($jsonObject->phase)) { + $apmResource->setPhase($jsonObject->phase); + } + if (isset($jsonObject->accountHolderName)) { + $apmResource->setAccountHolderName($jsonObject->accountHolderName); + } + if (isset($jsonObject->accountNumber)) { + $apmResource->setAccountNumber($jsonObject->accountNumber); + } + if (isset($jsonObject->bankName)) { + $apmResource->setBankName($jsonObject->bankName); + } + if (isset($jsonObject->bankCode)) { + $apmResource->setBankCode($jsonObject->bankCode); + } + if (isset($jsonObject->bic)) { + $apmResource->setBic($jsonObject->bic); + } + if (isset($jsonObject->paymentPurpose)) { + $apmResource->setPaymentPurpose($jsonObject->paymentPurpose); + } + if (isset($jsonObject->iban)) { + $apmResource->setIban($jsonObject->iban); + } + if (isset($jsonObject->countryCode)) { + $apmResource->setCountryCode($jsonObject->countryCode); + } + if (isset($jsonObject->apm)) { + $apmResource->setApm($jsonObject->apm); + } + if (isset($jsonObject->mobilePhone)) { + $apmResource->setMobilePhone($jsonObject->mobilePhone); + } + if (isset($jsonObject->paymentStatus)) { + $apmResource->setPaymentStatus($jsonObject->paymentStatus); + } + return $apmResource; + } + + public function mapApmResource(ApmResource $apmResource) + { + return $this->mapApmResourceFrom($apmResource, $this->jsonObject); + } +} \ No newline at end of file diff --git a/src/Iyzipay/Model/Mapper/PaymentItemMapper.php b/src/Iyzipay/Model/Mapper/PaymentItemMapper.php new file mode 100644 index 00000000..0a2a13bb --- /dev/null +++ b/src/Iyzipay/Model/Mapper/PaymentItemMapper.php @@ -0,0 +1,120 @@ + $itemTransaction) { + $paymentItem = new PaymentItem(); + + if (isset($itemTransaction->itemId)) { + $paymentItem->setItemId($itemTransaction->itemId); + } + if (isset($itemTransaction->paymentTransactionId)) { + $paymentItem->setPaymentTransactionId($itemTransaction->paymentTransactionId); + } + if (isset($itemTransaction->transactionStatus)) { + $paymentItem->setTransactionStatus($itemTransaction->transactionStatus); + } + if (isset($itemTransaction->price)) { + $paymentItem->setPrice($itemTransaction->price); + } + if (isset($itemTransaction->paidPrice)) { + $paymentItem->setPaidPrice($itemTransaction->paidPrice); + } + if (isset($itemTransaction->merchantCommissionRate)) { + $paymentItem->setMerchantCommissionRate($itemTransaction->merchantCommissionRate); + } + if (isset($itemTransaction->merchantCommissionRateAmount)) { + $paymentItem->setMerchantCommissionRateAmount($itemTransaction->merchantCommissionRateAmount); + } + if (isset($itemTransaction->iyziCommissionRateAmount)) { + $paymentItem->setIyziCommissionRateAmount($itemTransaction->iyziCommissionRateAmount); + } + if (isset($itemTransaction->iyziCommissionFee)) { + $paymentItem->setIyziCommissionFee($itemTransaction->iyziCommissionFee); + } + if (isset($itemTransaction->blockageRate)) { + $paymentItem->setBlockageRate($itemTransaction->blockageRate); + } + if (isset($itemTransaction->blockageRateAmountMerchant)) { + $paymentItem->setBlockageRateAmountMerchant($itemTransaction->blockageRateAmountMerchant); + } + if (isset($itemTransaction->blockageRateAmountSubMerchant)) { + $paymentItem->setBlockageRateAmountSubMerchant($itemTransaction->blockageRateAmountSubMerchant); + } + if (isset($itemTransaction->blockageResolvedDate)) { + $paymentItem->setBlockageResolvedDate($itemTransaction->blockageResolvedDate); + } + if (isset($itemTransaction->subMerchantKey)) { + $paymentItem->setSubMerchantKey($itemTransaction->subMerchantKey); + } + if (isset($itemTransaction->subMerchantPrice)) { + $paymentItem->setSubMerchantPrice($itemTransaction->subMerchantPrice); + } + if (isset($itemTransaction->subMerchantPayoutRate)) { + $paymentItem->setSubMerchantPayoutRate($itemTransaction->subMerchantPayoutRate); + } + if (isset($itemTransaction->subMerchantPayoutAmount)) { + $paymentItem->setSubMerchantPayoutAmount($itemTransaction->subMerchantPayoutAmount); + } + if (isset($itemTransaction->merchantPayoutAmount)) { + $paymentItem->setMerchantPayoutAmount($itemTransaction->merchantPayoutAmount); + } + if (isset($itemTransaction->convertedPayout)) { + $paymentItem->setConvertedPayout($this->mapConvertedPayout($itemTransaction->convertedPayout)); + } + $paymentItems[$index] = $paymentItem; + } + return $paymentItems; + } + + private function mapConvertedPayout($payout) + { + $convertedPayout = new ConvertedPayout(); + + if (isset($payout->paidPrice)) { + $convertedPayout->setPaidPrice($payout->paidPrice); + } + if (isset($payout->iyziCommissionRateAmount)) { + $convertedPayout->setIyziCommissionRateAmount($payout->iyziCommissionRateAmount); + } + if (isset($payout->iyziCommissionFee)) { + $convertedPayout->setIyziCommissionFee($payout->iyziCommissionFee); + } + if (isset($payout->blockageRateAmountMerchant)) { + $convertedPayout->setBlockageRateAmountMerchant($payout->blockageRateAmountMerchant); + } + if (isset($payout->blockageRateAmountSubMerchant)) { + $convertedPayout->setBlockageRateAmountSubMerchant($payout->blockageRateAmountSubMerchant); + } + if (isset($payout->subMerchantPayoutAmount)) { + $convertedPayout->setSubMerchantPayoutAmount($payout->subMerchantPayoutAmount); + } + if (isset($payout->merchantPayoutAmount)) { + $convertedPayout->setMerchantPayoutAmount($payout->merchantPayoutAmount); + } + if (isset($payout->iyziConversionRate)) { + $convertedPayout->setIyziConversionRate($payout->iyziConversionRate); + } + if (isset($payout->iyziConversionRateAmount)) { + $convertedPayout->setIyziConversionRateAmount($payout->iyziConversionRateAmount); + } + if (isset($payout->currency)) { + $convertedPayout->setCurrency($payout->currency); + } + return $convertedPayout; + } +} \ No newline at end of file diff --git a/src/Iyzipay/Model/Mapper/PaymentResourceMapper.php b/src/Iyzipay/Model/Mapper/PaymentResourceMapper.php index 5539cb71..4c6f2cd8 100644 --- a/src/Iyzipay/Model/Mapper/PaymentResourceMapper.php +++ b/src/Iyzipay/Model/Mapper/PaymentResourceMapper.php @@ -2,8 +2,6 @@ namespace Iyzipay\Model\Mapper; -use Iyzipay\Model\ConvertedPayout; -use Iyzipay\Model\PaymentItem; use Iyzipay\Model\PaymentResource; class PaymentResourceMapper extends IyzipayResourceMapper @@ -72,7 +70,7 @@ public function mapPaymentResourceFrom(PaymentResource $paymentResource, $jsonOb $paymentResource->setCurrency($jsonObject->currency); } if (isset($jsonObject->itemTransactions)) { - $paymentResource->setPaymentItems($this->mapPaymentItems($jsonObject->itemTransactions)); + $paymentResource->setPaymentItems(PaymentItemMapper::create()->mapPaymentItems($jsonObject->itemTransactions)); } if (isset($jsonObject->connectorName)) { $paymentResource->setConnectorName($jsonObject->connectorName); @@ -90,110 +88,4 @@ public function mapPaymentResource(PaymentResource $paymentResource) { return $this->mapPaymentResourceFrom($paymentResource, $this->jsonObject); } - - private function mapPaymentItems($itemTransactions) - { - $paymentItems = array(); - - foreach ($itemTransactions as $index => $itemTransaction) { - $paymentItem = new PaymentItem(); - - if (isset($itemTransaction->itemId)) { - $paymentItem->setItemId($itemTransaction->itemId); - } - if (isset($itemTransaction->paymentTransactionId)) { - $paymentItem->setPaymentTransactionId($itemTransaction->paymentTransactionId); - } - if (isset($itemTransaction->transactionStatus)) { - $paymentItem->setTransactionStatus($itemTransaction->transactionStatus); - } - if (isset($itemTransaction->price)) { - $paymentItem->setPrice($itemTransaction->price); - } - if (isset($itemTransaction->paidPrice)) { - $paymentItem->setPaidPrice($itemTransaction->paidPrice); - } - if (isset($itemTransaction->merchantCommissionRate)) { - $paymentItem->setMerchantCommissionRate($itemTransaction->merchantCommissionRate); - } - if (isset($itemTransaction->merchantCommissionRateAmount)) { - $paymentItem->setMerchantCommissionRateAmount($itemTransaction->merchantCommissionRateAmount); - } - if (isset($itemTransaction->iyziCommissionRateAmount)) { - $paymentItem->setIyziCommissionRateAmount($itemTransaction->iyziCommissionRateAmount); - } - if (isset($itemTransaction->iyziCommissionFee)) { - $paymentItem->setIyziCommissionFee($itemTransaction->iyziCommissionFee); - } - if (isset($itemTransaction->blockageRate)) { - $paymentItem->setBlockageRate($itemTransaction->blockageRate); - } - if (isset($itemTransaction->blockageRateAmountMerchant)) { - $paymentItem->setBlockageRateAmountMerchant($itemTransaction->blockageRateAmountMerchant); - } - if (isset($itemTransaction->blockageRateAmountSubMerchant)) { - $paymentItem->setBlockageRateAmountSubMerchant($itemTransaction->blockageRateAmountSubMerchant); - } - if (isset($itemTransaction->blockageResolvedDate)) { - $paymentItem->setBlockageResolvedDate($itemTransaction->blockageResolvedDate); - } - if (isset($itemTransaction->subMerchantKey)) { - $paymentItem->setSubMerchantKey($itemTransaction->subMerchantKey); - } - if (isset($itemTransaction->subMerchantPrice)) { - $paymentItem->setSubMerchantPrice($itemTransaction->subMerchantPrice); - } - if (isset($itemTransaction->subMerchantPayoutRate)) { - $paymentItem->setSubMerchantPayoutRate($itemTransaction->subMerchantPayoutRate); - } - if (isset($itemTransaction->subMerchantPayoutAmount)) { - $paymentItem->setSubMerchantPayoutAmount($itemTransaction->subMerchantPayoutAmount); - } - if (isset($itemTransaction->merchantPayoutAmount)) { - $paymentItem->setMerchantPayoutAmount($itemTransaction->merchantPayoutAmount); - } - if (isset($itemTransaction->convertedPayout)) { - $paymentItem->setConvertedPayout($this->mapConvertedPayout($itemTransaction->convertedPayout)); - } - $paymentItems[$index] = $paymentItem; - } - return $paymentItems; - } - - public function mapConvertedPayout($payout) - { - $convertedPayout = new ConvertedPayout(); - - if (isset($payout->paidPrice)) { - $convertedPayout->setPaidPrice($payout->paidPrice); - } - if (isset($payout->iyziCommissionRateAmount)) { - $convertedPayout->setIyziCommissionRateAmount($payout->iyziCommissionRateAmount); - } - if (isset($payout->iyziCommissionFee)) { - $convertedPayout->setIyziCommissionFee($payout->iyziCommissionFee); - } - if (isset($payout->blockageRateAmountMerchant)) { - $convertedPayout->setBlockageRateAmountMerchant($payout->blockageRateAmountMerchant); - } - if (isset($payout->blockageRateAmountSubMerchant)) { - $convertedPayout->setBlockageRateAmountSubMerchant($payout->blockageRateAmountSubMerchant); - } - if (isset($payout->subMerchantPayoutAmount)) { - $convertedPayout->setSubMerchantPayoutAmount($payout->subMerchantPayoutAmount); - } - if (isset($payout->merchantPayoutAmount)) { - $convertedPayout->setMerchantPayoutAmount($payout->merchantPayoutAmount); - } - if (isset($payout->iyziConversionRate)) { - $convertedPayout->setIyziConversionRate($payout->iyziConversionRate); - } - if (isset($payout->iyziConversionRateAmount)) { - $convertedPayout->setIyziConversionRateAmount($payout->iyziConversionRateAmount); - } - if (isset($payout->currency)) { - $convertedPayout->setCurrency($payout->currency); - } - return $convertedPayout; - } } \ No newline at end of file diff --git a/src/Iyzipay/Request/CreateApmInitializeRequest.php b/src/Iyzipay/Request/CreateApmInitializeRequest.php new file mode 100644 index 00000000..a6acbc54 --- /dev/null +++ b/src/Iyzipay/Request/CreateApmInitializeRequest.php @@ -0,0 +1,258 @@ +price; + } + + public function setPrice($price) + { + $this->price = $price; + } + + public function getPaidPrice() + { + return $this->paidPrice; + } + + public function setPaidPrice($paidPrice) + { + $this->paidPrice = $paidPrice; + } + + public function getPaymentChannel() + { + return $this->paymentChannel; + } + + public function setPaymentChannel($paymentChannel) + { + $this->paymentChannel = $paymentChannel; + } + + public function getPaymentGroup() + { + return $this->paymentGroup; + } + + public function setPaymentGroup($paymentGroup) + { + $this->paymentGroup = $paymentGroup; + } + + public function getPaymentSource() + { + return $this->paymentSource; + } + + public function setPaymentSource($paymentSource) + { + $this->paymentSource = $paymentSource; + } + + public function getCurrency() + { + return $this->currency; + } + + public function setCurrency($currency) + { + $this->currency = $currency; + } + + public function getBasketId() + { + return $this->basketId; + } + + public function setBasketId($basketId) + { + $this->basketId = $basketId; + } + + public function getMerchantOrderId() + { + return $this->merchantOrderId; + } + + public function setMerchantOrderId($merchantOrderId) + { + $this->merchantOrderId = $merchantOrderId; + } + + public function getCountryCode() + { + return $this->countryCode; + } + + public function setCountryCode($countryCode) + { + $this->countryCode = $countryCode; + } + + public function getAccountHolderName() + { + return $this->accountHolderName; + } + + public function setAccountHolderName($accountHolderName) + { + $this->accountHolderName = $accountHolderName; + } + + public function getMerchantCallbackUrl() + { + return $this->merchantCallbackUrl; + } + + public function setMerchantCallbackUrl($merchantCallbackUrl) + { + $this->merchantCallbackUrl = $merchantCallbackUrl; + } + + public function getMerchantErrorUrl() + { + return $this->merchantErrorUrl; + } + + public function setMerchantErrorUrl($merchantErrorUrl) + { + $this->merchantErrorUrl = $merchantErrorUrl; + } + + public function getMerchantNotificationUrl() + { + return $this->merchantNotificationUrl; + } + + public function setMerchantNotificationUrl($merchantNotificationUrl) + { + $this->merchantNotificationUrl = $merchantNotificationUrl; + } + + public function getApmType() + { + return $this->apmType; + } + + public function setApmType($apmType) + { + $this->apmType = $apmType; + } + + public function getBuyer() + { + return $this->buyer; + } + + public function setBuyer($buyer) + { + $this->buyer = $buyer; + } + + public function getShippingAddress() + { + return $this->shippingAddress; + } + + public function setShippingAddress($shippingAddress) + { + $this->shippingAddress = $shippingAddress; + } + + public function getBillingAddress() + { + return $this->billingAddress; + } + + public function setBillingAddress($billingAddress) + { + $this->billingAddress = $billingAddress; + } + + public function getBasketItems() + { + return $this->basketItems; + } + + public function setBasketItems($basketItems) + { + $this->basketItems = $basketItems; + } + + public function getJsonObject() + { + return JsonBuilder::fromJsonObject(parent::getJsonObject()) + ->addPrice("price", $this->getPrice()) + ->addPrice("paidPrice", $this->getPaidPrice()) + ->add("paymentChannel", $this->getPaymentChannel()) + ->add("paymentGroup", $this->getPaymentGroup()) + ->add("paymentSource", $this->getPaymentSource()) + ->add("currency", $this->getCurrency()) + ->add("basketId", $this->getBasketId()) + ->add("merchantOrderId", $this->getMerchantOrderId()) + ->add("countryCode", $this->getCountryCode()) + ->add("accountHolderName", $this->getAccountHolderName()) + ->add("merchantCallbackUrl", $this->getMerchantCallbackUrl()) + ->add("merchantErrorUrl", $this->getMerchantErrorUrl()) + ->add("merchantNotificationUrl", $this->getMerchantNotificationUrl()) + ->add("apmType", $this->getApmType()) + ->add("buyer", $this->getBuyer()) + ->add("shippingAddress", $this->getShippingAddress()) + ->add("billingAddress", $this->getBillingAddress()) + ->addArray("basketItems", $this->getBasketItems()) + ->getObject(); + } + + public function toPKIRequestString() + { + return RequestStringBuilder::create() + ->appendSuper(parent::toPKIRequestString()) + ->appendPrice("price", $this->getPrice()) + ->appendPrice("paidPrice", $this->getPaidPrice()) + ->append("paymentChannel", $this->getPaymentChannel()) + ->append("paymentGroup", $this->getPaymentGroup()) + ->append("paymentSource", $this->getPaymentSource()) + ->append("currency", $this->getCurrency()) + ->append("basketId", $this->getBasketId()) + ->append("merchantOrderId", $this->getMerchantOrderId()) + ->append("countryCode", $this->getCountryCode()) + ->append("accountHolderName", $this->getAccountHolderName()) + ->append("merchantCallbackUrl", $this->getMerchantCallbackUrl()) + ->append("merchantErrorUrl", $this->getMerchantErrorUrl()) + ->append("merchantNotificationUrl", $this->getMerchantNotificationUrl()) + ->append("apmType", $this->getApmType()) + ->append("buyer", $this->getBuyer()) + ->append("shippingAddress", $this->getShippingAddress()) + ->append("billingAddress", $this->getBillingAddress()) + ->appendArray("basketItems", $this->getBasketItems()) + ->getRequestString(); + } +} \ No newline at end of file diff --git a/src/Iyzipay/Request/RetrieveApmRequest.php b/src/Iyzipay/Request/RetrieveApmRequest.php new file mode 100644 index 00000000..e731bdcd --- /dev/null +++ b/src/Iyzipay/Request/RetrieveApmRequest.php @@ -0,0 +1,37 @@ +paymentId; + } + + public function setPaymentId($paymentId) + { + $this->paymentId = $paymentId; + } + + public function getJsonObject() + { + return JsonBuilder::fromJsonObject(parent::getJsonObject()) + ->add("paymentId", $this->getPaymentId()) + ->getObject(); + } + + public function toPKIRequestString() + { + return RequestStringBuilder::create() + ->appendSuper(parent::toPKIRequestString()) + ->append("paymentId", $this->getPaymentId()) + ->getRequestString(); + } +} \ No newline at end of file diff --git a/tests/Iyzipay/Tests/Model/ApmTest.php b/tests/Iyzipay/Tests/Model/ApmTest.php new file mode 100644 index 00000000..33ebc5c7 --- /dev/null +++ b/tests/Iyzipay/Tests/Model/ApmTest.php @@ -0,0 +1,29 @@ +expectHttpPost(); + + $apm = Apm::create(new CreateApmInitializeRequest(), $this->options); + + $this->verifyResource($apm); + } + + public function test_should_retrieve_apm() + { + $this->expectHttpPost(); + + $apm = Apm::retrieve(new RetrieveApmRequest(), $this->options); + + $this->verifyResource($apm); + } +} \ No newline at end of file diff --git a/tests/Iyzipay/Tests/Model/Mapper/ApmMapperTest.php b/tests/Iyzipay/Tests/Model/Mapper/ApmMapperTest.php new file mode 100644 index 00000000..bd132840 --- /dev/null +++ b/tests/Iyzipay/Tests/Model/Mapper/ApmMapperTest.php @@ -0,0 +1,148 @@ +retrieveJsonFile("retrieve-apm.json"); + + $apm = ApmMapper::create($json)->jsonDecode()->mapApm(new Apm()); + + $this->assertNotEmpty($apm); + $this->assertEquals(Status::FAILURE, $apm->getStatus()); + $this->assertEquals("10000", $apm->getErrorCode()); + $this->assertEquals("error message", $apm->getErrorMessage()); + $this->assertEquals("ERROR_GROUP", $apm->getErrorGroup()); + $this->assertEquals(Locale::TR, $apm->getLocale()); + $this->assertEquals("1458545234852", $apm->getSystemTime()); + $this->assertEquals("123456", $apm->getConversationId()); + $this->assertJson($apm->getRawResult()); + $this->assertJsonStringEqualsJsonString($json, $apm->getRawResult()); + $this->assertEquals("iyzico.com", $apm->getRedirectUrl()); + $this->assertEquals(1.0, $apm->getPrice()); + $this->assertEquals(1.1, $apm->getPaidPrice()); + $this->assertEquals("1", $apm->getPaymentId()); + $this->assertEquals(10.00000000,$apm->getMerchantCommissionRate()); + $this->assertEquals(0.1, $apm->getMerchantCommissionRateAmount()); + $this->assertEquals(0.03245000, $apm->getIyziCommissionRateAmount()); + $this->assertEquals(0.29500000, $apm->getIyziCommissionFee()); + $this->assertEquals("B67832", $apm->getBasketId()); + $this->assertEquals(Currency::TL, $apm->getCurrency()); + $this->assertEquals("AUTH", $apm->getPhase()); + $this->assertEquals("Account Holder", $apm->getAccountHolderName()); + $this->assertEquals("123456", $apm->getAccountNumber()); + $this->assertEquals("Bank", $apm->getBankName()); + $this->assertEquals("Code", $apm->getBankCode()); + $this->assertEquals("1234", $apm->getBic()); + $this->assertEquals("123456", $apm->getPaymentPurpose()); + $this->assertEquals("TR1234", $apm->getIban()); + $this->assertEquals("NL", $apm->getCountryCode()); + $this->assertEquals("SOFORT", $apm->getApm()); + $this->assertEquals("532", $apm->getMobilePhone()); + $this->assertEquals("SUCCESS", $apm->getPaymentStatus()); + + $paymentItems = $apm->getPaymentItems(); + $this->assertNotEmpty($apm->getPaymentItems()); + $this->assertEquals(3, count($apm->getPaymentItems())); + + $paymentItem = $paymentItems[0]; + $this->assertEquals("BI101", $paymentItem->getItemId()); + $this->assertEquals("4977", $paymentItem->getPaymentTransactionId()); + $this->assertEquals("2", $paymentItem->getTransactionStatus()); + $this->assertEquals("0.3", $paymentItem->getPrice()); + $this->assertEquals("0.33000000", $paymentItem->getPaidPrice()); + $this->assertEquals("10.00000000", $paymentItem->getMerchantCommissionRate()); + $this->assertEquals("0.03000000", $paymentItem->getMerchantCommissionRateAmount()); + $this->assertEquals("0.00973500", $paymentItem->getIyziCommissionRateAmount()); + $this->assertEquals("0.08850000", $paymentItem->getIyziCommissionFee()); + $this->assertEquals("10.00000000", $paymentItem->getBlockageRate()); + $this->assertEquals("0.03300000", $paymentItem->getBlockageRateAmountMerchant()); + $this->assertEquals("0", $paymentItem->getBlockageRateAmountSubMerchant()); + $this->assertEquals("2016-03-28 09:27:14", $paymentItem->getBlockageResolvedDate()); + $this->assertEquals("subMerchantKey", $paymentItem->getSubMerchantKey()); + $this->assertEquals("0", $paymentItem->getSubMerchantPrice()); + $this->assertEquals("0E-8", $paymentItem->getSubMerchantPayoutRate()); + $this->assertEquals("0", $paymentItem->getSubMerchantPayoutAmount()); + $this->assertEquals("0.19876500", $paymentItem->getMerchantPayoutAmount()); + $this->assertNotEmpty($paymentItem->getConvertedPayout()); + $this->assertEquals("0.33000000", $paymentItem->getConvertedPayout()->getPaidPrice()); + $this->assertEquals("0.00973500", $paymentItem->getConvertedPayout()->getIyziCommissionRateAmount()); + $this->assertEquals("0.08850000", $paymentItem->getConvertedPayout()->getIyziCommissionFee()); + $this->assertEquals("0.03300000", $paymentItem->getConvertedPayout()->getBlockageRateAmountMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getBlockageRateAmountSubMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getSubMerchantPayoutAmount()); + $this->assertEquals("0.19876500", $paymentItem->getConvertedPayout()->getMerchantPayoutAmount()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRate()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRateAmount()); + $this->assertEquals(Currency::TL, $paymentItem->getConvertedPayout()->getCurrency()); + + $paymentItem = $paymentItems[1]; + $this->assertEquals("BI102", $paymentItem->getItemId()); + $this->assertEquals("4978", $paymentItem->getPaymentTransactionId()); + $this->assertEquals("2", $paymentItem->getTransactionStatus()); + $this->assertEquals("0.5", $paymentItem->getPrice()); + $this->assertEquals("0.55000000", $paymentItem->getPaidPrice()); + $this->assertEquals("10.00000000", $paymentItem->getMerchantCommissionRate()); + $this->assertEquals("0.05000000", $paymentItem->getMerchantCommissionRateAmount()); + $this->assertEquals("0.01622500", $paymentItem->getIyziCommissionRateAmount()); + $this->assertEquals("0.14750000", $paymentItem->getIyziCommissionFee()); + $this->assertEquals("10.00000000", $paymentItem->getBlockageRate()); + $this->assertEquals("0.05500000", $paymentItem->getBlockageRateAmountMerchant()); + $this->assertEquals("0", $paymentItem->getBlockageRateAmountSubMerchant()); + $this->assertEquals("2016-03-28 09:27:14", $paymentItem->getBlockageResolvedDate()); + $this->assertEquals("subMerchantKey", $paymentItem->getSubMerchantKey()); + $this->assertEquals("0", $paymentItem->getSubMerchantPrice()); + $this->assertEquals("0E-8", $paymentItem->getSubMerchantPayoutRate()); + $this->assertEquals("0", $paymentItem->getSubMerchantPayoutAmount()); + $this->assertEquals("0.33127500", $paymentItem->getMerchantPayoutAmount()); + $this->assertNotEmpty($paymentItem->getConvertedPayout()); + $this->assertEquals("0.55000000", $paymentItem->getConvertedPayout()->getPaidPrice()); + $this->assertEquals("0.01622500", $paymentItem->getConvertedPayout()->getIyziCommissionRateAmount()); + $this->assertEquals("0.14750000", $paymentItem->getConvertedPayout()->getIyziCommissionFee()); + $this->assertEquals("0.05500000", $paymentItem->getConvertedPayout()->getBlockageRateAmountMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getBlockageRateAmountSubMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getSubMerchantPayoutAmount()); + $this->assertEquals("0.33127500", $paymentItem->getConvertedPayout()->getMerchantPayoutAmount()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRate()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRateAmount()); + $this->assertEquals(Currency::TL, $paymentItem->getConvertedPayout()->getCurrency()); + + $paymentItem = $paymentItems[2]; + $this->assertEquals("BI103", $paymentItem->getItemId()); + $this->assertEquals("4979", $paymentItem->getPaymentTransactionId()); + $this->assertEquals("2", $paymentItem->getTransactionStatus()); + $this->assertEquals("0.2", $paymentItem->getPrice()); + $this->assertEquals("0.22000000", $paymentItem->getPaidPrice()); + $this->assertEquals("10.00000000", $paymentItem->getMerchantCommissionRate()); + $this->assertEquals("0.02000000", $paymentItem->getMerchantCommissionRateAmount()); + $this->assertEquals("0.00649000", $paymentItem->getIyziCommissionRateAmount()); + $this->assertEquals("0.05900000", $paymentItem->getIyziCommissionFee()); + $this->assertEquals("10.00000000", $paymentItem->getBlockageRate()); + $this->assertEquals("0.02200000", $paymentItem->getBlockageRateAmountMerchant()); + $this->assertEquals("0", $paymentItem->getBlockageRateAmountSubMerchant()); + $this->assertEquals("2016-03-28 09:27:14", $paymentItem->getBlockageResolvedDate()); + $this->assertEquals("subMerchantKey", $paymentItem->getSubMerchantKey()); + $this->assertEquals("0", $paymentItem->getSubMerchantPrice()); + $this->assertEquals("0E-8", $paymentItem->getSubMerchantPayoutRate()); + $this->assertEquals("0", $paymentItem->getSubMerchantPayoutAmount()); + $this->assertEquals("0.13251000", $paymentItem->getMerchantPayoutAmount()); + $this->assertNotEmpty($paymentItem->getConvertedPayout()); + $this->assertEquals("0.22000000", $paymentItem->getConvertedPayout()->getPaidPrice()); + $this->assertEquals("0.00649000", $paymentItem->getConvertedPayout()->getIyziCommissionRateAmount()); + $this->assertEquals("0.05900000", $paymentItem->getConvertedPayout()->getIyziCommissionFee()); + $this->assertEquals("0.02200000", $paymentItem->getConvertedPayout()->getBlockageRateAmountMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getBlockageRateAmountSubMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getSubMerchantPayoutAmount()); + $this->assertEquals("0.13251000", $paymentItem->getConvertedPayout()->getMerchantPayoutAmount()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRate()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRateAmount()); + $this->assertEquals(Currency::TL, $paymentItem->getConvertedPayout()->getCurrency()); + } +} \ No newline at end of file diff --git a/tests/Iyzipay/Tests/Model/Mapper/ApmResourceMapperTest.php b/tests/Iyzipay/Tests/Model/Mapper/ApmResourceMapperTest.php new file mode 100644 index 00000000..0103b9b8 --- /dev/null +++ b/tests/Iyzipay/Tests/Model/Mapper/ApmResourceMapperTest.php @@ -0,0 +1,150 @@ +retrieveJsonFile("retrieve-apm.json"); + + $apm = ApmResourceMapper::create($json)->jsonDecode()->mapApmResource(new ApmResource()); + + $this->assertNotEmpty($apm); + $this->assertEquals(Status::FAILURE, $apm->getStatus()); + $this->assertEquals("10000", $apm->getErrorCode()); + $this->assertEquals("error message", $apm->getErrorMessage()); + $this->assertEquals("ERROR_GROUP", $apm->getErrorGroup()); + $this->assertEquals(Locale::TR, $apm->getLocale()); + $this->assertEquals("1458545234852", $apm->getSystemTime()); + $this->assertEquals("123456", $apm->getConversationId()); + $this->assertJson($apm->getRawResult()); + $this->assertJsonStringEqualsJsonString($json, $apm->getRawResult()); + $this->assertEquals("iyzico.com", $apm->getRedirectUrl()); + $this->assertEquals(1.0, $apm->getPrice()); + $this->assertEquals(1.1, $apm->getPaidPrice()); + $this->assertEquals("1", $apm->getPaymentId()); + $this->assertEquals(10.00000000,$apm->getMerchantCommissionRate()); + $this->assertEquals(0.1, $apm->getMerchantCommissionRateAmount()); + $this->assertEquals(0.03245000, $apm->getIyziCommissionRateAmount()); + $this->assertEquals(0.29500000, $apm->getIyziCommissionFee()); + $this->assertEquals("B67832", $apm->getBasketId()); + $this->assertEquals(Currency::TL, $apm->getCurrency()); + $this->assertEquals("AUTH", $apm->getPhase()); + $this->assertEquals("Account Holder", $apm->getAccountHolderName()); + $this->assertEquals("123456", $apm->getAccountNumber()); + $this->assertEquals("Bank", $apm->getBankName()); + $this->assertEquals("Code", $apm->getBankCode()); + $this->assertEquals("1234", $apm->getBic()); + $this->assertEquals("123456", $apm->getPaymentPurpose()); + $this->assertEquals("TR1234", $apm->getIban()); + $this->assertEquals("NL", $apm->getCountryCode()); + $this->assertEquals("SOFORT", $apm->getApm()); + $this->assertEquals("532", $apm->getMobilePhone()); + $this->assertEquals("SUCCESS", $apm->getPaymentStatus()); + + $paymentItems = $apm->getPaymentItems(); + $this->assertNotEmpty($apm->getPaymentItems()); + $this->assertEquals(3, count($apm->getPaymentItems())); + + $paymentItem = $paymentItems[0]; + $this->assertEquals("BI101", $paymentItem->getItemId()); + $this->assertEquals("4977", $paymentItem->getPaymentTransactionId()); + $this->assertEquals("2", $paymentItem->getTransactionStatus()); + $this->assertEquals("0.3", $paymentItem->getPrice()); + $this->assertEquals("0.33000000", $paymentItem->getPaidPrice()); + $this->assertEquals("10.00000000", $paymentItem->getMerchantCommissionRate()); + $this->assertEquals("0.03000000", $paymentItem->getMerchantCommissionRateAmount()); + $this->assertEquals("0.00973500", $paymentItem->getIyziCommissionRateAmount()); + $this->assertEquals("0.08850000", $paymentItem->getIyziCommissionFee()); + $this->assertEquals("10.00000000", $paymentItem->getBlockageRate()); + $this->assertEquals("0.03300000", $paymentItem->getBlockageRateAmountMerchant()); + $this->assertEquals("0", $paymentItem->getBlockageRateAmountSubMerchant()); + $this->assertEquals("2016-03-28 09:27:14", $paymentItem->getBlockageResolvedDate()); + $this->assertEquals("subMerchantKey", $paymentItem->getSubMerchantKey()); + $this->assertEquals("0", $paymentItem->getSubMerchantPrice()); + $this->assertEquals("0E-8", $paymentItem->getSubMerchantPayoutRate()); + $this->assertEquals("0", $paymentItem->getSubMerchantPayoutAmount()); + $this->assertEquals("0.19876500", $paymentItem->getMerchantPayoutAmount()); + $this->assertNotEmpty($paymentItem->getConvertedPayout()); + $this->assertEquals("0.33000000", $paymentItem->getConvertedPayout()->getPaidPrice()); + $this->assertEquals("0.00973500", $paymentItem->getConvertedPayout()->getIyziCommissionRateAmount()); + $this->assertEquals("0.08850000", $paymentItem->getConvertedPayout()->getIyziCommissionFee()); + $this->assertEquals("0.03300000", $paymentItem->getConvertedPayout()->getBlockageRateAmountMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getBlockageRateAmountSubMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getSubMerchantPayoutAmount()); + $this->assertEquals("0.19876500", $paymentItem->getConvertedPayout()->getMerchantPayoutAmount()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRate()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRateAmount()); + $this->assertEquals(Currency::TL, $paymentItem->getConvertedPayout()->getCurrency()); + + $paymentItem = $paymentItems[1]; + $this->assertEquals("BI102", $paymentItem->getItemId()); + $this->assertEquals("4978", $paymentItem->getPaymentTransactionId()); + $this->assertEquals("2", $paymentItem->getTransactionStatus()); + $this->assertEquals("0.5", $paymentItem->getPrice()); + $this->assertEquals("0.55000000", $paymentItem->getPaidPrice()); + $this->assertEquals("10.00000000", $paymentItem->getMerchantCommissionRate()); + $this->assertEquals("0.05000000", $paymentItem->getMerchantCommissionRateAmount()); + $this->assertEquals("0.01622500", $paymentItem->getIyziCommissionRateAmount()); + $this->assertEquals("0.14750000", $paymentItem->getIyziCommissionFee()); + $this->assertEquals("10.00000000", $paymentItem->getBlockageRate()); + $this->assertEquals("0.05500000", $paymentItem->getBlockageRateAmountMerchant()); + $this->assertEquals("0", $paymentItem->getBlockageRateAmountSubMerchant()); + $this->assertEquals("2016-03-28 09:27:14", $paymentItem->getBlockageResolvedDate()); + $this->assertEquals("subMerchantKey", $paymentItem->getSubMerchantKey()); + $this->assertEquals("0", $paymentItem->getSubMerchantPrice()); + $this->assertEquals("0E-8", $paymentItem->getSubMerchantPayoutRate()); + $this->assertEquals("0", $paymentItem->getSubMerchantPayoutAmount()); + $this->assertEquals("0.33127500", $paymentItem->getMerchantPayoutAmount()); + $this->assertNotEmpty($paymentItem->getConvertedPayout()); + $this->assertEquals("0.55000000", $paymentItem->getConvertedPayout()->getPaidPrice()); + $this->assertEquals("0.01622500", $paymentItem->getConvertedPayout()->getIyziCommissionRateAmount()); + $this->assertEquals("0.14750000", $paymentItem->getConvertedPayout()->getIyziCommissionFee()); + $this->assertEquals("0.05500000", $paymentItem->getConvertedPayout()->getBlockageRateAmountMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getBlockageRateAmountSubMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getSubMerchantPayoutAmount()); + $this->assertEquals("0.33127500", $paymentItem->getConvertedPayout()->getMerchantPayoutAmount()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRate()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRateAmount()); + $this->assertEquals(Currency::TL, $paymentItem->getConvertedPayout()->getCurrency()); + + $paymentItem = $paymentItems[2]; + $this->assertEquals("BI103", $paymentItem->getItemId()); + $this->assertEquals("4979", $paymentItem->getPaymentTransactionId()); + $this->assertEquals("2", $paymentItem->getTransactionStatus()); + $this->assertEquals("0.2", $paymentItem->getPrice()); + $this->assertEquals("0.22000000", $paymentItem->getPaidPrice()); + $this->assertEquals("10.00000000", $paymentItem->getMerchantCommissionRate()); + $this->assertEquals("0.02000000", $paymentItem->getMerchantCommissionRateAmount()); + $this->assertEquals("0.00649000", $paymentItem->getIyziCommissionRateAmount()); + $this->assertEquals("0.05900000", $paymentItem->getIyziCommissionFee()); + $this->assertEquals("10.00000000", $paymentItem->getBlockageRate()); + $this->assertEquals("0.02200000", $paymentItem->getBlockageRateAmountMerchant()); + $this->assertEquals("0", $paymentItem->getBlockageRateAmountSubMerchant()); + $this->assertEquals("2016-03-28 09:27:14", $paymentItem->getBlockageResolvedDate()); + $this->assertEquals("subMerchantKey", $paymentItem->getSubMerchantKey()); + $this->assertEquals("0", $paymentItem->getSubMerchantPrice()); + $this->assertEquals("0E-8", $paymentItem->getSubMerchantPayoutRate()); + $this->assertEquals("0", $paymentItem->getSubMerchantPayoutAmount()); + $this->assertEquals("0.13251000", $paymentItem->getMerchantPayoutAmount()); + $this->assertNotEmpty($paymentItem->getConvertedPayout()); + $this->assertEquals("0.22000000", $paymentItem->getConvertedPayout()->getPaidPrice()); + $this->assertEquals("0.00649000", $paymentItem->getConvertedPayout()->getIyziCommissionRateAmount()); + $this->assertEquals("0.05900000", $paymentItem->getConvertedPayout()->getIyziCommissionFee()); + $this->assertEquals("0.02200000", $paymentItem->getConvertedPayout()->getBlockageRateAmountMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getBlockageRateAmountSubMerchant()); + $this->assertEquals("0E-8", $paymentItem->getConvertedPayout()->getSubMerchantPayoutAmount()); + $this->assertEquals("0.13251000", $paymentItem->getConvertedPayout()->getMerchantPayoutAmount()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRate()); + $this->assertEquals("0", $paymentItem->getConvertedPayout()->getIyziConversionRateAmount()); + $this->assertEquals(Currency::TL, $paymentItem->getConvertedPayout()->getCurrency()); + } +} \ No newline at end of file diff --git a/tests/Iyzipay/Tests/Request/CreateApmInitializeRequestTest.php b/tests/Iyzipay/Tests/Request/CreateApmInitializeRequestTest.php new file mode 100644 index 00000000..dc94d4e8 --- /dev/null +++ b/tests/Iyzipay/Tests/Request/CreateApmInitializeRequestTest.php @@ -0,0 +1,317 @@ +prepareRequest(); + $jsonObject = $request->getJsonObject(); + + $this->assertEquals(Locale::TR, $jsonObject["locale"]); + $this->assertEquals("123456789", $jsonObject["conversationId"]); + $this->assertEquals("1.0", $jsonObject["price"]); + $this->assertEquals("1.2", $jsonObject["paidPrice"]); + $this->assertEquals(PaymentChannel::WEB, $jsonObject["paymentChannel"]); + $this->assertEquals(PaymentGroup::PRODUCT, $jsonObject["paymentGroup"]); + $this->assertEquals("Payment Source", $jsonObject["paymentSource"]); + $this->assertEquals(Currency::EUR, $jsonObject["currency"]); + $this->assertEquals("B123456", $jsonObject["basketId"]); + $this->assertEquals("123456", $jsonObject["merchantOrderId"]); + $this->assertEquals("DE", $jsonObject["countryCode"]); + $this->assertEquals("John Doe", $jsonObject["accountHolderName"]); + $this->assertEquals("https://www.merchant.com/callback", $jsonObject["merchantCallbackUrl"]); + $this->assertEquals("https://www.merchant.com/error", $jsonObject["merchantErrorUrl"]); + $this->assertEquals("https://www.merchant.com/notification", $jsonObject["merchantNotificationUrl"]); + $this->assertEquals(ApmType::SOFORT, $jsonObject["apmType"]); + $this->assertEquals("BY789", $jsonObject["buyer"]["id"]); + $this->assertEquals("John", $jsonObject["buyer"]["name"]); + $this->assertEquals("Doe", $jsonObject["buyer"]["surname"]); + $this->assertEquals("74300864791", $jsonObject["buyer"]["identityNumber"]); + $this->assertEquals("email@email.com", $jsonObject["buyer"]["email"]); + $this->assertEquals("905350000000", $jsonObject["buyer"]["gsmNumber"]); + $this->assertEquals("2013-04-21 15:12:09", $jsonObject["buyer"]["registrationDate"]); + $this->assertEquals("2015-10-05 12:43:35", $jsonObject["buyer"]["lastLoginDate"]); + $this->assertEquals("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1", $jsonObject["buyer"]["registrationAddress"]); + $this->assertEquals("Istanbul", $jsonObject["buyer"]["city"]); + $this->assertEquals("Turkey", $jsonObject["buyer"]["country"]); + $this->assertEquals("34732", $jsonObject["buyer"]["zipCode"]); + $this->assertEquals("85.34.78.112", $jsonObject["buyer"]["ip"]); + $this->assertEquals("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1", $jsonObject["shippingAddress"]["address"]); + $this->assertEquals("34742", $jsonObject["shippingAddress"]["zipCode"]); + $this->assertEquals("Jane Doe", $jsonObject["shippingAddress"]["contactName"]); + $this->assertEquals("Istanbul", $jsonObject["shippingAddress"]["city"]); + $this->assertEquals("Turkey", $jsonObject["shippingAddress"]["country"]); + $this->assertEquals("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1", $jsonObject["billingAddress"]["address"]); + $this->assertEquals("34742", $jsonObject["billingAddress"]["zipCode"]); + $this->assertEquals("Jane Doe", $jsonObject["billingAddress"]["contactName"]); + $this->assertEquals("Istanbul", $jsonObject["billingAddress"]["city"]); + $this->assertEquals("Turkey", $jsonObject["billingAddress"]["country"]); + $this->assertEquals("BI101", $jsonObject["basketItems"][0]["id"]); + $this->assertEquals("0.3", $jsonObject["basketItems"][0]["price"]); + $this->assertEquals("Binocular", $jsonObject["basketItems"][0]["name"]); + $this->assertEquals("Collectibles", $jsonObject["basketItems"][0]["category1"]); + $this->assertEquals("Accessories", $jsonObject["basketItems"][0]["category2"]); + $this->assertEquals(BasketItemType::PHYSICAL, $jsonObject["basketItems"][0]["itemType"]); + $this->assertEquals("BI102", $jsonObject["basketItems"][1]["id"]); + $this->assertEquals("0.5", $jsonObject["basketItems"][1]["price"]); + $this->assertEquals("Game code", $jsonObject["basketItems"][1]["name"]); + $this->assertEquals("Game", $jsonObject["basketItems"][1]["category1"]); + $this->assertEquals("Online Game Items", $jsonObject["basketItems"][1]["category2"]); + $this->assertEquals(BasketItemType::VIRTUAL, $jsonObject["basketItems"][1]["itemType"]); + $this->assertEquals("BI103", $jsonObject["basketItems"][2]["id"]); + $this->assertEquals("0.2", $jsonObject["basketItems"][2]["price"]); + $this->assertEquals("Usb", $jsonObject["basketItems"][2]["name"]); + $this->assertEquals("Electronics", $jsonObject["basketItems"][2]["category1"]); + $this->assertEquals("Usb / Cable", $jsonObject["basketItems"][2]["category2"]); + $this->assertEquals(BasketItemType::PHYSICAL, $jsonObject["basketItems"][2]["itemType"]); + } + + public function test_should_convert_to_pki_request_string() + { + $request = $this->prepareRequest(); + + $str = "[locale=tr," . + "conversationId=123456789," . + "price=1.0," . + "paidPrice=1.2," . + "paymentChannel=WEB," . + "paymentGroup=PRODUCT," . + "paymentSource=Payment Source," . + "currency=EUR," . + "basketId=B123456," . + "merchantOrderId=123456," . + "countryCode=DE," . + "accountHolderName=John Doe," . + "merchantCallbackUrl=https://www.merchant.com/callback," . + "merchantErrorUrl=https://www.merchant.com/error," . + "merchantNotificationUrl=https://www.merchant.com/notification," . + "apmType=SOFORT," . + "buyer=[id=BY789," . + "name=John," . + "surname=Doe," . + "identityNumber=74300864791," . + "email=email@email.com," . + "gsmNumber=905350000000," . + "registrationDate=2013-04-21 15:12:09," . + "lastLoginDate=2015-10-05 12:43:35," . + "registrationAddress=Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1," . + "city=Istanbul," . + "country=Turkey," . + "zipCode=34732," . + "ip=85.34.78.112]," . + "shippingAddress=[address=Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1," . + "zipCode=34742," . + "contactName=Jane Doe," . + "city=Istanbul," . + "country=Turkey]," . + "billingAddress=[address=Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1," . + "zipCode=34742," . + "contactName=Jane Doe," . + "city=Istanbul," . + "country=Turkey]," . + "basketItems=[[id=BI101," . + "price=0.3," . + "name=Binocular," . + "category1=Collectibles," . + "category2=Accessories," . + "itemType=PHYSICAL], " . + "[id=BI102," . + "price=0.5," . + "name=Game code," . + "category1=Game," . + "category2=Online Game Items," . + "itemType=VIRTUAL], " . + "[id=BI103," . + "price=0.2," . + "name=Usb," . + "category1=Electronics," . + "category2=Usb / Cable," . + "itemType=PHYSICAL]]]"; + + $this->assertEquals($str, $request->toPKIRequestString()); + } + + public function test_should_get_json_string() + { + $request = $this->prepareRequest(); + + $json = ' + { + "locale":"tr", + "conversationId":"123456789", + "price":"1.0", + "paidPrice":"1.2", + "paymentChannel":"WEB", + "paymentGroup":"PRODUCT", + "paymentSource":"Payment Source", + "currency":"EUR", + "basketId":"B123456", + "merchantOrderId":"123456", + "countryCode":"DE", + "accountHolderName":"John Doe", + "merchantCallbackUrl":"https://www.merchant.com/callback", + "merchantErrorUrl":"https://www.merchant.com/error", + "merchantNotificationUrl":"https://www.merchant.com/notification", + "apmType":"SOFORT", + "buyer": + { + "id":"BY789", + "name":"John", + "surname":"Doe", + "identityNumber":"74300864791", + "email":"email@email.com", + "gsmNumber":"905350000000", + "registrationDate":"2013-04-21 15:12:09", + "lastLoginDate":"2015-10-05 12:43:35", + "registrationAddress":"Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1", + "city":"Istanbul", + "country":"Turkey", + "zipCode":"34732", + "ip":"85.34.78.112" + }, + "shippingAddress": + { + "address":"Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1", + "zipCode":"34742", + "contactName":"Jane Doe", + "city":"Istanbul", + "country":"Turkey" + }, + "billingAddress": + { + "address":"Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1", + "zipCode":"34742", + "contactName":"Jane Doe", + "city":"Istanbul", + "country":"Turkey" + }, + "basketItems": + [ + { + "id":"BI101", + "price":"0.3", + "name":"Binocular", + "category1":"Collectibles", + "category2":"Accessories", + "itemType":"PHYSICAL" + }, + { + "id":"BI102", + "price":"0.5", + "name":"Game code", + "category1":"Game", + "category2":"Online Game Items", + "itemType":"VIRTUAL" + }, + { + "id":"BI103", + "price":"0.2", + "name":"Usb", + "category1":"Electronics", + "category2":"Usb / Cable", + "itemType":"PHYSICAL" + } + ] + }'; + + $this->assertJson($request->toJsonString()); + $this->assertJsonStringEqualsJsonString($json, $request->toJsonString()); + } + + private function prepareRequest() + { + $request = new CreateApmInitializeRequest(); + $request->setLocale(Locale::TR); + $request->setConversationId("123456789"); + $request->setPrice("1"); + $request->setPaidPrice("1.2"); + $request->setCurrency(Currency::EUR); + $request->setCountryCode("DE"); + $request->setBasketId("B123456"); + $request->setMerchantOrderId("123456"); + $request->setPaymentChannel(PaymentChannel::WEB); + $request->setPaymentGroup(PaymentGroup::PRODUCT); + $request->setPaymentSource("Payment Source"); + $request->setAccountHolderName("John Doe"); + $request->setMerchantCallbackUrl("https://www.merchant.com/callback"); + $request->setMerchantErrorUrl("https://www.merchant.com/error"); + $request->setMerchantNotificationUrl("https://www.merchant.com/notification"); + $request->setApmType(ApmType::SOFORT); + + $buyer = new Buyer(); + $buyer->setId("BY789"); + $buyer->setName("John"); + $buyer->setSurname("Doe"); + $buyer->setGsmNumber("905350000000"); + $buyer->setEmail("email@email.com"); + $buyer->setIdentityNumber("74300864791"); + $buyer->setLastLoginDate("2015-10-05 12:43:35"); + $buyer->setRegistrationDate("2013-04-21 15:12:09"); + $buyer->setRegistrationAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"); + $buyer->setIp("85.34.78.112"); + $buyer->setCity("Istanbul"); + $buyer->setCountry("Turkey"); + $buyer->setZipCode("34732"); + $request->setBuyer($buyer); + + $shippingAddress = new Address(); + $shippingAddress->setContactName("Jane Doe"); + $shippingAddress->setCity("Istanbul"); + $shippingAddress->setCountry("Turkey"); + $shippingAddress->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"); + $shippingAddress->setZipCode("34742"); + $request->setShippingAddress($shippingAddress); + + $billingAddress = new Address(); + $billingAddress->setContactName("Jane Doe"); + $billingAddress->setCity("Istanbul"); + $billingAddress->setCountry("Turkey"); + $billingAddress->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"); + $billingAddress->setZipCode("34742"); + $request->setBillingAddress($billingAddress); + + $basketItems = array(); + $firstBasketItem = new BasketItem(); + $firstBasketItem->setId("BI101"); + $firstBasketItem->setName("Binocular"); + $firstBasketItem->setCategory1("Collectibles"); + $firstBasketItem->setCategory2("Accessories"); + $firstBasketItem->setItemType(BasketItemType::PHYSICAL); + $firstBasketItem->setPrice("0.3"); + $basketItems[0] = $firstBasketItem; + + $secondBasketItem = new BasketItem(); + $secondBasketItem->setId("BI102"); + $secondBasketItem->setName("Game code"); + $secondBasketItem->setCategory1("Game"); + $secondBasketItem->setCategory2("Online Game Items"); + $secondBasketItem->setItemType(BasketItemType::VIRTUAL); + $secondBasketItem->setPrice("0.5"); + $basketItems[1] = $secondBasketItem; + + $thirdBasketItem = new BasketItem(); + $thirdBasketItem->setId("BI103"); + $thirdBasketItem->setName("Usb"); + $thirdBasketItem->setCategory1("Electronics"); + $thirdBasketItem->setCategory2("Usb / Cable"); + $thirdBasketItem->setItemType(BasketItemType::PHYSICAL); + $thirdBasketItem->setPrice("0.2"); + $basketItems[2] = $thirdBasketItem; + $request->setBasketItems($basketItems); + return $request; + } +} \ No newline at end of file diff --git a/tests/Iyzipay/Tests/Request/RetrieveApmRequestTest.php b/tests/Iyzipay/Tests/Request/RetrieveApmRequestTest.php new file mode 100644 index 00000000..bae6aec2 --- /dev/null +++ b/tests/Iyzipay/Tests/Request/RetrieveApmRequestTest.php @@ -0,0 +1,55 @@ +prepareRequest(); + $jsonObject = $request->getJsonObject(); + + $this->assertEquals(Locale::TR, $jsonObject["locale"]); + $this->assertEquals("123456789", $jsonObject["conversationId"]); + $this->assertEquals("1", $jsonObject["paymentId"]); + } + + public function test_should_convert_to_pki_request_string() + { + $request = $this->prepareRequest(); + + $str = "[locale=tr," . + "conversationId=123456789," . + "paymentId=1]"; + + $this->assertEquals($str, $request->toPKIRequestString()); + } + + public function test_should_get_json_string() + { + $request = $this->prepareRequest(); + + $json = ' + { + "locale":"tr", + "conversationId":"123456789", + "paymentId":"1" + }'; + + $this->assertJson($request->toJsonString()); + $this->assertJsonStringEqualsJsonString($json, $request->toJsonString()); + } + + private function prepareRequest() + { + $request = new RetrieveApmRequest(); + $request->setLocale(Locale::TR); + $request->setConversationId("123456789"); + $request->setPaymentId("1"); + return $request; + } +} \ No newline at end of file diff --git a/tests/Iyzipay/Tests/mock/create-apm.json b/tests/Iyzipay/Tests/mock/create-apm.json new file mode 100644 index 00000000..22702742 --- /dev/null +++ b/tests/Iyzipay/Tests/mock/create-apm.json @@ -0,0 +1,11 @@ +{ + "redirectUrl": "iyzico.com", + "paymentId": 1, + "status": "failure", + "errorCode": 10000, + "errorMessage": "error message", + "errorGroup": "ERROR_GROUP", + "locale": "tr", + "systemTime": "1458545234852", + "conversationId": "123456" +} \ No newline at end of file diff --git a/tests/Iyzipay/Tests/mock/retrieve-apm.json b/tests/Iyzipay/Tests/mock/retrieve-apm.json new file mode 100644 index 00000000..7c6db421 --- /dev/null +++ b/tests/Iyzipay/Tests/mock/retrieve-apm.json @@ -0,0 +1,129 @@ +{ + "status": "failure", + "errorCode": "10000", + "errorMessage": "error message", + "errorGroup": "ERROR_GROUP", + "locale": "tr", + "systemTime": 1458545234852, + "conversationId": "123456", + "redirectUrl": "iyzico.com", + "price": 1.0, + "paidPrice": 1.1, + "paymentId": "1", + "merchantCommissionRate": 10.00000000, + "merchantCommissionRateAmount": 0.1, + "iyziCommissionRateAmount": 0.03245000, + "iyziCommissionFee": 0.29500000, + "basketId": "B67832", + "currency": "TRY", + "itemTransactions": [ + { + "itemId": "BI101", + "paymentTransactionId": "4977", + "transactionStatus": 2, + "price": 0.3, + "paidPrice": 0.33000000, + "merchantCommissionRate": 10.00000000, + "merchantCommissionRateAmount": 0.03000000, + "iyziCommissionRateAmount": 0.00973500, + "iyziCommissionFee": 0.08850000, + "blockageRate": 10.00000000, + "blockageRateAmountMerchant": 0.03300000, + "blockageRateAmountSubMerchant": 0, + "blockageResolvedDate": "2016-03-28 09:27:14", + "subMerchantKey": "subMerchantKey", + "subMerchantPrice": 0, + "subMerchantPayoutRate": 0E-8, + "subMerchantPayoutAmount": 0, + "merchantPayoutAmount": 0.19876500, + "convertedPayout": { + "paidPrice": 0.33000000, + "iyziCommissionRateAmount": 0.00973500, + "iyziCommissionFee": 0.08850000, + "blockageRateAmountMerchant": 0.03300000, + "blockageRateAmountSubMerchant": 0E-8, + "subMerchantPayoutAmount": 0E-8, + "merchantPayoutAmount": 0.19876500, + "iyziConversionRate": 0, + "iyziConversionRateAmount": 0, + "currency": "TRY" + } + }, + { + "itemId": "BI102", + "paymentTransactionId": "4978", + "transactionStatus": 2, + "price": 0.5, + "paidPrice": 0.55000000, + "merchantCommissionRate": 10.00000000, + "merchantCommissionRateAmount": 0.05000000, + "iyziCommissionRateAmount": 0.01622500, + "iyziCommissionFee": 0.14750000, + "blockageRate": 10.00000000, + "blockageRateAmountMerchant": 0.05500000, + "blockageRateAmountSubMerchant": 0, + "blockageResolvedDate": "2016-03-28 09:27:14", + "subMerchantKey": "subMerchantKey", + "subMerchantPrice": 0, + "subMerchantPayoutRate": 0E-8, + "subMerchantPayoutAmount": 0, + "merchantPayoutAmount": 0.33127500, + "convertedPayout": { + "paidPrice": 0.55000000, + "iyziCommissionRateAmount": 0.01622500, + "iyziCommissionFee": 0.14750000, + "blockageRateAmountMerchant": 0.05500000, + "blockageRateAmountSubMerchant": 0E-8, + "subMerchantPayoutAmount": 0E-8, + "merchantPayoutAmount": 0.33127500, + "iyziConversionRate": 0, + "iyziConversionRateAmount": 0, + "currency": "TRY" + } + }, + { + "itemId": "BI103", + "paymentTransactionId": "4979", + "transactionStatus": 2, + "price": 0.2, + "paidPrice": 0.22000000, + "merchantCommissionRate": 10.00000000, + "merchantCommissionRateAmount": 0.02000000, + "iyziCommissionRateAmount": 0.00649000, + "iyziCommissionFee": 0.05900000, + "blockageRate": 10.00000000, + "blockageRateAmountMerchant": 0.02200000, + "blockageRateAmountSubMerchant": 0, + "blockageResolvedDate": "2016-03-28 09:27:14", + "subMerchantKey": "subMerchantKey", + "subMerchantPrice": 0, + "subMerchantPayoutRate": 0E-8, + "subMerchantPayoutAmount": 0, + "merchantPayoutAmount": 0.13251000, + "convertedPayout": { + "paidPrice": 0.22000000, + "iyziCommissionRateAmount": 0.00649000, + "iyziCommissionFee": 0.05900000, + "blockageRateAmountMerchant": 0.02200000, + "blockageRateAmountSubMerchant": 0E-8, + "subMerchantPayoutAmount": 0E-8, + "merchantPayoutAmount": 0.13251000, + "iyziConversionRate": 0, + "iyziConversionRateAmount": 0, + "currency": "TRY" + } + } + ], + "phase": "AUTH", + "accountHolderName": "Account Holder", + "accountNumber": "123456", + "bankName": "Bank", + "bankCode": "Code", + "bic": "1234", + "paymentPurpose": "123456", + "iban": "TR1234", + "countryCode": "NL", + "apm": "SOFORT", + "mobilePhone": "532", + "paymentStatus": "SUCCESS" +} \ No newline at end of file