taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit f9a453f19dbabba5174007fb071131cbd1a1668f
parent 8b3997a26458da1deaf26759f81836f7bbedb05f
Author: bohdan-potuzhnyi <bohdan.potuzhnyi@gmail.com>
Date:   Tue,  1 Sep 2026 17:55:08 +0200

[mixed-payments] small update

Diffstat:
Mcore/api-merchant.rst | 25++++++++++++++++---------
Mcore/merchant/delete-private-orders-ORDER_ID.rst | 4++--
Mcore/merchant/get-private-orders-ORDER_ID.rst | 2+-
Mcore/merchant/post-orders-ORDER_ID-pay.rst | 2+-
Mcore/merchant/post-private-orders-ORDER_ID-collect.rst | 2+-
Mcore/merchant/post-private-orders-ORDER_ID-refund-external.rst | 2+-
Mcore/merchant/post-private-orders-ORDER_ID-refund.rst | 13+++++++------
7 files changed, 29 insertions(+), 21 deletions(-)

diff --git a/core/api-merchant.rst b/core/api-merchant.rst @@ -29,7 +29,7 @@ Merchant Backend RESTful API Version History --------------- -The currently implemented protocol version is **v35**. +The currently implemented protocol version is **v42**. * The Android PoS app is currently targeting **v20**. * The SPA is currently targeting **vXX**. @@ -69,6 +69,19 @@ The currently implemented protocol version is **v35**. * ``v35``: adds ``exchange_payto_uri`` to :http:get:`[/instances/$INSTANCE]/private/transfers`, passing on the exchange account reported by exchange protocol **v39** +* ``v36``: allows token families with indefinite validity +* ``v37``: adds expiration filtering to the private order history +* ``v38``: adds reporting and repair of an order's wired status +* ``v39``: returns a login token after a successful password reset +* ``v40``: requires the current password when changing merchant credentials +* ``v41``: returns merchant details and compatible exchange candidates for + wallet templates +* ``v42``: adds the additive ``amount_external`` field for orders settled + partly outside of Taler, the ``/private/orders/$ORDER_ID/collect`` endpoint + for completing zero-Taler orders without a wallet, the + ``/private/orders/$ORDER_ID/refund-external`` endpoint for recording + externally settled refunds, and exposes both through order status + (see :doc:`DD 96 </design-documents/096-partial-payments>`) **Upcoming versions:** @@ -79,12 +92,6 @@ The currently implemented protocol version is **v35**. * ``vTokenFountains``: adds fountains for distributing promotional merchant tokens (see :doc:`DD 98 </design-documents/098-token-fountains>`) -* ``vMixedPayments``: adds the additive ``amount_external`` field for orders - settled partly outside of Taler, the ``/private/orders/$ORDER_ID/collect`` - endpoint for completing zero-Taler orders without a wallet, the - ``/private/orders/$ORDER_ID/refund-external`` endpoint for recording - externally settled refunds, and exposes both through order status - (see :doc:`DD 96 </design-documents/096-partial-payments>`) **Ideas for future version:** @@ -1852,7 +1859,7 @@ Orders // amount and all entries here. If present, all entries and (for // v1 orders) all choices must use the currency of the Taler // ``amount``. Never contains a ``taler`` entry. - // @since protocol **vMixedPayments**. + // @since protocol **v42**. amount_external?: ExternalPaymentInfo[]; } @@ -2145,7 +2152,7 @@ and is thus not yet buyer-specific. // selected choice's ``amount`` for v1 contracts) remains the amount // paid with Taler; the full order total is the sum of that amount // and all entries here. See `ExternalPaymentInfo`. - // @since protocol **vMixedPayments**. + // @since protocol **v42**. amount_external?: ExternalPaymentInfo[]; } diff --git a/core/merchant/delete-private-orders-ORDER_ID.rst b/core/merchant/delete-private-orders-ORDER_ID.rst @@ -4,7 +4,7 @@ last 10 years (or whatever ``TAX_RECORD_EXPIRATION`` is set to) or was claimed but is unpaid and thus still a valid offer. - Since protocol **vMixedPayments**, an order that carries externally + Since protocol **v42**, an order that carries externally settled payments (``amount_external``) can only be deleted by explicitly passing ``force``, as such an order may have received payments outside of Taler that the merchant should resolve manually first. @@ -31,7 +31,7 @@ Returned with ``TALER_EC_MERCHANT_PRIVATE_DELETE_ORDERS_ALREADY_PAID``, ``TALER_EC_MERCHANT_PRIVATE_DELETE_ORDERS_AWAITING_PAYMENT`` or ``TALER_EC_MERCHANT_PRIVATE_DELETE_ORDERS_EXTERNALLY_PAID`` (the latter - since protocol **vMixedPayments**, when the order carries externally + since protocol **v42**, when the order carries externally settled payments and ``force`` was not set). :http:statuscode:`500 Internal Server Error`: The server experienced an internal failure. diff --git a/core/merchant/get-private-orders-ORDER_ID.rst b/core/merchant/get-private-orders-ORDER_ID.rst @@ -117,7 +117,7 @@ // [/instances/$INSTANCE]/private/orders/$ORDER_ID/refund-external. // These are bookkeeping entries only; empty array if there are // none. - // @since protocol **vMixedPayments**. + // @since protocol **v42**. refunds_external: ExternalRefundInfo[]; // Status URL, can be used as a redirect target for the browser diff --git a/core/merchant/post-orders-ORDER_ID-pay.rst b/core/merchant/post-orders-ORDER_ID-pay.rst @@ -107,7 +107,7 @@ this request, so the request does not describe the payment that was made. The response is an `AlreadyPaidChoiceResponse` and contains the ``choice_index`` the order was actually paid with. - Since protocol **vMixedPayments**. + Since protocol **v42**. * ``MERCHANT_POST_ORDERS_ID_PAY_ALREADY_PAID``: The order was already fully paid by another wallet. The response includes refund signatures for the coins. diff --git a/core/merchant/post-private-orders-ORDER_ID-collect.rst b/core/merchant/post-private-orders-ORDER_ID-collect.rst @@ -27,7 +27,7 @@ **Required permission:** ``orders-write`` (see :ref:`Scopes <merchant-api-scopes>`) - Since protocol **vMixedPayments**. + Since protocol **v42**. **Request:** diff --git a/core/merchant/post-private-orders-ORDER_ID-refund-external.rst b/core/merchant/post-private-orders-ORDER_ID-refund-external.rst @@ -31,7 +31,7 @@ **Required permission:** ``orders-refund`` (see :ref:`Scopes <merchant-api-scopes>`) - Since protocol **vMixedPayments**. + Since protocol **v42**. **Request:** diff --git a/core/merchant/post-private-orders-ORDER_ID-refund.rst b/core/merchant/post-private-orders-ORDER_ID-refund.rst @@ -3,9 +3,9 @@ Increase the refund amount associated with a given order. The user should be redirected to the ``taler_refund_uri`` to trigger refund processing in the wallet. - Since ``vMixedPayments``. For orders with refunds settled through external payment methods, - the cumulative Taler refund must not exceed the full order total minus those - external refunds. + Since **v42**. For orders with refunds settled through external payment + methods, the cumulative Taler refund must not exceed the full order total + minus those external refunds. **Required permission:** ``orders-refund`` (see :ref:`Scopes <merchant-api-scopes>`) @@ -29,11 +29,12 @@ Returned with ``TALER_EC_MERCHANT_GENERIC_ORDER_UNKNOWN``. :http:statuscode:`409 Conflict`: The refund amount exceeds the amount originally paid, the combined Taler - and external refunds would exceed the full order total (since ``vMixedPayments``), or the order was - not yet paid. + and external refunds would exceed the full order total (since **v42**), or + the order was not yet paid. Returned with ``TALER_EC_MERCHANT_GENERIC_CURRENCY_MISMATCH`` or ``TALER_EC_MERCHANT_PRIVATE_POST_ORDERS_ID_REFUND_ORDER_UNPAID``, - ``TALER_EC_MERCHANT_PRIVATE_POST_ORDERS_ID_REFUND_INCONSISTENT_AMOUNT`` (since ``vMixedPayments``). + ``TALER_EC_MERCHANT_PRIVATE_POST_ORDERS_ID_REFUND_INCONSISTENT_AMOUNT`` + (since **v42**). :http:statuscode:`410 Gone`: It is too late for refunds, the exchange may have already wired the funds to the merchant.