Skip to main content
Seamless was the simplest legacy entry point on Android: after wiring up the launcher with startCheckout(…), a single startPaymentSeamlessLite(paymentSelected, …) call handed everything off: the SDK rendered the form, tokenized, created the payment, ran 3DS, and reported back through a callbackPaymentState lambda. In the unified API the same flow is the default behavior of Transaction.start(activity, paymentSelected). No controller overrides beyond onStatus. The structural change is the result-delivery model: was a lambda passed to the start call, now is a callback through onStatus on a TransactionController.

Before you start

  • Replace the com.yuno.sdk.* and com.yuno.presentation.* imports with their com.yuno.payments.sdk.api.* counterparts (the side-by-side lists them). 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.