Packages
stripity_stripe
2.2.3
3.3.2
3.3.1
3.2.0
3.1.1
3.1.0
3.0.0
2.17.3
2.17.2
2.17.1
2.17.0
2.16.0
2.15.1
2.15.0
2.14.1
2.14.0
2.13.0
2.12.1
2.12.0
2.11.0
2.10.0
2.9.0
2.8.0
2.7.2
2.7.1
2.7.0
2.6.0
2.5.0
2.4.0
2.3.0
2.2.3
2.2.2
2.2.1
2.2.0
2.1.0
2.0.1
2.0.0
2.0.0-alpha.11
2.0.0-alpha.10
2.0.0-alpha.9
2.0.0-alpha.8
2.0.0-alpha.7
2.0.0-alpha.6
2.0.0-alpha.5
2.0.0-alpha.4
2.0.0-alpha.3
2.0.0-alpha.2
2.0.0-alpha.1
1.6.2
1.6.1
1.6.0
1.4.0
1.3.0
1.2.0
1.1.0
0.5.0
0.4.0
0.3.0
0.2.0
A Stripe client for Elixir.
Current section
Files
Jump to
Current section
Files
lib/stripe/checkout/session.ex
defmodule Stripe.Session do
@moduledoc """
Work with Stripe Checkout Session objects.
You can:
- Create a new session
Stripe API reference: https://stripe.com/docs/api/checkout/sessions
"""
use Stripe.Entity
import Stripe.Request
@type line_item :: %{
:amount => integer(),
:currency => String.t(),
:name => String.t(),
:quantity => integer(),
optional(:description) => String.t(),
optional(:images) => list(String.t())
}
@type capture_method :: :automatic | :manual
@type transfer_data :: %{
:destination => String.t()
}
@type payment_intent_data :: %{
optional(:application_fee_amount) => integer(),
optional(:capture_method) => capture_method,
optional(:description) => String.t(),
optional(:metadata) => Stripe.Types.metadata(),
optional(:on_behalf_of) => String.t(),
optional(:receipt_email) => String.t(),
optional(:shipping) => Stripe.Types.shipping(),
optional(:statement_descriptor) => String.t(),
optional(:transfer_data) => transfer_data
}
@type item :: %{
:plan => String.t(),
optional(:quantity) => integer()
}
@type subscription_data :: %{
:items => list(item),
:metadata => Stripe.Types.metadata(),
:trial_end => integer(),
:trial_period_days => integer()
}
@type create_params :: %{
:cancel_url => String.t(),
:payment_method_types => list(String.t()),
:success_url => String.t(),
optional(:client_reference_id) => String.t(),
optional(:customer_email) => String.t(),
optional(:line_items) => list(line_item),
optional(:locale) => String.t(),
optional(:payment_intent_data) => payment_intent_data,
optional(:subscription_data) => subscription_data
}
@type t :: %__MODULE__{
:id => Stripe.id(),
:object => String.t(),
:livemode => boolean()
}
defstruct [
:id,
:object,
:livemode
]
@plural_endpoint "checkout/sessions"
@spec create(create_params, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
def create(params, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint)
|> put_params(params)
|> put_method(:post)
|> make_request()
end
end