%PDF- %PDF-
Direktori : /home/forge/api-takeaseat.eco-n-tech.co.uk/vendor/laravel/cashier/src/ |
Current File : //home/forge/api-takeaseat.eco-n-tech.co.uk/vendor/laravel/cashier/src/Payment.php |
<?php namespace Laravel\Cashier; use Illuminate\Contracts\Support\Arrayable; use Illuminate\Contracts\Support\Jsonable; use JsonSerializable; use Laravel\Cashier\Exceptions\PaymentActionRequired; use Laravel\Cashier\Exceptions\PaymentFailure; use Stripe\PaymentIntent as StripePaymentIntent; class Payment implements Arrayable, Jsonable, JsonSerializable { /** * The Stripe PaymentIntent instance. * * @var \Stripe\PaymentIntent */ protected $paymentIntent; /** * Create a new Payment instance. * * @param \Stripe\PaymentIntent $paymentIntent * @return void */ public function __construct(StripePaymentIntent $paymentIntent) { $this->paymentIntent = $paymentIntent; } /** * Get the total amount that will be paid. * * @return string */ public function amount() { return Cashier::formatAmount($this->rawAmount(), $this->paymentIntent->currency); } /** * Get the raw total amount that will be paid. * * @return int */ public function rawAmount() { return $this->paymentIntent->amount; } /** * The Stripe PaymentIntent client secret. * * @return string */ public function clientSecret() { return $this->paymentIntent->client_secret; } /** * Capture a payment that is being held for the customer. * * @param array $options * @return \Stripe\PaymentIntent */ public function capture(array $options = []) { return $this->paymentIntent->capture($options, Cashier::stripeOptions()); } /** * Determine if the payment needs a valid payment method. * * @return bool */ public function requiresPaymentMethod() { return $this->paymentIntent->status === StripePaymentIntent::STATUS_REQUIRES_PAYMENT_METHOD; } /** * Determine if the payment needs an extra action like 3D Secure. * * @return bool */ public function requiresAction() { return $this->paymentIntent->status === StripePaymentIntent::STATUS_REQUIRES_ACTION; } /** * Determine if the payment needs to be confirmed. * * @return bool */ public function requiresConfirmation() { return $this->paymentIntent->status === StripePaymentIntent::STATUS_REQUIRES_CONFIRMATION; } /** * Determine if the payment needs to be captured. * * @return bool */ public function requiresCapture() { return $this->paymentIntent->status === StripePaymentIntent::STATUS_REQUIRES_CAPTURE; } /** * Determine if the payment was cancelled. * * @return bool */ public function isCancelled() { return $this->paymentIntent->status === StripePaymentIntent::STATUS_CANCELED; } /** * Determine if the payment was successful. * * @return bool */ public function isSucceeded() { return $this->paymentIntent->status === StripePaymentIntent::STATUS_SUCCEEDED; } /** * Determine if the payment is processing. * * @return bool */ public function isProcessing() { return $this->paymentIntent->status === StripePaymentIntent::STATUS_PROCESSING; } /** * Validate if the payment intent was successful and throw an exception if not. * * @return void * * @throws \Laravel\Cashier\Exceptions\PaymentActionRequired * @throws \Laravel\Cashier\Exceptions\PaymentFailure */ public function validate() { if ($this->requiresPaymentMethod()) { throw PaymentFailure::invalidPaymentMethod($this); } elseif ($this->requiresAction()) { throw PaymentActionRequired::incomplete($this); } } /** * The Stripe PaymentIntent instance. * * @return \Stripe\PaymentIntent */ public function asStripePaymentIntent() { return $this->paymentIntent; } /** * Get the instance as an array. * * @return array */ public function toArray() { return $this->asStripePaymentIntent()->toArray(); } /** * Convert the object to its JSON representation. * * @param int $options * @return string */ public function toJson($options = 0) { return json_encode($this->jsonSerialize(), $options); } /** * Convert the object into something JSON serializable. * * @return array */ public function jsonSerialize() { return $this->toArray(); } /** * Dynamically get values from the Stripe PaymentIntent. * * @param string $key * @return mixed */ public function __get($key) { return $this->paymentIntent->{$key}; } }