Skip to content

painfree 0.3.0

Choose a tag to compare

@reyemb reyemb released this 02 Sep 13:21
· 20 commits to main since this release

Ask the bank what it accepts, instead of reading its PDF. HAA, HTD and HPD are now fetched, stored and shown. HTD's PartnerInfo/OrderInfo list is the same table an operator otherwise transcribes off a parameter sheet — an admin order type, the BTF beside it, a description, how many signatures the bank wants — and the console draws it next to what the connection is configured to send. "Will this payment be accepted" is answerable without sending one.

The request shape was read off the official H005 schema, not recalled: OrderParams has no minOccurs, so it is mandatory, and StandardOrderParams substitutes into it for an administrative order. The whole exchange is an ordinary three-phase download, driven in tests against a stub bank over a socket with real crypto.

The bank's document is stored verbatim beside the parse, and a document that cannot be parsed is still stored — losing the evidence because the reader was surprised is the worst available response to a bank changing something.

The comparison is shown and never applied: a bank publishing an upload this connection is not configured for does not reconfigure anything.

Breaking: no instant profile ships by default any more. The shipped default was the EPC SEPA convention — the euro scheme — and it applied to every connection unasked. Against a bank with no instant row in its catalogue that cost a signed upload and a round trip on every payment before falling back to normal.

instant is now refused locally, before anything is signed, naming the reason; instant_or_normal goes out as an ordinary transfer first time. On upgrade, a connection that never named an instant profile loses the default one. A deployment actually sending instant configured its bank's real triplet and is unaffected — that configuration is stored and kept. If you relied on the default, set the triplet your bank publishes on the connection's edit page; HTD will now tell you what that is.

Also in this release: a payment can be raised by hand from the console — fill the form, see the exact pain.001 it built with the resolved scheme and BTF, then confirm to send. The idempotency key is minted at preview and carried, so a double-click on confirm replays rather than pays twice. The README carries both payment bodies, and the drawer shows the running version and commit.

Migration 0017_bank_catalogue adds one table. No backfill: nothing in a database knows a bank's catalogue until the bank is asked.