View Issue Details

IDProjectCategoryView StatusLast Update
0011563Talermerchant backendpublic2026-06-26 21:45
ReporterFlorian Dold Assigned ToFlorian Dold  
PrioritynormalSeverityminorReproducibilityhave not tried
Status assignedResolutionopen 
Target Version1.7 
Summary0011563: merchant backend lists same exchange twice in contract terms
DescriptionDidn't manage to reproduce it yet via a harness test, but on test/demo:

$ taler-harness playground advanced-tokens-1 advanced-tokens-1
Additional Information[9] 16:42:59.189 � WalletCore.swift:157 WalletCore#1 handleResponse(_:_:) {"type":"response","operation":"getChoicesForPayment","id":105,

"result":{

    "choices":[

        { "status":"payment-possible","scopeInfo":{"currency":"TESTKUDOS","type":"exchange","url":"https://exchange.test.taler.net/"},

            "amountRaw":"TESTKUDOS:1","amountEffective":"TESTKUDOS:1",

            "tokenDetails":{"tokensRequested":0,"tokensAvailable":0,"tokensUnexpected":0,"tokensUntrusted":0,"perTokenFamily":{}}

        },{"status":"payment-possible","scopeInfo":{"currency":"TESTKUDOS","type":"exchange","url":"https://exchange.test.taler.net/"},

            "amountRaw":"TESTKUDOS:5","amountEffective":"TESTKUDOS:5",

            "tokenDetails":{"tokensRequested":0,"tokensAvailable":0,"tokensUnexpected":0,"tokensUntrusted":0,"perTokenFamily":{}}

        },{"status":"payment-possible","scopeInfo":{"currency":"TESTKUDOS","type":"exchange","url":"https://exchange.test.taler.net/"},

            "amountRaw":"TESTKUDOS:5","amountEffective":"TESTKUDOS:5",

            "tokenDetails":{"tokensRequested":0,"tokensAvailable":0,"tokensUnexpected":0,"tokensUntrusted":0,"perTokenFamily":{}}

        },{"status":"insufficient-balance",

            "amountRaw":"TESTKUDOS:0.5",

            "tokenDetails":{"tokensRequested":1,"tokensAvailable":0,"tokensUnexpected":0,"tokensUntrusted":0,

                "perTokenFamily":{"slugdiscount1-DWDZRW6T4MFX81NFK9AF6Y13AG":{"requested":1,"available":0,"unexpected":0,"untrusted":0,"causeHint":"wallet-tokens-available-insufficient"}}

            }

        },{"status":"insufficient-balance",

            "amountRaw":"TESTKUDOS:1",

            "tokenDetails":{"tokensRequested":1,"tokensAvailable":0,"tokensUnexpected":0,"tokensUntrusted":0,

                "perTokenFamily":{"slugsubscription1-DWDZRW6T4MFX81NFK9AF6Y13AG":{"requested":1,"available":0,"unexpected":0,"untrusted":0,"causeHint":"wallet-tokens-available-insufficient"}}

            }

        }

    ],"contractTerms":{

        "version":1,"choices":[

            { "amount":"TESTKUDOS:1","description":"Buy an individual article","inputs":[],"outputs":[],"max_fee":"TESTKUDOS:0"},

            { "amount":"TESTKUDOS:53","description":"Article and 3 discounts","inputs":[],

                "outputs":[{"type":"token","token_family_slug":"slugdiscount1-DWDZRW6T4MFX81NFK9AF6Y13AG","count":13,"valid_at":{"t_s":1782484948},"key_index":0}],

                "max_fee":"TESTKUDOS:0"},

            { "amount":"TESTKUDOS:5","description":"Article and subscription","inputs":[],

                "outputs":[{"type":"token","token_family_slug":"slugsubscription1-DWDZRW6T4MFX81NFK9AF6Y13AG","count":1,"valid_at":{"t_s":1782484948},"key_index":0}],

                "max_fee":"TESTKUDOS:0"},

            { "amount":"TESTKUDOS:0.5","inputs":[{"type":"token","token_family_slug":"slugdiscount1-DWDZRW6T4MFX81NFK9AF6Y13AG","count":1}],

                "outputs":[],"max_fee":"TESTKUDOS:0"},

            { "amount":"TESTKUDOS:10","description":"Article via subscription",

                "inputs":[{"type":"token","token_family_slug":"slugsubscription1-DWDZRW6T4MFX81NFK9AF6Y13AG","count":1}],

                "outputs":[{"type":"token","token_family_slug":"slugsubscription1-DWDZRW6T4MFX81NFK9AF6Y13AG","count":1,"valid_at":{"t_s":1782484948},"key_index":0}],

                "max_fee":"TESTKUDOS:0"}

        ],"token_families":{

            "slugdiscount1-DWDZRW6T4MFX81NFK9AF6Y13AG":{"name":"discount1","description":"My Discount 1 (valid two minutes)","description_i18n":{},

                "keys":[

                    {"cipher":"RSA","rsa_pub":"rrr","signature_validity_start":{"t_s":1782484948},"signature_validity_end":{"t_s":1782657748}},

                    {"cipher":"RSA","rsa_pub":"rrr","signature_validity_start":{"t_s":1782484948},"signature_validity_end":{"t_s":1782657748}}

                ],"details":{"class":"discount","expected_domains":[]},

                "critical":false},

            "slugsubscription1-DWDZRW6T4MFX81NFK9AF6Y13AG":{"name":"subscription1","description":"My Subscription 1 (valid one minute)","description_i18n":{},

                "keys":[

                    {"cipher":"RSA","rsa_pub":"sss","signature_validity_start":{"t_s":1782484948},"signature_validity_end":{"t_s":1782657748}},

                    {"cipher":"RSA","rsa_pub":"sss","signature_validity_start":{"t_s":1782484948},"signature_validity_end":{"t_s":1782657748}}

                ],"details":{"class":"subscription","trusted_domains":[]},

                "critical":true}

        },"order_id":"2026.177-T2MXR80000000","merchant_base_url":"https://backend.test.taler.net/instances/testing/",

        "h_wire":"RTATPKXVN0KBK5QGF7JSZ7GGJQNZ3QF7VV1SCKGZ870N811XW7YX37W97J4Z9HDDD5A6DHT6Z8Y4PGF0HSY1JA99M3DB40JZP6HSEGR",

        "auto_refund":{"d_us":0},"wire_method":"x-taler-bank","summary":"Test Payment","nonce":"TVC00P2Z3K0E5BPFTX8WJ6AP9XP12SPBY9D15SXZGB9PFVWXQ3Y0",

        "pay_deadline":{"t_s":1782485548},"refund_deadline":{"t_s":1783781548},"wire_transfer_deadline":{"t_s":1783781548},"timestamp":{"t_s":1782484948},

        "merchant":{"name":"Testing Merchant","address":{},"jurisdiction":{}},"merchant_pub":"2H42SKKZCJ2TGZZXCM1J5RN1C3C21Y8ED3XWCKM9CV0Z69M3XJS0",

        "exchanges":[{"master_pub":"FSN8D78ZVBDAFGHD6QQC968MKPT1202RJPY46DTNGGASP0F7HBBG","priority":1024,"url":"https://exchange.test.taler.net/","max_contribution":"TESTKUDOS:5"},

                {"master_pub":"FSN8D78ZVBDAFGHD6QQC968MKPT1202RJPY46DTNGGASP0F7HBBG","priority":1024,"url":"https://exchange.test.taler.net/","max_contribution":"TESTKUDOS:5"}],

        "products":[],"minimum_age":0

    },"defaultChoiceIndex":0,

    "automaticExecution":false

}}
TagsNo tags attached.

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2026-06-26 21:44 Florian Dold New Issue
2026-06-26 21:44 Florian Dold Status new => assigned
2026-06-26 21:44 Florian Dold Assigned To => Florian Dold
2026-06-26 21:45 Florian Dold Summary merchant backend puts same exchange twice into contract terms => merchant backend lists same exchange twice in contract terms