Integration parameters
An integration is one named way you take payments. default and hosted_page exist from sign-up;
the console (or the update_checkout_integration tool in chat) sets:
| field | values | runtime behaviour |
|---|---|---|
allowed_origins |
exact origins | a session created from any other origin answers origin_not_allowed |
theme |
light / dark / auto |
auto follows prefers-color-scheme |
mode |
auto / test |
test forces the simulated form |
amount_trust_policy |
allow_unverified / require_verified |
unverified amounts render the pre-pay disclosure and a "Reserve" button, or are refused |
hold_duration_days |
1–5, default 5 | the authorised copy: "{merchant} will confirm within N days" |
signals_capture_enabled |
boolean, default on | behavioural signals ride the confirm body; off = no listeners, no storage |
confirmation_behaviour |
show_confirmation / resolve_only |
resolve_only resolves collect() without the rendered state (the hosted page ignores it) |
confirmation_url |
an absolute https:// URL, or unset |
after a paid or authorised outcome the shopper is taken there; a session may override it; unset leaves them on ripper's confirmation |
defaults |
amount, currency, items | used when the page passes none |
presentation |
brand, layout, copy, extensions, custom_css | see Layout |
Selecting an integration for a call:
const result = await ripper.collect({ amount: 4200, currency: 'GBP', integration: 'default' });Your confirmation page #
Set confirmation_url and the checkout takes the shopper to your own page once the payment is paid or
authorised. Two query parameters are added, and only these two:
https://shop.example/thanks?payment_id=pay_8f3k20a4b1c2d3e4f5a6b7c8&order_reference=ORD-1042
order_reference is absent when the session has none. Nothing else travels in the URL — no email, no
card detail, no session secret. Look the order up on your server from the payment ID or your own
reference; never trust the query alone as proof of payment.
The URL must be absolute https://, at most 512 characters, with no credentials, no #fragment, and
neither payment_id nor order_reference already in its query — the checkout appends those two and will
not overwrite yours. Saving anything else is refused; if such a URL ever reached the checkout it would be
ignored and the shopper would stay on ripper's confirmation.
A session your server creates can carry its own confirmation URL, and it wins over the integration's — useful when one integration serves several shops or one checkout needs a different landing page.
Ours is the fallback. A browser gives no signal that a navigation succeeded, so if the page has not left within about a second the checkout keeps the shopper where they are and shows a Continue to {shop} link, a ten-second countdown and a Stay on this page control that stops it for good. A slow confirmation page can therefore show that panel for a moment before it lands — that is deliberate, and better than a shopper left on a page that has stopped talking to them.
Two cases never redirect: confirmation_behaviour: resolve_only (your page owns the outcome), and a
shopper who comes back to the checkout after paying — pressing Back must not throw them forwards
again.