View Issue Details

IDProjectCategoryView StatusLast Update
0009750Talerwallet (Android App)public2025-05-10 02:11
ReporterBohdan Assigned Toavalos Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Target Version1.0Fixed in Version1.0 
Summary0009750: No checking of claiming the order by the same wallet
DescriptionAndroid APP has a bag where the order is claimed (after that person returns to the scanner/no payment), and when the person scans the QR one more time, it shows claimed by another wallet.
Steps To Reproduce1. Find money
2. Buy a phone
...
n. Scan the QR code
n+1. Close the screen of payment, without paying the order
n+2. Scan the QR code one more time with the same app
n+3. See the error of the order being claimed by another wallet.
...
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

avalos

2025-04-23 18:05

developer   ~0024653

Last edited: 2025-04-23 18:05

I found the cause!

When quitting the payment prompt using the back arrow (<-), the transaction is automatically aborted by the app:

sending message:
{
  "id": 36,
  "operation": "abortTransaction",
  "args": {
    "transactionId": "txn:payment:PM07XMMP1X5WBSFX1KCCRKWSFPWKDGWFMYBVTK0YZ75NS6DW13JG"
  }
}

Which causes the transaction to transition to failed(refused).

When scanning again, preparePayForUrl returns "already-confirmed" and the UI takes the user to the original transaction, which is then rendered as a failing transaction.

Bohdan

2025-04-23 19:06

developer   ~0024654

Congratulations!

But why do we not unclaim it? (no idea if there is such possibility)

not aborting seems like a nice choice

avalos

2025-04-24 11:05

developer   ~0024661

My idea was to un-abort the transaction if it wasn't paid.

avalos

2025-04-30 19:36

developer   ~0024731

With the latest wallet, payments are not automatically aborted when quitting the dialog without paying.

However, this can still be done explicitly using the new "cancel" button.

With latest wallet-core (not yet in Android), aborted payments now transition to `aborted(failed)` instead of `refused(failed)`, so the UI can render them correctly.

commit d5fbc7a7f227fe82e05cad67b98170ef61b40c97
Author: Iván Ávalos <avalos@disroot.org>
Date: Wed Apr 30 21:16:22 2025 +0200

    wallet-core: aborted payments transition to 'aborted' instead of 'failed'

avalos

2025-04-30 19:36

developer   ~0024732

image.png (61,033 bytes)   
image.png (61,033 bytes)   

avalos

2025-04-30 19:37

developer   ~0024733

Feel free to re-open if the issue persists.

Issue History

Date ModifiedUsernameFieldChange
2025-04-16 15:06BohdanNew Issue
2025-04-16 15:06BohdanStatusnew => assigned
2025-04-16 15:06BohdanAssigned To => avalos
2025-04-16 15:07avalosTarget Version => 1.0
2025-04-18 13:24Christian GrothoffTarget Version1.0 => 1.0 stretch goals
2025-04-22 09:03avalosStatusassigned => acknowledged
2025-04-23 17:17avalosRelationship addedduplicate of 0009675
2025-04-23 18:05avalosNote Added: 0024653
2025-04-23 18:05avalosNote Edited: 0024653
2025-04-23 18:06avalosRelationship deleted0009675
2025-04-23 19:06BohdanNote Added: 0024654
2025-04-24 11:05avalosNote Added: 0024661
2025-04-24 11:46Christian GrothoffStatusacknowledged => assigned
2025-04-30 19:36avalosNote Added: 0024731
2025-04-30 19:36avalosFile Added: image.png
2025-04-30 19:36avalosFile Deleted: image.png
2025-04-30 19:36avalosNote Added: 0024732
2025-04-30 19:36avalosFile Added: image.png
2025-04-30 19:37avalosStatusassigned => informing
2025-04-30 19:37avalosResolutionopen => fixed
2025-04-30 19:37avalosNote Added: 0024733
2025-04-30 20:20Christian GrothoffFixed in Version => 1.0
2025-04-30 20:20Christian GrothoffTarget Version1.0 stretch goals => 1.0
2025-05-10 02:11Christian GrothoffStatusinforming => closed