214 lines
7.0 KiB
PHP
Executable File

<?php
namespace Stripe;
/**
* Class Invoice
*
* @property string $id
* @property string $object
* @property string|null $account_country
* @property string|null $account_name
* @property int $amount_due
* @property int $amount_paid
* @property int $amount_remaining
* @property int|null $application_fee_amount
* @property int $attempt_count
* @property bool $attempted
* @property bool $auto_advance
* @property string|null $billing_reason
* @property string|null $charge
* @property string|null $collection_method
* @property int $created
* @property string $currency
* @property array|null $custom_fields
* @property string $customer
* @property mixed|null $customer_address
* @property string|null $customer_email
* @property string|null $customer_name
* @property string|null $customer_phone
* @property mixed|null $customer_shipping
* @property string|null $customer_tax_exempt
* @property array|null $customer_tax_ids
* @property string|null $default_payment_method
* @property string|null $default_source
* @property array|null $default_tax_rates
* @property string|null $description
* @property \Stripe\Discount|null $discount
* @property int|null $due_date
* @property int|null $ending_balance
* @property string|null $footer
* @property string|null $hosted_invoice_url
* @property string|null $invoice_pdf
* @property \Stripe\Collection $lines
* @property bool $livemode
* @property \Stripe\StripeObject|null $metadata
* @property int|null $next_payment_attempt
* @property string|null $number
* @property bool $paid
* @property string|null $payment_intent
* @property int $period_end
* @property int $period_start
* @property int $post_payment_credit_notes_amount
* @property int $pre_payment_credit_notes_amount
* @property string|null $receipt_number
* @property int $starting_balance
* @property string|null $statement_descriptor
* @property string|null $status
* @property mixed $status_transitions
* @property string|null $subscription
* @property int $subscription_proration_date
* @property int $subtotal
* @property int|null $tax
* @property mixed $threshold_reason
* @property int $total
* @property array|null $total_tax_amounts
* @property int|null $webhooks_delivered_at
*
* @package Stripe
*/
class Invoice extends ApiResource
{
const OBJECT_NAME = 'invoice';
use ApiOperations\All;
use ApiOperations\Create;
use ApiOperations\Delete;
use ApiOperations\Retrieve;
use ApiOperations\Update;
/**
* Possible string representations of the billing reason.
* @link https://stripe.com/docs/api/invoices/object#invoice_object-billing_reason
*/
const BILLING_REASON_MANUAL = 'manual';
const BILLING_REASON_SUBSCRIPTION = 'subscription';
const BILLING_REASON_SUBSCRIPTION_CREATE = 'subscription_create';
const BILLING_REASON_SUBSCRIPTION_CYCLE = 'subscription_cycle';
const BILLING_REASON_SUBSCRIPTION_THRESHOLD = 'subscription_threshold';
const BILLING_REASON_SUBSCRIPTION_UPDATE = 'subscription_update';
const BILLING_REASON_UPCOMING = 'upcoming';
/**
* Possible string representations of the `collection_method` property.
* @link https://stripe.com/docs/api/invoices/object#invoice_object-collection_method
*/
const COLLECTION_METHOD_CHARGE_AUTOMATICALLY = 'charge_automatically';
const COLLECTION_METHOD_SEND_INVOICE = 'send_invoice';
/**
* Possible string representations of the invoice status.
* @link https://stripe.com/docs/api/invoices/object#invoice_object-status
*/
const STATUS_DRAFT = 'draft';
const STATUS_OPEN = 'open';
const STATUS_PAID = 'paid';
const STATUS_UNCOLLECTIBLE = 'uncollectible';
const STATUS_VOID = 'void';
/**
* Possible string representations of the `billing` property.
* @deprecated Use `collection_method` instead.
* @link https://stripe.com/docs/api/invoices/object#invoice_object-billing
*/
const BILLING_CHARGE_AUTOMATICALLY = 'charge_automatically';
const BILLING_SEND_INVOICE = 'send_invoice';
/**
* @param array|null $params
* @param array|string|null $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return Invoice The finalized invoice.
*/
public function finalizeInvoice($params = null, $opts = null)
{
$url = $this->instanceUrl() . '/finalize';
list($response, $opts) = $this->_request('post', $url, $params, $opts);
$this->refreshFrom($response, $opts);
return $this;
}
/**
* @param array|null $params
* @param array|string|null $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return Invoice The uncollectible invoice.
*/
public function markUncollectible($params = null, $opts = null)
{
$url = $this->instanceUrl() . '/mark_uncollectible';
list($response, $opts) = $this->_request('post', $url, $params, $opts);
$this->refreshFrom($response, $opts);
return $this;
}
/**
* @param array|null $params
* @param array|string|null $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return Invoice The paid invoice.
*/
public function pay($params = null, $opts = null)
{
$url = $this->instanceUrl() . '/pay';
list($response, $opts) = $this->_request('post', $url, $params, $opts);
$this->refreshFrom($response, $opts);
return $this;
}
/**
* @param array|null $params
* @param array|string|null $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return Invoice The sent invoice.
*/
public function sendInvoice($params = null, $opts = null)
{
$url = $this->instanceUrl() . '/send';
list($response, $opts) = $this->_request('post', $url, $params, $opts);
$this->refreshFrom($response, $opts);
return $this;
}
/**
* @param array|null $params
* @param array|string|null $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return Invoice The upcoming invoice.
*/
public static function upcoming($params = null, $opts = null)
{
$url = static::classUrl() . '/upcoming';
list($response, $opts) = static::_staticRequest('get', $url, $params, $opts);
$obj = Util\Util::convertToStripeObject($response->json, $opts);
$obj->setLastResponse($response);
return $obj;
}
/**
* @param array|null $params
* @param array|string|null $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return Invoice The voided invoice.
*/
public function voidInvoice($params = null, $opts = null)
{
$url = $this->instanceUrl() . '/void';
list($response, $opts) = $this->_request('post', $url, $params, $opts);
$this->refreshFrom($response, $opts);
return $this;
}
}