-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(router): add support for cost based debit routing #7542
base: debit-routing/db-interface
Are you sure you want to change the base?
feat(router): add support for cost based debit routing #7542
Conversation
…it-routing/db-interface
Changed Files
|
config/development.toml
Outdated
[debit_routing_config] | ||
fraud_check_fee = "0.01" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it possible to have these values as numbers in the config? With strings, there's a chance of a non-numeric value sneaking in somewhere.
[debit_routing_config] | |
fraud_check_fee = "0.01" | |
[debit_routing_config] | |
fraud_check_fee = 0.01 |
pub struct NoneRegulatedNetworkProcessingData { | ||
pub merchant_category_code_0001: HashMap<enums::CardNetwork, NetworkProcessingData>, | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How many category codes can there be? If it's more than 20, we should consider making this a HashMap instead.
.change_context(errors::ApiErrorResponse::InternalServerError) | ||
.attach_printable("Failed to convert fixed amount to f64 in interchange fee calculation")?; | ||
|
||
let mut total_interchange_fee = (amount * percentage / 100.0) + fixed_amount; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Better to use .checked_mul()
and .checked_div()
to account for edge cases.
…spay/hyperswitch into debit-routing/app-cost-config
Type of Change
Description
This pull request introduces a new configuration for debit routing, including fees for fraud checks, network processing, and interchange. It also adds methods to calculate these fees and integrates them into the existing system.
For every payment that occurs, there are three fees associated with the network:
Network Fee
Every network has its own network fee structure, which typically includes both a percentage (% of the amount) and a fixed fee. For each payment, the respective network will charge a specific percentage and a fixed amount.
Interchange Fee
If the bank is a regulated bank, it can charge only a specified percentage and fixed amount for the transaction. If the bank is not a regulated bank, then, similar to the network fee, the bank can charge different amounts depending on the network.
Fraud Check Fee
When a bank is regulated under an exemption for fraud checks, it may charge an additional fee only if a fraud check is conducted.
When a payment is being performed all this factors should be taken in consideration and a network should be chosen according to merchant's configuration
Additional Changes
Motivation and Context
How did you test it?
Checklist
cargo +nightly fmt --all
cargo clippy