View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0010724 | Taler | merchant backoffice SPA | public | 2025-12-04 20:11 | 2025-12-15 11:46 |
| Reporter | htgoebel | Assigned To | sebasjm | ||
| Priority | normal | Severity | major | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Product Version | 1.0 | ||||
| Target Version | 1.3 | Fixed in Version | 1.3 | ||
| Summary | 0010724: Refund "pending" even after wire deadline | ||||
| Description | If a refund was not obtained be the customer, the order status still reports refund_pending as true and the refund's pending state as true. | ||||
| Steps To Reproduce | Create an order with short deadlines, pay it and create a refund, but DO NOT obtain the refund in the wallet. After the wire deadline passed use e.g. curl to query the order status. Except from the order status: 'order_id': '2025.338-00247EBTGAGNR', 'pay_deadline': {'t_s': 1764874500}, 'refund_deadline': {'t_s': 1764874560}, 'timestamp': {'t_s': 1764874391}, 'wire_transfer_deadline': {'t_s': 1764874560}}, 'last_payment': {'t_s': 1764874399}, 'order_status': 'paid', 'order_status_url': 'https://backend.demo.taler.net/instances/sandbox/orders/2025.338-00247EBTGAGNR', 'refund_amount': 'KUDOS:0.02', 'refund_details': [{'amount': 'KUDOS:0.02', 'pending': True, 'reason': 'duplicate', 'timestamp': {'t_s': 1764874434}}], 'refund_pending': True, 'refunded': True, 'wire_details': [{'amount': 'KUDOS:0.02', 'confirmed': False, 'exchange_url': 'https://exchange.demo.taler.net/', 'execution_time': {'t_s': 1764874399}, 'wtid': '312S1C67R87PMBGASP4RNA2RJGBM7ANVNG23QAXV32QFGQCZ1RBG'}], 'wire_reports': [], 'wired': True} | ||||
| Additional Information | Taler Backoffice 1.2.2 (23:1:11) | ||||
| Tags | No tags attached. | ||||
|
|
That's correct. Refund_pending = false means that the wallet *did* get the refund. The point is that here now "wired = true", and that means that any pending refund can no longer succeed. So you do need to consider all the bits in combination: if refund_pending = true *and* wired = true, it means the wallet will never get it. |
|
|
This is, however, something the SPA needs to show nicely, so for example no longer showing the refund as "pending" but as "failed". |
|
|
This is how it looks when a merchant 1) create an order of KUDOS 3 2) merchant refund KUDOS 1 3) customer takes the refund 4) merchant refund KUDOS 1 5) customer DON'T take the last refund 6) wire transfer deadline passes I think is clear that the first one was taken in the UI, the second one didn't, the wiredeadline passed. The refund URI is not shown anymore. The merchant backend reports KUDOS:0.4 and KUDOS:0.6 which I think is wrong (!) because the merchant specified KUDOS:1 and I think this is a details of the coins used by the wallet should not be relevant here and backend should return KUDOS:1 |
|
|
i think the spa is ok and backend should not return refund by coin |
|
|
Well, customer/protocol picks up refunds by coin, so little choice there in terms of data model. But SPA could reconcile, maybe? |
|
|
Let's see if Vlada has good design ideas here... |
|
|
Better to show the refund amount specified by the merchant, by coins too confusing For each event in the timeline, we need a better description. Name for states of refund proposed in related bug 0010695 |
|
|
the SPA was already merging but the refunded list is returned with a wired order of the items, I expected this to be order by time (asc or desc) ordering on the spa after 50f768fa601e4a891cecd122687553fe89a72606 |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2025-12-04 20:11 | htgoebel | New Issue | |
| 2025-12-04 20:13 | htgoebel | Relationship added | related to 0010725 |
| 2025-12-04 20:24 | htgoebel | Relationship added | related to 0010726 |
| 2025-12-04 22:40 | Christian Grothoff | Note Added: 0026745 | |
| 2025-12-04 22:40 | Christian Grothoff | Assigned To | => sebasjm |
| 2025-12-04 22:40 | Christian Grothoff | Status | new => assigned |
| 2025-12-04 22:40 | Christian Grothoff | Relationship added | related to 0010695 |
| 2025-12-04 22:40 | Christian Grothoff | Note Added: 0026746 | |
| 2025-12-04 22:41 | Christian Grothoff | Severity | minor => major |
| 2025-12-04 22:41 | Christian Grothoff | Category | merchant backend => merchant backoffice SPA |
| 2025-12-04 22:41 | Christian Grothoff | Product Version | => 1.0 |
| 2025-12-04 22:41 | Christian Grothoff | Target Version | => 1.3 |
| 2025-12-05 14:45 | sebasjm | Note Added: 0026783 | |
| 2025-12-05 14:45 | sebasjm | File Added: image.png | |
| 2025-12-05 14:46 | sebasjm | Assigned To | sebasjm => Christian Grothoff |
| 2025-12-05 14:46 | sebasjm | Status | assigned => feedback |
| 2025-12-05 14:46 | sebasjm | Note Added: 0026784 | |
| 2025-12-05 14:51 | Christian Grothoff | Note Added: 0026785 | |
| 2025-12-05 14:51 | Christian Grothoff | Assigned To | Christian Grothoff => vlada.svirsh |
| 2025-12-05 14:51 | Christian Grothoff | Note Added: 0026786 | |
| 2025-12-05 14:52 | Christian Grothoff | Status | feedback => assigned |
| 2025-12-05 14:52 | Christian Grothoff | Target Version | 1.3 => 1.5 |
| 2025-12-14 12:53 | vlada.svirsh | Note Added: 0026961 | |
| 2025-12-14 12:53 | vlada.svirsh | Assigned To | vlada.svirsh => sebasjm |
| 2025-12-15 00:43 | sebasjm | Note Added: 0026980 | |
| 2025-12-15 00:43 | sebasjm | Status | assigned => resolved |
| 2025-12-15 00:43 | sebasjm | Resolution | open => fixed |
| 2025-12-15 11:45 | Christian Grothoff | Target Version | 1.5 => 1.3 |
| 2025-12-15 11:46 | Christian Grothoff | Fixed in Version | => 1.3 |