The shop's LIVE payment-method availability via KR.getPaymentMethods() — what a dynamic method chooser should render, since wallet/APM enablement is a per-shop contract invisible to the static capability list. Requires the SDK (loads it on demand); browser-only like every KR surface.
Return trip from the hosted payment page. Two documented return shapes exist, and both resolve here:
Returns null when the URL carries neither, so a router can probe every registered adapter safely.
Dynamic script/SDK load — only pulled in if this PSP is active.
Renders PayZen's card fields or multi-method smartForm (per
config.form) as Lyra-hosted iframes — SAQ-A eligible, card data never
touches the host DOM. KR is a single page-global managing forms
globally, so mounting tears down any previous form first; two PayZen
forms cannot coexist on one page.
fieldOptions passes through to KR.setFormConfig untouched (placeholders
kr-placeholder-*, kr-hide-debug-toolbar, …). Protected keys the host
cannot override: formToken (from clientSecret), kr-public-key,
kr-spa-mode, and language when MountOptions.locale is given.
appearance is accepted but has no JS hook to land on: krypton mirrors
the host page's CSS into its iframes automatically, so theming is done
with plain CSS (or a cssUrl override) — documented no-op. The smartForm
additionally rejects the material theme (CLIENT_505); the default neon
reset is compatible.
Confirm-on-client shape, submission ownership depending on the form:
Either way the outcome arrives via KR.onSubmit (accepted) or KR.onError (refused/client error) — both resolve, never reject. The browser kr-answer is NOT hash-verified here (the validation keys are server secrets); the host's source of truth stays server-side (IPN / retrievePayment).