Skip to main content
Seamless was the simplest legacy entry point: a single await call that returned the final result. No delegate, no callbacks. You handed in a SeamlessParams and a PaymentMethodSelected; the SDK rendered the form, tokenized, created the payment, ran 3DS, and returned a Yuno.Result. In the unified API the same flow is the default behavior of Transaction.start(paymentSelected:). No controller overrides needed beyond onStatus. The only structural change is the result-delivery model: was async-return, now is a callback through onStatus.

Before you start

  • Replace import YunoSDK with import SdkPayments. Your public API key and the checkout sessions your backend creates do not change (Before you begin).
  • Decide who creates the payment. The checkout session’s workflow must match that decision:
A default-workflow session with no createPayment override ends in INTERNAL_ERROR: the backend rejects the SDK’s payment creation. See createPayment.

Side-by-side

What changes

Grouped in the order you edit the code. Renamed: same role, new name. Moved: same value, new owner. Removed: nothing to call. New: no legacy counterpart. The last column is the only thing you have to do beyond the rename.

Initialization and config

The SDK result screen is off by default now. Set showStatusScreen: true to keep it.

Controller

Entry points

  • Get Started. The unified-API walkthrough; the new “Seamless equivalent” is now the default path.
  • onStatus. Controller that delivers the final status.
  • TransactionConfig. Complete field reference.
  • Migration / Lite. Almost identical migration; Seamless and Lite collapse into the same default path in the unified API.