Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ok plus installment #186

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,5 @@ build/
composer.lock
composer.phar
vendor/*

.phpunit.result.cache
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@
}
],
"require": {
"php": ">=5.3.0",
"php": ">=7.4.0",
"ext-curl": "*"
},
"require-dev": {
"phpunit/phpunit": "~4.0",
"phpunit/phpunit": "~9.6",
"satooshi/php-coveralls": "~0.6.1"
},
"autoload": {
Expand Down
87 changes: 87 additions & 0 deletions samples/create_plus_installment_payment.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
<?php

require_once('config.php');

function createPlusInstallmentPayment(): void {
$request = new \Iyzipay\Request\CreatePlusInstallmentPaymentRequest();
$request->setLocale(\Iyzipay\Model\Locale::TR);
$request->setConversationId("123456789");
$request->setPrice(1);
$request->setPaidPrice(1.1);
$request->setCurrency('TRY');
$request->setInstallment(1);
$request->setPaymentChannel(Iyzipay\Model\PaymentChannel::WEB);
$request->setBasketId('B67832');
$request->setPaymentGroup(\Iyzipay\Model\PaymentGroup::PRODUCT);

$card = new \Iyzipay\Model\PaymentCard();
$card->setCardHolderName('John Doe');
$card->setCardNumber('5528790000000008');
$card->setExpireYear('2030');
$card->setExpireMonth('12');
$card->setCvc('123');
$card->setRegisterCard(0);
$request->setPaymentCard($card);

$buyer = new \Iyzipay\Model\Buyer();
$buyer->setId('BY789');
$buyer->setName('John');
$buyer->setSurname('Doe');
$buyer->setIdentityNumber('74300864791');
$buyer->setEmail('[email protected]');
$buyer->setGsmNumber('+905350000000');
$buyer->setRegistrationDate('2013-04-21 15:12:09');
$buyer->setLastLoginDate('2015-10-05 12:43:35');
$buyer->setRegistrationAddress('Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1');
$buyer->setCity('Istanbul');
$buyer->setCountry('Turkey');
$buyer->setZipCode('34732');
$buyer->setIp('85.34.78.112');
$request->setBuyer($buyer);

$shippingAddress = new \Iyzipay\Model\Address();
$shippingAddress->setAddress('Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1');
$shippingAddress->setZipCode('34742');
$shippingAddress->setContactName('Jane Doe');
$shippingAddress->setCity('Istanbul');
$shippingAddress->setCountry('Turkey');
$request->setShippingAddress($shippingAddress);

$billingAddress = new \Iyzipay\Model\Address();
$billingAddress->setAddress('Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1');
$billingAddress->setZipCode('34742');
$billingAddress->setContactName('Jane Doe');
$billingAddress->setCity('Istanbul');
$billingAddress->setCountry('Turkey');
$request->setBillingAddress($billingAddress);

$firstBasketItem = new Iyzipay\Model\BasketItem();
$firstBasketItem->setId('BI101');
$firstBasketItem->setPrice(0.3);
$firstBasketItem->setName('Binocular');
$firstBasketItem->setCategory1('Collectibles');
$firstBasketItem->setCategory2('Accessories');
$firstBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);

$secondBasketItem = new Iyzipay\Model\BasketItem();
$secondBasketItem->setId('BI101');
$secondBasketItem->setPrice(0.5);
$secondBasketItem->setName('Binocular');
$secondBasketItem->setCategory1('Collectibles');
$secondBasketItem->setCategory2('Accessories');
$secondBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);

$thirdBasketItem = new Iyzipay\Model\BasketItem();
$thirdBasketItem->setId('BI101');
$thirdBasketItem->setPrice(0.2);
$thirdBasketItem->setName('Binocular');
$thirdBasketItem->setCategory1('Collectibles');
$thirdBasketItem->setCategory2('Accessories');
$thirdBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
$request->setBasketItems([$firstBasketItem, $secondBasketItem, $thirdBasketItem]);

$plusInstallmentPayment = \Iyzipay\Model\PlusInstallmentPayment::create($request, Config::options());
print_r($plusInstallmentPayment);
}

createPlusInstallmentPayment();
12 changes: 12 additions & 0 deletions src/Iyzipay/DefaultHttpClient.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,18 @@ public function put($url, $header, $content)
));
}

public function patch($url, $header, $content)
{
return $this->curl->exec($url, array(
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => $content,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_VERBOSE => false,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $header
));
}

public function delete($url, $header, $content = null)
{
return $this->curl->exec($url, array(
Expand Down
3 changes: 2 additions & 1 deletion src/Iyzipay/IyzipayResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ protected static function getHttpHeaders(Request $request, Options $options)
return $header;
}

protected static function getHttpHeadersV2($uri, Request $request = null, Options $options)
protected static function getHttpHeadersV2($uri, Request $request = null, Options $options, bool $addRandom = false)
{
$header = array(
"Accept: application/json",
Expand All @@ -36,6 +36,7 @@ protected static function getHttpHeadersV2($uri, Request $request = null, Option

$rnd = uniqid();
array_push($header, "Authorization: " . self::prepareAuthorizationStringV2($uri, $request, $options, $rnd));
$addRandom && array_push($header, "x-iyzi-rnd: " . $rnd);
array_push($header, "x-iyzi-client-version: " . "iyzipay-php-2.0.43");

return $header;
Expand Down
20 changes: 20 additions & 0 deletions src/Iyzipay/Model/Mapper/PlusInstallmentPaymentMapper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace Iyzipay\Model\Mapper;

use Iyzipay\Model\PlusInstallmentPayment;

class PlusInstallmentPaymentMapper extends PlusInstallmentPaymentResourceMapper {
public static function create($rawResult = null): PlusInstallmentPaymentMapper {
return new PlusInstallmentPaymentMapper($rawResult);
}

public function mapPlusInstallmentPaymentFrom(PlusInstallmentPayment $payment, object $jsonObject): \Iyzipay\Model\PlusInstallmentPayment {
parent::mapPlusInstallmentPaymentResourceFrom($payment, $jsonObject);
return $payment;
}

public function mapPlusInstallmentPayment(PlusInstallmentPayment $payment): PlusInstallmentPayment {
return $this->mapPlusInstallmentPaymentFrom($payment, $this->jsonObject);
}
}
77 changes: 77 additions & 0 deletions src/Iyzipay/Model/Mapper/PlusInstallmentPaymentResourceMapper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<?php

namespace Iyzipay\Model\Mapper;

use Iyzipay\Model\PlusInstallmentPaymentResource;

class PlusInstallmentPaymentResourceMapper extends IyzipayResourceMapper {
public static function create($rawResult = null): PlusInstallmentPaymentResourceMapper {
return new PlusInstallmentPaymentResourceMapper($rawResult);
}

public function mapPlusInstallmentPaymentResourceFrom(PlusInstallmentPaymentResource $resource, object $jsonObject): PlusInstallmentPaymentResource {
parent::mapResourceFrom($resource, $jsonObject);

if (isset($jsonObject->price)) {
$resource->setPrice($jsonObject->price);
}

if (isset($jsonObject->paidPrice)) {
$resource->setPaidPrice($jsonObject->paidPrice);
}

if (isset($jsonObject->currency)) {
$resource->setCurrency($jsonObject->currency);
}

if (isset($jsonObject->installment)) {
$resource->setInstallment($jsonObject->installment);
}

if (isset($jsonObject->paymentChannel)) {
$resource->setPaymentChannel($jsonObject->paymentChannel);
}

if (isset($jsonObject->basketId)) {
$resource->setBasketId($jsonObject->basketId);
}

if (isset($jsonObject->paymentGroup)) {
$resource->setPaymentGroup($jsonObject->paymentGroup);
}

// if (isset($jsonObject->connectorName)) {
// $resource->setConnectorName($jsonObject->connectorName);
// }
//
// if (isset($jsonObject->plusInstallmentUsage)) {
// $resource->setPlusInstallmentUsage($jsonObject->plusInstallmentUsage);
// }

if (isset($jsonObject->paymentCard)) {
$resource->setPaymentCard($jsonObject->paymentCard);
}

if (isset($jsonObject->buyer)) {
$resource->setBuyer($jsonObject->buyer);
}

if (isset($jsonObject->shippingAddress)) {
$resource->setShippingAddress($jsonObject->shippingAddress);
}

if (isset($jsonObject->billingAddress)) {
$resource->setBillingAddress($jsonObject->billingAddress);
}

if (isset($jsonObject->basketItems)) {
$resource->setBasketItems($jsonObject->basketItems);
}

return $resource;
}

public function mapPlusInstallmentPaymentResource(PlusInstallmentPaymentResource $resource): PlusInstallmentPaymentResource {
return $this->mapPlusInstallmentPaymentResourceFrom($resource, $this->jsonObject);
}
}
14 changes: 14 additions & 0 deletions src/Iyzipay/Model/PlusInstallmentPayment.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Iyzipay\Model;

use Iyzipay\Options;
use Iyzipay\Model\Mapper\PlusInstallmentPaymentMapper;
use Iyzipay\Request\CreatePlusInstallmentPaymentRequest;

class PlusInstallmentPayment extends PlusInstallmentPaymentResource {
public static function create(CreatePlusInstallmentPaymentRequest $request, Options $options) {
$rawResult = parent::httpClient()->post($options->getBaseUrl() . '/payment/auth', parent::getHttpHeaders($request, $options), $request->toJsonString());
return PlusInstallmentPaymentMapper::create($rawResult)->jsonDecode()->mapPlusInstallmentPayment(new PlusInstallmentPayment());
}
}
134 changes: 134 additions & 0 deletions src/Iyzipay/Model/PlusInstallmentPaymentResource.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
<?php

namespace Iyzipay\Model;

use Iyzipay\IyzipayResource;

class PlusInstallmentPaymentResource extends IyzipayResource {
private float $price;
private float $paidPrice;
private string $currency;
private int $installment;
private string $paymentChannel;
private string $basketId;
private string $paymentGroup;
private string $connectorName;
private int $plusInstallmentUsage;
private PaymentCard $paymentCard;
private Buyer $buyer;
private Address $shippingAddress;
private Address $billingAddress;
private array $basketItems;

public function getPrice(): float {
return $this->price;
}

public function setPrice(float $price): void {
$this->price = $price;
}

public function getPaidPrice(): float {
return $this->paidPrice;
}

public function setPaidPrice(float $paidPrice): void {
$this->paidPrice = $paidPrice;
}

public function getCurrency(): string {
return $this->currency;
}

public function setCurrency(string $currency): void {
$this->currency = $currency;
}

public function getInstallment(): int {
return $this->installment;
}

public function setInstallment(int $installment): void {
$this->installment = $installment;
}

public function getPaymentChannel(): string {
return $this->paymentChannel;
}

public function setPaymentChannel(string $paymentChannel): void {
$this->paymentChannel = $paymentChannel;
}

public function getBasketId(): string {
return $this->basketId;
}

public function setBasketId(string $basketId): void {
$this->basketId = $basketId;
}

public function getPaymentGroup(): string {
return $this->paymentGroup;
}

public function setPaymentGroup(string $paymentGroup): void {
$this->paymentGroup = $paymentGroup;
}

public function getConnectorName(): string {
return $this->connectorName;
}

public function setConnectorName(string $connectorName): void {
$this->connectorName = $connectorName;
}

public function getPlusInstallmentUsage(): int {
return $this->plusInstallmentUsage;
}

public function setPlusInstallmentUsage(int $plusInstallmentUsage): void {
$this->plusInstallmentUsage = $plusInstallmentUsage;
}

public function getPaymentCard(): PaymentCard {
return $this->paymentCard;
}

public function setPaymentCard(PaymentCard $paymentCard): void {
$this->paymentCard = $paymentCard;
}

public function getBuyer(): Buyer {
return $this->buyer;
}

public function setBuyer(Buyer $buyer): void {
$this->buyer = $buyer;
}

public function getShippingAddress(): Address {
return $this->shippingAddress;
}

public function setShippingAddress(Address $shippingAddress): void {
$this->shippingAddress = $shippingAddress;
}

public function getBillingAddress(): Address {
return $this->billingAddress;
}

public function setBillingAddress(Address $billingAddress): void {
$this->billingAddress = $billingAddress;
}

public function getBasketItems(): array {
return $this->basketItems;
}

public function setBasketItems(array $basketItems): void {
$this->basketItems = $basketItems;
}
}
Loading
Loading