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 subscription #188

Closed
wants to merge 9 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
12 changes: 12 additions & 0 deletions samples/subscription-samples/delete_customer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

require dirname(__DIR__) . '/config.php';

function deleteSubscriptionCustomer(): void {
$request = new \Iyzipay\Request\Subscription\SubscriptionDeleteCustomerRequest();
$request->setCustomerReferenceCode('566b2e1a-5046-4438-9b62-c8cf761f61d1');
$result = \Iyzipay\Model\Subscription\SubscriptionDeleteCustomer::delete($request, Config::options());
print_r($result);
}

deleteSubscriptionCustomer();
22 changes: 22 additions & 0 deletions samples/subscription-samples/subscription_list.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

require dirname(__DIR__) . '/config.php';

function subscriptionList(): void {
$request = new \Iyzipay\Request\Subscription\SubscriptionListRequest();

$request->setPage(1);
$request->setCount(10);
$request->setSubscriptionStatus(\Iyzipay\Model\Status::ACTIVE);
$request->setSubscriptionReferenceCode('c8ab43da-f4b3-40d2-b1ef-620da93ec3e9');
$request->setCustomerReferenceCode('566b2e1a-5046-4438-9b62-c8cf761f61d1');
$request->setPricingPlanReferenceCode('c1d489b6-9adc-42fa-88ae-47ea2e5dbe1e');
$request->setParentReferenceCode('f219267d-ce05-4039-a773-225ea44aacd1');
$request->setStartDate('2024-01-01 23:56:00');
$request->setEndDate('2024-02-02 23:56:00');

$result = \Iyzipay\Model\Subscription\SubscriptionList::create($request, Config::options());
print_r($result);
}

subscriptionList();
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace Iyzipay\Model\Mapper\Subscription;

use Iyzipay\Model\Mapper\IyzipayResourceMapper;
use Iyzipay\Model\Subscription\SubscriptionDeleteCustomer;

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

public function mapSubscriptionDeleteCustomerFrom(SubscriptionDeleteCustomer $customer, object $jsonObject): SubscriptionDeleteCustomer {
parent::mapResourceFrom($customer, $jsonObject);

if (isset($jsonObject->customerReferenceCode)) {
$customer->setCustomerReferenceCode($jsonObject->customerReferenceCode);
}

return $customer;
}

public function mapSubscriptionDeleteCustomer(SubscriptionDeleteCustomer $customer): SubscriptionDeleteCustomer {
return $this->mapSubscriptionDeleteCustomerFrom($customer, $this->jsonObject);
}
}


58 changes: 58 additions & 0 deletions src/Iyzipay/Model/Mapper/Subscription/SubscriptionListMapper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?php

namespace Iyzipay\Model\Mapper\Subscription;

use Iyzipay\Model\Mapper\IyzipayResourceMapper;
use Iyzipay\Model\Subscription\SubscriptionList;

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

public function mapSubscriptionListFrom(SubscriptionList $subscriptionList, object $jsonObject): \Iyzipay\Model\Subscription\SubscriptionList {
parent::mapResourceFrom($subscriptionList, $jsonObject);

if (isset($jsonObject->subscriptionReferenceCode)) {
$subscriptionList->setSubscriptionReferenceCode($jsonObject->subscriptionReferenceCode);
}

if (isset($jsonObject->subscriptionStatus)) {
$subscriptionList->setSubscriptionStatus($jsonObject->subscriptionStatus);
}

if (isset($jsonObject->page)) {
$subscriptionList->setPage($jsonObject->page);
}

if (isset($jsonObject->count)) {
$subscriptionList->setCount($jsonObject->count);
}

if (isset($jsonObject->customerReferenceCode)) {
$subscriptionList->setCustomerReferenceCode($jsonObject->customerReferenceCode);
}

if (isset($jsonObject->parentReferenceCode)) {
$subscriptionList->setParentReferenceCode($jsonObject->parentReferenceCode);
}

if (isset($jsonObject->startDate)) {
$subscriptionList->setStartDate($jsonObject->startDate);
}

if (isset($jsonObject->endDate)) {
$subscriptionList->setEndDate($jsonObject->endDate);
}

if (isset($jsonObject->pricingPlanReferenceCode)) {
$subscriptionList->setPricingPlanReferenceCode($jsonObject->pricingPlanReferenceCode);
}

return $subscriptionList;
}

public function mapSubscriptionList(SubscriptionList $subscriptionList): \Iyzipay\Model\Subscription\SubscriptionList {
return $this->mapSubscriptionListFrom($subscriptionList, $this->jsonObject);
}
}
2 changes: 2 additions & 0 deletions src/Iyzipay/Model/Status.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@ class Status
{
const SUCCESS = "success";
const FAILURE = "failure";
const ACTIVE = "ACTIVE";
const PASSIVE = "PASSIVE";
}
27 changes: 27 additions & 0 deletions src/Iyzipay/Model/Subscription/SubscriptionDeleteCustomer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace Iyzipay\Model\Subscription;

use Iyzipay\Options;
use Iyzipay\IyzipayResource;
use Iyzipay\RequestStringBuilder;
use Iyzipay\Model\Mapper\Subscription\SubscriptionDeleteCustomerMapper;
use Iyzipay\Request\Subscription\SubscriptionDeleteCustomerRequest;

class SubscriptionDeleteCustomer extends IyzipayResource {
private string $customerReferenceCode;

public static function delete(SubscriptionDeleteCustomerRequest $request, Options $options) {
$uri = $options->getBaseUrl() . '/v2/subscription/customers/delete/' . $request->getCustomerReferenceCode() . RequestStringBuilder::requestToStringQuery($request);;
$rawResult = parent::httpClient()->post($uri, parent::getHttpHeadersV2($uri, null, $options), null);
return SubscriptionDeleteCustomerMapper::create($rawResult)->jsonDecode()->mapSubscriptionDeleteCustomer(new SubscriptionDeleteCustomer());
}

public function getCustomerReferenceCode(): string {
return $this->customerReferenceCode;
}

public function setCustomerReferenceCode(string $customerReferenceCode): void {
$this->customerReferenceCode = $customerReferenceCode;
}
}
101 changes: 101 additions & 0 deletions src/Iyzipay/Model/Subscription/SubscriptionList.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<?php

namespace Iyzipay\Model\Subscription;

use Iyzipay\Options;
use Iyzipay\IyzipayResource;
use Iyzipay\RequestStringBuilder;
use Iyzipay\Model\Mapper\Subscription\SubscriptionListMapper;
use Iyzipay\Request\Subscription\SubscriptionListRequest;

class SubscriptionList extends IyzipayResource {
private string $subscriptionReferenceCode;
private string $subscriptionStatus;
private int $page;
private int $count;
private string $customerReferenceCode;
private string $parentReferenceCode;
private string $startDate;
private string $endDate;
private string $pricingPlanReferenceCode;

public static function create(SubscriptionListRequest $request, Options $options) {
$uri = $options->getBaseUrl() . '/v2/subscription/subscriptions' . RequestStringBuilder::requestToStringQuery($request, 'searchSubscription');
$rawResult = parent::httpClient()->getV2($uri, parent::getHttpHeadersV2($uri, null, $options));
return SubscriptionListMapper::create($rawResult)->jsonDecode()->mapSubscriptionList(new SubscriptionList());
}

public function getSubscriptionReferenceCode(): string {
return $this->subscriptionReferenceCode;
}

public function setSubscriptionReferenceCode(string $subscriptionReferenceCode): void {
$this->subscriptionReferenceCode = $subscriptionReferenceCode;
}

public function getSubscriptionStatus(): string {
return $this->subscriptionStatus;
}

public function setSubscriptionStatus(string $subscriptionStatus): void {
$this->subscriptionStatus = $subscriptionStatus;
}

public function getPage(): int {
return $this->page;
}

public function setPage(int $page): void {
$this->page = $page;
}

public function getCount(): int {
return $this->count;
}

public function setCount(int $count): void {
$this->count = $count;
}

//
public function getCustomerReferenceCode(): string {
return $this->customerReferenceCode;
}

public function setCustomerReferenceCode(string $customerReferenceCode): void {
$this->customerReferenceCode = $customerReferenceCode;
}

public function getParentReferenceCode(): string {
return $this->parentReferenceCode;
}

public function setParentReferenceCode(string $parentReferenceCode): void {
$this->parentReferenceCode = $parentReferenceCode;
}

public function getStartDate(): string {
return $this->startDate;
}

public function setStartDate(string $startDate): void {
$this->startDate = urlencode($startDate);
}

public function getEndDate(): string {
return $this->endDate;
}

public function setEndDate(string $endDate): void {
$this->endDate = urlencode($endDate);
}


public function getPricingPlanReferenceCode(): string {
return $this->pricingPlanReferenceCode;
}

public function setPricingPlanReferenceCode(string $pricingPlanReferenceCode): void {
$this->pricingPlanReferenceCode = $pricingPlanReferenceCode;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

namespace Iyzipay\Request\Subscription;

use Iyzipay\JsonBuilder;
use Iyzipay\Request;

class SubscriptionDeleteCustomerRequest extends Request {
private string $customerReferenceCode;

public function getCustomerReferenceCode(): string {
return $this->customerReferenceCode;
}

public function setCustomerReferenceCode(string $customerReferenceCode): void {
$this->customerReferenceCode = $customerReferenceCode;
}

public function getJsonObject(): array {
return JsonBuilder::fromJsonObject(parent::getJsonObject())
->add('customerReferenceCode', $this->getCustomerReferenceCode())
->getObject();
}
}
Loading
Loading