Skip to content

Changelog

Every change shipped between two releases, including what went through development and release candidates. On the documentation site the entries are rendered below; in the repository they live in CHANGELOG.md at the root.

Changelog — HiPay Payments Mobile SDK

One version number covers the three delivery channels: the Android artifacts, the KMP artifacts and the iOS XCFramework/SPM package.

1.2.0

Added

  • An interrupted payment can be found again. The SDK remembers what it launched, keyed on your own order id, and tells you at launch what is still unresolved — after a background, a crash, or a kill. Even an order whose response was lost: the gateway finds it back from that same order id. How long those entries live is settable where you read them, so you can test the flow without waiting.
  • The SDK now reports each payment journey to HiPay, carrying its own identity and version, your order id, HiPay's transaction reference, the amount and your application's identifier — no card data and no payer identity. Nothing to configure, but you have to declare it when you publish: see the Privacy page of the documentation.
  • Optional gateway parameters on an order, for the fields the SDK does not model as its own: a per-order notification URL, the bank-statement descriptor, the basket, your own data shown on the transaction in the back office, and any other parameter the gateway accepts. Nothing changes for an order that does not use them.
  • The vertical gap between card fields is now settable on the shared style. Left alone it keeps each platform's current spacing, so an existing integration's layout does not move.
  • The card controller reports which step of a payment it is on — tokenizing, creating the order, authenticating, confirming — so a host can show its own progress wording instead of one opaque spinner. Read-only, and null when idle.

Changed

  • BREAKING — the shared card style takes one more value. Swift code that builds it directly must pass it; Kotlin code compiles unchanged but must be recompiled against this version.
  • A connection lost during a payment no longer reports a failure. The outcome comes back as pending instead: the SDK cannot know whether the gateway took the payment, and a failure would be the one way it could make you refuse an order that was charged. Check the outcome rather than assuming it failed.
  • BREAKING — the card component no longer adds its own outer margin on Android and Compose Multiplatform, matching iOS. Nothing fails to build: your layout simply tightens by that amount wherever you relied on it. Add your own padding around the component.
  • The entered card is now cleared when a payment ends, whatever the outcome. Previously a refused order left the fields filled; a payer retrying after a refusal now re-enters the card.
  • The iOS framework is now dynamic, and ships its debug symbols. Xcode embeds and signs it as before and files its .dSYM alongside your own, so a crash inside the SDK can be symbolicated and App Store Connect no longer flags a symbol file as missing. Nothing to change in your integration.

1.1.0

Added

  • Apple Pay on iOS — button, availability check and the full payment. Separate opt-in artifact.
  • One-click payments — a returning payer pays from a card saved on the device, up to 20 cards.

Changed

  • BREAKING — the payment-return deep-link host is hipay-payments (was hipay-fullservice). Update your Android/CMP intent-filter and any callback URL you build: a miss breaks it silently.
  • The default appearance follows the host's light/dark theme, and labels float above the field.

1.0.0

First public release.

The 0.1.0 to 0.3.0 tags were internal developer previews, never published to Maven Central or SPM. There is no 0.x migration path. Integration steps and API reference: see the documentation for this version.

Payment

  • A single call runs the whole payment — tokenization, order, authentication and confirmation — and returns the final result as confirmed by the server.
  • Card numbers and security codes stay inside the component. They never reach your code and are never stored.
  • A headless mode remains available if you prefer to drive each step yourself.
  • The card fields lock themselves while a payment is in flight, so a double tap cannot start two.

3-D Secure

  • The SDK opens and handles the authentication challenge itself, in-app on iOS and in a Chrome Custom Tab on Android. Android hosts declare one redirect intent-filter.
  • If the payer closes the challenge, or returns without a callback, the SDK asks the server for the real state rather than assuming a cancellation — a captured payment is never reported as aborted.
  • When the server cannot be reached at that moment, the result is explicitly undetermined rather than a wrong answer.
  • Authentication is not requested by default; the policy is chosen per payment.

Card networks and validation

  • The merchant account decides which card networks are accepted. A restriction set by the integrator can only narrow that list, never extend it.
  • A card the account refuses is now rejected in the form — no brand icon, no way to submit — instead of failing at the gateway once the payer has filled everything in.
  • If the account cannot be queried, card entry stays open rather than blocking the payer.
  • Co-branded cards (CB with Visa or Mastercard, Bancontact) offer both networks, with the domestic one preselected.
  • Field errors appear as soon as they are certain, and wait for the server verdict as long as the card could still turn out to be valid.

Appearance and language

  • The colors, sizes and fonts of the card fields are set through one shared style, identical on the three platforms.
  • The default look is light-mode. Dark-mode apps should supply their own colors until dark theme ships.
  • French, English and Italian, following the device language, with English as the fallback.
  • The language can be set once for the whole SDK and changed at runtime — every visible card updates, with no re-initialization.

Distribution

  • Android and KMP through Maven Central, iOS through Swift Package Manager. Apache-2.0.