View Issue Details

IDProjectCategoryView StatusLast Update
0012089Talerwallet (Android App)public2026-11-11 01:42
Reporterbot-cg [agent] Assigned ToResolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicatorCM_7  
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PrioritynormalSeverityminorReproducibilityhave not tried
Status newResolutionopen 
Summary0012089: Android: errors on the payment screen are headed "Error creating order" (the pay-template string) (patch attached)
DescriptionEvery error on Android's payment screen -- loading the payment options (getChoicesForPayment) or confirming the payment (confirmPay) -- is headed "Error creating order". That string belongs to the pay-template form; on the payment screen the user tapped "Pay" on an existing order and is told that creating an order failed.

What the user sees when confirmPay fails (injected with wallet-core's dev experiment api-error, operation confirmPay, code 7050 WALLET_PAY_MERCHANT_INSUFFICIENT_BALANCE; origin/master builds of 2026-11-11):
- Android: "Error", "Error creating order", wallet-core's English hint, "Export error diagnostics" (before-android-1.png). The screen stays there; only system Back leaves it.
- WebExtension: "Payment could not continue" -- the translated sentence for the code -- "Withdraw funds or choose another payment option, then try again." -- "Technical details", "Cancel payment" (before-web-1.png).
- iOS: generic "Internal core error" sheet with the hint (before-ios-1.png); that is 0011934, not this report.

Code (origin/master 4c483527):
- wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt:197-203: PayStatus.Error -> ErrorComposable(..., message = stringResource(R.string.payment_template_error)).
- wallet/src/main/res/values/strings.xml:322: payment_template_error = "Error creating order" (correct in PayTemplateComposable.kt:67-72).
- reached from payment/PaymentManager.kt:224-234 (getChoicesForPayment errors) and :324-326 (confirmPay errors).
Reference: web routes/App.tsx:4626-4646, screens/PaymentScreen.tsx:510-536.

Patch (android-payment-error-heading.patch): the payment prompt uses its own heading "Payment could not continue" (one new English string, the WebExtension's wording) instead of the pay-template string. The body text is unchanged; translating wallet-core's codes into user messages is 0012069.
Verified: :wallet:assembleFdroidSim builds; after-android-1.png is the same injected failure with the patch.

Assisted by LLM
Steps To Reproduce1. Developer mode on; open taler://dev-experiment/api-error?operation=confirmPay&detail=eyJjb2RlIjogNzA1MCwgImhpbnQiOiAiaW5zdWZmaWNpZW50IGJhbGFuY2UgKGluamVjdGVkIGJ5IGRldi1leHBlcmltZW50IGFwaS1lcnJvcikifQ&count=1 (detail = base64url of {"code": 7050, "hint": "..."}).
2. Open any taler://pay/ link and tap Pay: "Error creating order".
TagsNo tags attached.
Attached Files
before-android-1.png (68,488 bytes)   
before-android-1.png (68,488 bytes)   
before-web-1.png (71,337 bytes)   
before-web-1.png (71,337 bytes)   
before-ios-1.png (128,809 bytes)   
before-ios-1.png (128,809 bytes)   
after-android-1.png (69,631 bytes)   
after-android-1.png (69,631 bytes)   
android-payment-error-heading.patch (1,490 bytes)   
diff --git a/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt b/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt
index 984a97f8..8183dc3c 100644
--- a/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt
@@ -198,7 +198,7 @@ fun TransactionPaymentPrompt(
             error = status.error,
             modifier = modifier,
             devMode = devMode,
-            message = stringResource(R.string.payment_template_error),
+            message = stringResource(R.string.payment_error_could_not_continue),
             scrollable = false,
         )
 
diff --git a/wallet/src/main/res/values/strings.xml b/wallet/src/main/res/values/strings.xml
index 89750709..f9b15aa0 100644
--- a/wallet/src/main/res/values/strings.xml
+++ b/wallet/src/main/res/values/strings.xml
@@ -301,6 +301,7 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish
     <string name="payment_confirmation_code">Confirmation code</string>
     <string name="payment_create_order">Create order</string>
     <string name="payment_error">Error: %s</string>
+    <string name="payment_error_could_not_continue">Payment could not continue</string>
     <string name="payment_failed">Failed</string>
     <string name="payment_fee">+%s payment fee</string>
     <string name="payment_label_order_summary">Purchase</string>

Required notifications

Address or linkRemarkAdded byNotifiedActions

Relationships

related to 0012069 new Android: errors are shown as "Error" + wallet-core's English hint -- no translated message even for "could not reach the service"; "Unsupported URI" is a hard-coded English literal (patch attached) 

Activities

Issue History

Date ModifiedUsernameFieldChange
2026-11-11 01:42bot-cgNew Issue
2026-11-11 01:42bot-cgRelationship addedrelated to 0012069
2026-11-11 01:42bot-cgFile Added: before-android-1.png
2026-11-11 01:42bot-cgFile Added: before-web-1.png
2026-11-11 01:42bot-cgFile Added: before-ios-1.png
2026-11-11 01:42bot-cgFile Added: after-android-1.png
2026-11-11 01:42bot-cgFile Added: android-payment-error-heading.patch