Repository navigation
Conversation
The sell path destructured `pluginId` from PAYBIS_TO_EDGE_CURRENCY_MAP, shadowing the plugin's own id. Sell_Success then reported the wallet's chain (bitcoin, litecoin, ...) as fiatProviderId, and the saved fiat action named that chain as its provider, so no Paybis sell could join to its partner report.
fetchRevolutRedirectUrl already encodes partnerRedirectUrl through URLSearchParams, so the extra encodeURIComponent reached Revolut as a literal https%3A%2F%2F... string. Revolut appended `?orderId=` to it and redirected there, which never resolves back to the app: the buy success deep link, its Buy_Success event and completion modal never ran, and no Revolut buy joined its partner report.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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
Asana task
Fixes two ramp conversion events whose ids could not be joined to the partner reports the reports server stores (
{appId}_{pluginId}:{orderId}), so/v1/checkTxsmissed them.pluginIdfromPAYBIS_TO_EDGE_CURRENCY_MAP, shadowing the ramp's ownpluginId.Sell_Successthen logged the wallet's chain (bitcoin,litecoin,ethereum, ...) asfiatProviderId, about 540 events in 30 days. The chain id is nowcurrencyPluginId, so the event logspaybis.partnerRedirectUrlwas encoded beforefetchRevolutRedirectUrlencoded it again. The doubly encoded return URL never reopened the app, so noBuy_Successwas logged for Revolut even though reports has Revolut orders. The URL is now passed plain. The order id the GUI mints (makeUuid) is the id Revolut reports under (rawTx.id), so no id change is needed.Rango swaps now log their request id through EdgeApp/edge-exchange-plugins#498; the reports-side lookup for Paybis request ids, Banxa, Maya and THORChain
0xids lands in EdgeApp/edge-reports-server#235.Not fixable in the GUI (Simplex): all 16 Simplex
Buy_Successevents in the last 90 days logorderId: "unknown". The JWT widget flow lets Simplex mint theorder_id, the return deep link does not carry it, and the reports row (keyed onorder_id) holds nothing the GUI knows. It needs Simplex to appendorder_idto the return URL, or a move to the Wallet API flow where the partner supplies the id.On an iOS simulator, a Revolut buy (region DE, 60 EUR to ETH) listed the Revolut quote; tapping it ran
approveQuotewith the single-encoded return URL and opened the Revolut checkout. The checkout requires a Revolut account sign-in, so the return deep link past it is covered byfetchRevolut.test.ts, which asserts the return URL is encoded exactly once.The Paybis sell change is a rename covered by
tsc. The test account holds 0.065 SOL, under the 0.1671 SOL sell minimum, so the simulator run used a local, uncommitted bypass of the sell balance checks. With it, a 0.3 SOL sell (California, USD) got a Paybis card quote, and tapping it opened the Paybis widget's review screen. Continuing led to Paybis KYC, which asks for a tax residence and home address. The payment-details handler this PR changes runs only after that step, so a completed sell withfiatProviderId: paybisstill needs a KYC'd Paybis account and at least 0.3 SOL.CHANGELOG
Does this branch warrant an entry to the CHANGELOG?
Dependencies
none
Requirements
If you have made any visual changes to the GUI. Make sure you have:
Note
Medium Risk
Targeted fixes to fiat ramp deep linking and conversion logging; wrong ids affect reports reconciliation but do not change funds movement or auth.
Overview
Fixes two ramp flows where conversion analytics could not be matched to partner order data (
{appId}_{pluginId}:{orderId}), so/v1/checkTxsskipped them.Paybis sell: In the payment-details path, destructuring
pluginIdfromPAYBIS_TO_EDGE_CURRENCY_MAPshadowed the ramp’s ownpluginId(paybis).Sell_Successthen logged the wallet chain (e.g.bitcoin,ethereum) asfiatProviderId. The map field is renamed tocurrencyPluginIdso events consistently logpaybis.Revolut buy: The success return URL was
encodeURIComponent’d beforefetchRevolutRedirectUrl, which encodespartnerRedirectUrlagain. Double encoding broke the post-checkout deep link, so the app often never received success andBuy_Successwas missing. GUI and ramp Revolut providers now pass the plain return URL;fetchRevolut.test.tsasserts it is encoded exactly once. Docs infetchRevolut.tsclarify that callers should pass an unencoded URL.CHANGELOG adds both fixes. ESLint no longer exempts the legacy GUI
revolutProvider.tsfrom lint (unchanged behavior in that file mirrors the URL fix).Reviewed by Cursor Bugbot for commit 7b5cd64. Bugbot is set up for automated code reviews on this repo. Configure here.
Test evidence
7b5cd64Stop double-encoding the Revolut return URL
2026-09-29
🪓 local uncommitted bypass of the sell balance checks in RampCreateScene, reverted before push
9. revolut buy quote
10. revolut checkout signin wall
11. sell min amount wall
12. 🪓 paybis sell quote
13. 🪓 paybis sell widget
14. 🪓 paybis kyc address wall