Repository navigation
Release 7.0.0
This is a major release containing significant API breaking changes as part of a large internal refactoring. Please review the migration notes below before upgrading.
Breaking Changes
CardTransactionManager removed → JudoCardTransactionClient
CardTransactionManager (singleton, activity-bound) has been replaced by the stateless JudoCardTransactionClient.
Before:
CardTransactionManager.getInstance(activity)
.configureWith(judo)
.registerResultListener(listener)
.payment(transactionDetails, tag)After:
val client = JudoCardTransactionClient.create(context, judo)
client.payment(context, transactionDetails, callback)
// or with coroutines:
val result = client.payment(context, transactionDetails)CardTransactionManagerResultListener → JudoCardTransactionCallback (same single-method contract).
ActivityAwareComponent, and SingletonHolder have been removed.
New Activity Result API (JudoActivityResultContracts)
A set of typed ActivityResultContract implementations is now available, replacing direct Intent construction.
val launcher = registerForActivityResult(JudoActivityResultContracts.CardPayment()) { result ->
// handle JudoPaymentResult
}
launcher.launch(judo)Available contracts: CardPayment, CardPreAuth, CardTokenPayment, CardTokenPreAuth, CheckCard, CreateCardToken, GooglePay, PreAuthGooglePay, PaymentMethods, PreAuthPaymentMethods, ServerToServerPaymentMethods.
JudoActivity.Companion.createIntent(context, judo) is also available for cases where a direct Intent is still needed.
New APIs
JudoCardTransactionClient— context-based, coroutine and callback-friendly card transaction client.JudoCardTransactionCallback— single-method result callback interface.JudoActivityResultContracts— typed Activity Result contracts per payment type.
Dependency Updates
| Dependency | Before | After |
|---|---|---|
judo3ds2 |
1.8.0 | 2.0.1 |
ravelin-encrypt |
3.1.0 | 7.0.0 |
In details
- ravelin-encrypt library version bump by @stefan-tudor in #340
- Project refactoring by @stefan-tudor in #337
- Fixes failing create-payment-session in example-app by @stefan-tudor in #341
- Fix/none/create payment session example app by @stefan-tudor in #342
- Addresses: CT-3237, CT-3238, CT-3239, CT-3240 by @stefan-tudor in #343
- CT-3246 Fixes isExpiredInTwoMonths logic by @RafalOzogJudopay in #345
- CT-3245 Fixes AVS postcode not being initially auto-validated by @RafalOzogJudopay in #344
- Fixes hidden AVS countries by @RafalOzogJudopay in #347
- 3DS SDK version bump and cleanup by @stefan-tudor in #346
- chore: update dependency ruby to v3.4.9 by @judo-ci in #339
- fix: update googletruth to v1.4.5 by @judo-ci in #348
- CT-3249 Fix for the Token Payments screen rotation state being lost by @RafalOzogJudopay in #349
Full Changelog: v6.2.0...v7.0.0