request('GET', 'v1/payment-methods'))) ->setBillable($this); } /** * Check if current user has at least one payment method. * * @see \Anikeen\Id\Resources\PaymentMethods::hasPaymentMethod() * @throws RequestRequiresClientIdException * @throws GuzzleException */ public function hasPaymentMethod(): ?PaymentMethod { return $this->paymentMethods()->hasPaymentMethod(); } /** * Get default payment method from the current user. * * @see \Anikeen\Id\Resources\PaymentMethods::defaultPaymentMethod() * @throws RequestRequiresClientIdException * @throws GuzzleException */ public function defaultPaymentMethod(): ?PaymentMethod { return $this->paymentMethods()->defaultPaymentMethod(); } /** * Check if the current user has a default payment method. * * @see \Anikeen\Id\Resources\PaymentMethods::hasDefaultPaymentMethod() * @throws RequestRequiresClientIdException * @throws GuzzleException */ public function hasDefaultPaymentMethod(): bool { return $this->paymentMethods()->hasDefaultPaymentMethod(); } /** * Get billing portal URL for the current user. * * @param string|null $returnUrl The URL to redirect to after the user has finished in the billing portal. * @param array $options Additional options for the billing portal. * @throws RequestRequiresClientIdException * @throws GuzzleException */ public function billingPortalUrl(?string $returnUrl = null, array $options = []): string { return $this->request('POST', 'v1/billing/portal', [ 'return_url' => $returnUrl, 'options' => $options, ])->data->url; } /** * Create a new setup intent. * * @param array $options Additional options for the setup intent. * @throws RequestRequiresClientIdException * @throws GuzzleException */ public function createSetupIntent(array $options = []): Result { return $this->request('POST', 'v1/payment-methods', [ 'options' => $options, ]); } }