All checks were successful
Build, Push and Deploy / build-and-push (push) Successful in 3m3s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 16s
Build, Push and Deploy / deploy-staging (push) Successful in 32s
Build, Push and Deploy / deploy-production (push) Has been skipped
Build, Push and Deploy / cleanup (push) Successful in 1s
237 lines
4.8 KiB
PHP
237 lines
4.8 KiB
PHP
<?php
|
|
|
|
namespace Mollie\Api\Resources;
|
|
|
|
use Mollie\Api\MollieApiClient;
|
|
use Mollie\Api\Types\SubscriptionStatus;
|
|
|
|
class Subscription extends BaseResource
|
|
{
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $id;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $customerId;
|
|
|
|
/**
|
|
* Either "live" or "test" depending on the customer's mode.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $mode;
|
|
|
|
/**
|
|
* UTC datetime the subscription created in ISO-8601 format.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $createdAt;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $status;
|
|
|
|
/**
|
|
* @var \stdClass
|
|
*/
|
|
public $amount;
|
|
|
|
/**
|
|
* @var int|null
|
|
*/
|
|
public $times;
|
|
|
|
/**
|
|
* @var int|null
|
|
*/
|
|
public $timesRemaining;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $interval;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $description;
|
|
|
|
/**
|
|
* @var string|null
|
|
*/
|
|
public $method;
|
|
|
|
/**
|
|
* @var string|null
|
|
*/
|
|
public $mandateId;
|
|
|
|
/**
|
|
* @var \stdClass|null
|
|
*/
|
|
public $metadata;
|
|
|
|
/**
|
|
* UTC datetime the subscription canceled in ISO-8601 format.
|
|
*
|
|
* @var string|null
|
|
*/
|
|
public $canceledAt;
|
|
|
|
/**
|
|
* Date the subscription started. For example: 2018-04-24
|
|
*
|
|
* @var string|null
|
|
*/
|
|
public $startDate;
|
|
|
|
/**
|
|
* Contains an optional 'webhookUrl'.
|
|
*
|
|
* @var \stdClass|null
|
|
*/
|
|
public $webhookUrl;
|
|
|
|
/**
|
|
* Date the next subscription payment will take place. For example: 2018-04-24
|
|
*
|
|
* @var string|null
|
|
*/
|
|
public $nextPaymentDate;
|
|
|
|
/**
|
|
* @var \stdClass
|
|
*/
|
|
public $_links;
|
|
|
|
/**
|
|
* @return Subscription
|
|
* @throws \Mollie\Api\Exceptions\ApiException
|
|
*/
|
|
public function update()
|
|
{
|
|
$body = [
|
|
"amount" => $this->amount,
|
|
"times" => $this->times,
|
|
"startDate" => $this->startDate,
|
|
"webhookUrl" => $this->webhookUrl,
|
|
"description" => $this->description,
|
|
"mandateId" => $this->mandateId,
|
|
"metadata" => $this->metadata,
|
|
"interval" => $this->interval,
|
|
];
|
|
|
|
$result = $this->client->subscriptions->update($this->customerId, $this->id, $body);
|
|
|
|
return ResourceFactory::createFromApiResult($result, new Subscription($this->client));
|
|
}
|
|
|
|
/**
|
|
* Returns whether the Subscription is active or not.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isActive()
|
|
{
|
|
return $this->status === SubscriptionStatus::STATUS_ACTIVE;
|
|
}
|
|
|
|
/**
|
|
* Returns whether the Subscription is pending or not.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isPending()
|
|
{
|
|
return $this->status === SubscriptionStatus::STATUS_PENDING;
|
|
}
|
|
|
|
/**
|
|
* Returns whether the Subscription is canceled or not.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isCanceled()
|
|
{
|
|
return $this->status === SubscriptionStatus::STATUS_CANCELED;
|
|
}
|
|
|
|
/**
|
|
* Returns whether the Subscription is suspended or not.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isSuspended()
|
|
{
|
|
return $this->status === SubscriptionStatus::STATUS_SUSPENDED;
|
|
}
|
|
|
|
/**
|
|
* Returns whether the Subscription is completed or not.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isCompleted()
|
|
{
|
|
return $this->status === SubscriptionStatus::STATUS_COMPLETED;
|
|
}
|
|
|
|
/**
|
|
* Cancels this subscription
|
|
*
|
|
* @return Subscription
|
|
* @throws \Mollie\Api\Exceptions\ApiException
|
|
*/
|
|
public function cancel()
|
|
{
|
|
if (! isset($this->_links->self->href)) {
|
|
return $this;
|
|
}
|
|
|
|
$body = null;
|
|
if ($this->client->usesOAuth()) {
|
|
$body = json_encode([
|
|
"testmode" => $this->mode === "test" ? true : false,
|
|
]);
|
|
}
|
|
|
|
$result = $this->client->performHttpCallToFullUrl(
|
|
MollieApiClient::HTTP_DELETE,
|
|
$this->_links->self->href,
|
|
$body
|
|
);
|
|
|
|
return ResourceFactory::createFromApiResult($result, new Subscription($this->client));
|
|
}
|
|
|
|
/**
|
|
* Get subscription payments
|
|
*
|
|
* @return \Mollie\Api\Resources\PaymentCollection
|
|
* @throws \Mollie\Api\Exceptions\ApiException
|
|
*/
|
|
public function payments()
|
|
{
|
|
if (! isset($this->_links->payments->href)) {
|
|
return new PaymentCollection($this->client, 0, null);
|
|
}
|
|
|
|
$result = $this->client->performHttpCallToFullUrl(
|
|
MollieApiClient::HTTP_GET,
|
|
$this->_links->payments->href
|
|
);
|
|
|
|
return ResourceFactory::createCursorResourceCollection(
|
|
$this->client,
|
|
$result->_embedded->payments,
|
|
Payment::class,
|
|
$result->_links
|
|
);
|
|
}
|
|
}
|