Packages

SDK for GameServer hooks development. Provides type specs, documentation, and IDE autocomplete for GameServer modules without requiring the full server.

Current section

Files

Jump to
game_server_sdk lib game_server payments.ex
Raw

lib/game_server/payments.ex

defmodule GameServer.Payments do
@moduledoc ~S"""
Payment catalog, purchase ledger, and entitlements.
Provider-specific integrations validate or create transactions, but this
context remains the source of truth for what a user owns inside the game.
**Note:** This is an SDK stub. Calling these functions will raise an error.
The actual implementation runs on the GameServer.
"""
@doc false
@spec admin_stats() :: map()
def admin_stats() do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
%{}
_ ->
raise "GameServer.Payments.admin_stats/0 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec cancel_stripe_subscription_at_period_end(GameServer.Accounts.User.t(), Ecto.UUID.t()) ::
{:ok,
%{
purchase: GameServer.Payments.Purchase.t(),
entitlement: GameServer.Payments.Entitlement.t(),
stripe_subscription: map()
}}
| {:error, term()}
def cancel_stripe_subscription_at_period_end(_user, _entitlement_id) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
nil
_ ->
raise "GameServer.Payments.cancel_stripe_subscription_at_period_end/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec count_entitlements(keyword()) :: non_neg_integer()
def count_entitlements(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
0
_ ->
raise "GameServer.Payments.count_entitlements/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec count_products(keyword()) :: non_neg_integer()
def count_products(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
0
_ ->
raise "GameServer.Payments.count_products/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec count_provider_events(keyword()) :: non_neg_integer()
def count_provider_events(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
0
_ ->
raise "GameServer.Payments.count_provider_events/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec count_provider_products(keyword()) :: non_neg_integer()
def count_provider_products(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
0
_ ->
raise "GameServer.Payments.count_provider_products/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec count_purchases(keyword()) :: non_neg_integer()
def count_purchases(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
0
_ ->
raise "GameServer.Payments.count_purchases/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec count_reconciliation_cursors(keyword()) :: non_neg_integer()
def count_reconciliation_cursors(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
0
_ ->
raise "GameServer.Payments.count_reconciliation_cursors/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec create_product(map()) :: {:ok, GameServer.Payments.Product.t()} | {:error, Ecto.Changeset.t()}
def create_product(_attrs) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.create_product/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec create_provider_product(map()) ::
{:ok, GameServer.Payments.ProviderProduct.t()} | {:error, Ecto.Changeset.t()}
def create_provider_product(_attrs) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.create_provider_product/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec create_purchase(GameServer.Accounts.User.t(), GameServer.Payments.ProviderProduct.t(), map()) ::
{:ok, GameServer.Payments.Purchase.t()} | {:error, Ecto.Changeset.t()}
def create_purchase(_user, _provider_product, _attrs) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.create_purchase/3 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec create_steam_checkout(GameServer.Accounts.User.t(), map()) ::
{:ok,
%{
purchase: GameServer.Payments.Purchase.t(),
provider_transaction_id: String.t() | nil,
steam_url: String.t() | nil
}}
| {:error, term()}
def create_steam_checkout(_user, _attrs) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.create_steam_checkout/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec create_stripe_checkout(GameServer.Accounts.User.t(), map()) ::
{:ok,
%{
purchase: GameServer.Payments.Purchase.t(),
checkout_url: String.t(),
provider_session_id: String.t()
}}
| {:error, term()}
def create_stripe_checkout(_user, _attrs) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.create_stripe_checkout/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec finalize_steam_purchase(GameServer.Accounts.User.t(), map()) ::
{:ok, %{purchase: GameServer.Payments.Purchase.t()}} | {:error, term()}
def finalize_steam_purchase(_user, _attrs) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.finalize_steam_purchase/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec fulfill_purchase(GameServer.Payments.Purchase.t(), map()) ::
{:ok, GameServer.Payments.Purchase.t()} | {:error, term()}
def fulfill_purchase(_purchase, _provider_payload) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.fulfill_purchase/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec get_product(Ecto.UUID.t()) :: GameServer.Payments.Product.t() | nil
def get_product(_id) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
if :erlang.phash2(make_ref(), 2) == 0, do: nil, else: %GameServer.Payments.Product{id: "", sku: "", title: "", description: "", kind: "entitlement", active: true, grant_config: %{}, metadata: %{}, inserted_at: ~U[1970-01-01 00:00:00Z], updated_at: ~U[1970-01-01 00:00:00Z]}
_ ->
raise "GameServer.Payments.get_product/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec get_product_by_sku(String.t()) :: GameServer.Payments.Product.t() | nil
def get_product_by_sku(_sku) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
if :erlang.phash2(make_ref(), 2) == 0, do: nil, else: %GameServer.Payments.Product{id: "", sku: "", title: "", description: "", kind: "entitlement", active: true, grant_config: %{}, metadata: %{}, inserted_at: ~U[1970-01-01 00:00:00Z], updated_at: ~U[1970-01-01 00:00:00Z]}
_ ->
raise "GameServer.Payments.get_product_by_sku/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec get_provider_product(Ecto.UUID.t()) :: GameServer.Payments.ProviderProduct.t() | nil
def get_provider_product(_id) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
nil
_ ->
raise "GameServer.Payments.get_provider_product/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec get_provider_product(String.t(), String.t()) :: GameServer.Payments.ProviderProduct.t() | nil
def get_provider_product(_provider, _external_id) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
nil
_ ->
raise "GameServer.Payments.get_provider_product/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec get_purchase(Ecto.UUID.t()) :: GameServer.Payments.Purchase.t() | nil
def get_purchase(_id) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
nil
_ ->
raise "GameServer.Payments.get_purchase/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec get_purchase_by_order_id(String.t()) :: GameServer.Payments.Purchase.t() | nil
def get_purchase_by_order_id(_order_id) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
nil
_ ->
raise "GameServer.Payments.get_purchase_by_order_id/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec get_purchase_by_provider_original_transaction(String.t(), String.t()) ::
GameServer.Payments.Purchase.t() | nil
def get_purchase_by_provider_original_transaction(_provider, _transaction_id) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
nil
_ ->
raise "GameServer.Payments.get_purchase_by_provider_original_transaction/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec get_purchase_by_provider_transaction(String.t(), String.t()) ::
GameServer.Payments.Purchase.t() | nil
def get_purchase_by_provider_transaction(_provider, _transaction_id) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
nil
_ ->
raise "GameServer.Payments.get_purchase_by_provider_transaction/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec handle_apple_webhook(binary()) :: {:ok, atom()} | {:error, term()}
def handle_apple_webhook(_raw_body) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.handle_apple_webhook/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec handle_google_webhook(binary(), binary() | nil) :: {:ok, atom()} | {:error, term()}
def handle_google_webhook(_raw_body, _authorization_header) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.handle_google_webhook/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec handle_stripe_webhook(binary(), binary() | nil) :: {:ok, atom()} | {:error, term()}
def handle_stripe_webhook(_raw_body, _signature) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.handle_stripe_webhook/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec has_entitlement?(Ecto.UUID.t(), String.t()) :: boolean()
def has_entitlement?(_user_id, _key) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
:erlang.phash2(make_ref(), 2) == 0
_ ->
raise "GameServer.Payments.has_entitlement?/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec list_admin_entitlements(keyword()) :: [GameServer.Payments.Entitlement.t()]
def list_admin_entitlements(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
[]
_ ->
raise "GameServer.Payments.list_admin_entitlements/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec list_admin_products(keyword()) :: [GameServer.Payments.Product.t()]
def list_admin_products(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
[]
_ ->
raise "GameServer.Payments.list_admin_products/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec list_admin_provider_products(keyword()) :: [GameServer.Payments.ProviderProduct.t()]
def list_admin_provider_products(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
[]
_ ->
raise "GameServer.Payments.list_admin_provider_products/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec list_admin_purchases(keyword()) :: [GameServer.Payments.Purchase.t()]
def list_admin_purchases(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
[]
_ ->
raise "GameServer.Payments.list_admin_purchases/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec list_catalog(String.t() | nil) :: [GameServer.Payments.ProviderProduct.t()]
def list_catalog(_provider) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
[]
_ ->
raise "GameServer.Payments.list_catalog/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec list_products(keyword()) :: [GameServer.Payments.Product.t()]
def list_products(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
[]
_ ->
raise "GameServer.Payments.list_products/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec list_provider_events(keyword()) :: [GameServer.Payments.ProviderEvent.t()]
def list_provider_events(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
[]
_ ->
raise "GameServer.Payments.list_provider_events/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec list_reconciliation_cursors(keyword()) :: [GameServer.Payments.ReconciliationCursor.t()]
def list_reconciliation_cursors(_opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
[]
_ ->
raise "GameServer.Payments.list_reconciliation_cursors/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec list_user_entitlements(
Ecto.UUID.t(),
keyword()
) :: [GameServer.Payments.Entitlement.t()]
def list_user_entitlements(_user_id, _opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
[]
_ ->
raise "GameServer.Payments.list_user_entitlements/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec list_user_purchases(
Ecto.UUID.t(),
keyword()
) :: [GameServer.Payments.Purchase.t()]
def list_user_purchases(_user_id, _opts) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
[]
_ ->
raise "GameServer.Payments.list_user_purchases/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec product_entitlement_key(GameServer.Payments.Product.t()) :: String.t()
def product_entitlement_key(_product) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
""
_ ->
raise "GameServer.Payments.product_entitlement_key/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec provider_adapter_statuses() :: [map()]
def provider_adapter_statuses() do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
%{}
_ ->
raise "GameServer.Payments.provider_adapter_statuses/0 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec reconcile_stripe_purchase(GameServer.Payments.Purchase.t()) ::
{:ok, %{purchase: GameServer.Payments.Purchase.t(), result: atom(), stripe_session: map()}}
| {:error, term()}
def reconcile_stripe_purchase(_purchase) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
nil
_ ->
raise "GameServer.Payments.reconcile_stripe_purchase/1 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec record_provider_event(String.t(), String.t(), String.t(), map(), map()) ::
{:ok, GameServer.Payments.ProviderEvent.t(), boolean()} | {:error, Ecto.Changeset.t()}
def record_provider_event(_provider, _event_id, _event_type, _payload, _metadata) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.record_provider_event/5 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec revoke_purchase(GameServer.Payments.Purchase.t(), map()) ::
{:ok, GameServer.Payments.Purchase.t()} | {:error, term()}
def revoke_purchase(_purchase, _attrs) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.revoke_purchase/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec stripe_config_status() :: map()
def stripe_config_status() do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
%{}
_ ->
raise "GameServer.Payments.stripe_config_status/0 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec update_product(GameServer.Payments.Product.t(), map()) ::
{:ok, GameServer.Payments.Product.t()} | {:error, Ecto.Changeset.t()}
def update_product(_product, _attrs) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.update_product/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec update_provider_product(GameServer.Payments.ProviderProduct.t(), map()) ::
{:ok, GameServer.Payments.ProviderProduct.t()} | {:error, Ecto.Changeset.t()}
def update_provider_product(_provider_product, _attrs) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.update_provider_product/2 is a stub - only available at runtime on GameServer"
end
end
@doc false
@spec validate_store_purchase(GameServer.Accounts.User.t(), String.t(), map()) ::
{:ok, %{purchase: GameServer.Payments.Purchase.t(), seen_before: boolean()}} | {:error, term()}
def validate_store_purchase(_user, _provider, _attrs) do
case Application.get_env(:game_server_sdk, :stub_mode, :raise) do
:placeholder ->
{:ok, nil}
_ ->
raise "GameServer.Payments.validate_store_purchase/3 is a stub - only available at runtime on GameServer"
end
end
end