-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Labels
A-connector-integrationArea: Connector integrationArea: Connector integrationE-easyEffort: Should be easy to implement and would make a good first PREffort: Should be easy to implement and would make a good first PRRustPull requests that update Rust codePull requests that update Rust codeS-unassignedStatus: This issue has no one assigned to address itStatus: This issue has no one assigned to address it
Description
Feature Description/Summary
Integrity check is a scenario where there is a discrepancy between the amount sent in the request and the amount received from the connector, which is checked during response handling.
Context
Integrity checks in a payments flow are critical for ensuring data consistency, correctness, and security when dealing with amounts between Hyperswitch and connectors like Adyen, Stripe, Razorpay, etc.
Starter Tasks
- In the
handle_response
function of Authorize/PSync/Refund/RSync, you will have to call the respective functions -get_authorise_integrity_object
for Authorize,get_sync_integrity_object
for Payments Sync,get_refund_integrity_object
for Refund and RSync andget_capture_integrity_object
for Capture. - You would have to call these functions from
crates/hyperswitch_connectors/src/utils.rs
. - These functions expect
amount_convertor
,amount
andcurrency
. - You can take a look at this PR for reference.
Implementation Hints
- You can go to
crates/hyperswitch_connectors/src/connectors/redsys.rs
and call the respective integrity check function as stated above in thehandle_response
function
Acceptance Criteria
- Request and Response body added for each of the flows where integrity check is applied.
- All the required GitHub checks passing
- Formatted the code using
cargo +nightly fmt --all
How to Test it
- Hardcode the amount or currency field that is being passed to the connector different from the one you are passing in the request body
- This way you would be able to reproduce the integrity checks error message while testing.
Mentor Contact
- Tag @bsayak03 [Sayak Bhattacharya] in the comments if you have any doubts/queries
Resources
Here are a few sample PRs :
- feat(connector): [FISERV] Added Integrity Check support for all Payment & Refund Flows #8075
- feat(connector): [XENDIT] Added Integrity Check for Authorize, Capture, Refund & RSync flows #8049
Pre-Flight
Have you spent some time checking if this feature request has been raised before?
- I checked and didn't find a similar issue
Have you read the Contributing Guidelines?
- I have read the Contributing Guidelines
Submission Process:
- Ask the maintainers for assignment of the issue, you can request for assignment by commenting on the issue itself.
- Once assigned, submit a pull request (PR).
- Maintainers will review and provide feedback, if any.
- Maintainers can unassign issues due to inactivity, read more here.
Refer here for Terms and conditions for the contest.
Metadata
Metadata
Assignees
Labels
A-connector-integrationArea: Connector integrationArea: Connector integrationE-easyEffort: Should be easy to implement and would make a good first PREffort: Should be easy to implement and would make a good first PRRustPull requests that update Rust codePull requests that update Rust codeS-unassignedStatus: This issue has no one assigned to address itStatus: This issue has no one assigned to address it