fix: pass order_id and store transaction ID in Braintree integration#212
Open
miteshpc wants to merge 1 commit into
Open
fix: pass order_id and store transaction ID in Braintree integration#212miteshpc wants to merge 1 commit into
miteshpc wants to merge 1 commit into
Conversation
Author
|
Request to be backported to version-15 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
The Braintree integration in
braintree_settings.pyomits two critical fields when processing transactions:order_idis never sent to Braintree despite being available inself.data. The Braintree Transaction Sale API acceptsorder_idas a standard field (see [Braintree Transaction API](https://developer.paypal.com/braintree/docs/reference/request/transaction/sale)), allowing merchants to store a reference identifier against each transaction visible in the Braintree merchant dashboard and searchable via the API. Without this, there is no way to trace a Braintree transaction back to the originating ERPNext Payment Request from the Braintree side.The Braintree transaction ID is never persisted in ERPNext. On success,
result.transaction.idis discarded and onlyresult.transaction.statusis stored in the Integration Requestoutputfield. This makes it impossible to cross-reference an ERPNext Integration Request with a Braintree transaction.Changes
self.data.order_id(the Payment Request name) asorder_idin thebraintree.Transaction.sale()callresult.transaction.idinstead ofresult.transaction.statusin the Integration Requestoutputfield on successBefore
After
Test Scenario
Enable Approver / Reviewer Steps
PAY-REQ-2024-00001)4111111111111111PAY-REQ-2024-00001— matching the Payment Request name in ERPNext7kg3qt) rather than a status string likesubmitted_for_settlementReference
order_idfield — max 255 characters, 127 for PayPal transactionsorder_idas searchable field