mirror of
https://github.com/we-promise/sure.git
synced 2026-04-08 14:54:49 +00:00
* 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
55 lines
1.5 KiB
Ruby
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
|