Files
sure/app/models/provider/plaid_sandbox.rb
soky srm e8f935bc6f Remove plaid initialiser (#317)
* Remove plaid initialiser

The initializer can be safely removed because:
  - Config is lazily loaded via Provider::Registry
  - reload_configuration is called after settings updates
  - All calling code handles nil configs gracefully
  - Initial nil state is fine - config loads on first use

* Fix for missing config

* Actually don't pollute application.rb

* Add currency loading for balances

* Fix race condition on lazy load

* Allow loans to be imported in lunch flow also

* Fix currency processor
2025-11-12 16:01:19 +01:00

55 lines
1.5 KiB
Ruby

class Provider::PlaidSandbox < Provider::Plaid
attr_reader :client
def initialize
@client = create_client
@region = :us
end
def create_public_token(username: nil)
client.sandbox_public_token_create(
Plaid::SandboxPublicTokenCreateRequest.new(
institution_id: "ins_109508", # "First Platypus Bank" (Plaid's sandbox institution that works with all products)
initial_products: [ "transactions", "investments", "liabilities" ],
options: {
override_username: username || "custom_test"
}
)
).public_token
end
def fire_webhook(item, type: "TRANSACTIONS", code: "SYNC_UPDATES_AVAILABLE")
client.sandbox_item_fire_webhook(
Plaid::SandboxItemFireWebhookRequest.new(
access_token: item.access_token,
webhook_type: type,
webhook_code: code,
)
)
end
def reset_login(item)
client.sandbox_item_reset_login(
Plaid::SandboxItemResetLoginRequest.new(
access_token: item.access_token
)
)
end
private
def create_client
raise "Plaid sandbox is not supported in production" if Rails.env.production?
Provider::PlaidAdapter.ensure_configuration_loaded
api_client = Plaid::ApiClient.new(
Rails.application.config.plaid
)
# Force sandbox environment for PlaidSandbox regardless of Rails config
api_client.config.server_index = Plaid::Configuration::Environment["sandbox"]
Plaid::PlaidApi.new(api_client)
end
end