hyperswitch icon indicating copy to clipboard operation
hyperswitch copied to clipboard

[FEATURE] : [BITPAY] Add Integrity Check Support for Authorize, PSync, Refund and RSync Flows

Open bsayak03 opened this issue 3 months ago • 5 comments

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 and get_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 and currency.
  • You can take a look at this PR for reference.

Implementation Hints

  • You can go to crates/hyperswitch_connectors/src/connectors/bitpay.rs and call the respective integrity check function as stated above in the handle_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 :

  • https://github.com/juspay/hyperswitch/pull/8075
  • https://github.com/juspay/hyperswitch/pull/8049

Pre-Flight

Have you spent some time checking if this feature request has been raised before?

  • [x] I checked and didn't find a similar issue

Have you 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.

bsayak03 avatar Sep 01 '25 17:09 bsayak03

@bsayak03 Hello sir, kindly assign me above issue, would like to work upon!!

Jatan196 avatar Oct 12 '25 09:10 Jatan196

Hey @bsayak03, can you assign this to me. I have 2 years of experience, working in crypto projects. I have worked on payments platform like normie.tech, where I integrated platforms like paypal, sqaure and stripe. I believe, this would be perfect for my skillset. My approach would be to:

  1. Setup my development docker.
  2. Enter the crates/hyperswitch_connectors/src/utils.rs file, understand the integrity getter functions
  3. Go to crates/hyperswitch_connectors/src/connectors/bitpay.rs and strategically place the getter functions to make check the integrity from the request and the connector

dipanshuhappy avatar Oct 14 '25 15:10 dipanshuhappy

@bsayak03 Sir can you please assign this to me?

Gangaparameshwari07 avatar Oct 14 '25 17:10 Gangaparameshwari07

@bsayak03 Hey I have implemented a solution. Turns out i only had to integrate for authorise and PSync.

dipanshuhappy avatar Oct 15 '25 16:10 dipanshuhappy

@neerajkumar-n just pinging on the PR here.

dipanshuhappy avatar Nov 04 '25 16:11 dipanshuhappy