All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Added support for SCA (Strong Customer Authentication) transaction type.
- New
SCAbusiness object for handling SCA transactions - New methods in
Unzerfacade:sca(),fetchSCA(),authorizeWithSCA(),chargeWithSCA() - SCA transactions can be used for 3DS2 authentication flows
- New
- Added
subscriptionAgreementURL field to PayPage V2 request (com.unzer.payment.resources.PaypageV2).
- Deprecated Giropay payment type (
com.unzer.payment.paymenttypes.Giropay).
- Add
onlineTransferobject to additionalTransactionData.
- Fix the issue that payment state "create" is not mapped and returns
nullas a consequence.
- Added support for payment method
Wero.
- Fix
risk.registrationDateformat for paypage creation.
- Change paypage v2 test domain ending from ".io" to ".com".
- Add Styling properties for v2 Paypage
com.unzer.payment.resources.PaypageV2:basketBackgroundColorpaymentFormBackgroundColor
- Add prototypes for v2 Customer:
com.unzer.payment.CustomerV2. - Add prototypes for v3 Basket:
com.unzer.payment.BasketV3.
- Added support for "Open Banking" payment method.
- Added support for linkpay v2.
- Added support for
preauthorizetransaction.
- Update paypage v2 styling parameter to match API.
- Added support for paypage v2.
Support for Click To Pay payment method is added to SDK.
- Added
ClickToPaypayment method. - Add exemption type for transaction risk analysis:
com.unzer.payment.models.CardTransactionData.ExemptionType.TRA
Twint payment method is added to Java SDK.
- Added
Twintpayment method.
Google Pay payment method is added to Java SDK.
- Added
GooglePaypayment method.
- Fixed
Unzer:updateChargeandUnzer:updateAuthorizationused wrong endpoints - SEPA Direct Debit is restored from deprecation. See:
com.unzer.payment.paymenttypes.SepaDirectDebit
Consists of internal refactorings and improvements.
- Added
com.unzer.payment.Resourceinterface.
- Renamed
AbstractTransaction->BaseTransaction - Refactored
UrlUtil: moved Resource URL construction logic toResource-classes. - Every Unzer Payment Gateway resource implements
Resourceinstead ofPaymentType:Customer,Basket,Payment, etc. - Renamed
com.unzer.payment.CustomerCompanyDatatoCompanyInfo - Renamed property and methods of
com.unzer.payment.Customer.Customerto match class name:- property
companyData->companyInfo - method
getCompanyData()->getCompanyInfo() - method
setCompanyData()->setCompanyInfo()
- property
- Removed
PaymentType::getId()andPaymentType::getTypeUrl()methods. UseResource::getId()andResource::getUrl()instead.
- Added Paylater Direct Debit payment method
- Deprecated Sepa Direct Debit and Sepa Direct Debit Secured payment methods. Please, use Paylater Direct Debit instead.
This release adds support for PayU payment method and fixes some LinkPay issues
- Added PayU payment method support
- Added BasePaypage.Action set of constants for Authorize and Charge actions for Paypage/Linkpay
- Added Authorize support for Linkpay:
Linkpay.setAction(BasePaypage.Action.AUTHORIZE)
- Deprecated
Paypage.Action. UseBasePaypage.Actioninstead
This Java SDK version delivers Unzer Paylater Installment to Java projects.
- Add Paylater Installment support:
- Add
com.unzer.payment.service.PaymentService.fetchPaylaterInstallmentPlans()to get available installment plans. - Add payment type
com.unzer.payment.paymenttypes.PaylaterInstallment.
- Add
com.unzer.payment.fetchPaymentnow fetches chargeback transactions of the payment. Seecom.unzer.payment.Payment.chargebackList- Added field
paypageIdto payment and its transactions (authorize, charge, cancel, chargeback). See:com.unzer.payment.AbstractPayment.paypageId,com.unzer.payment.AbstractTransaction.paypageId
- Refactored internal class
com.unzer.payment.communication.mapper.ApiToSdkConverter:- Unified parameter names to
srcandoutput - Changed parameters order. First parameter is
src, second isoutput
- Unified parameter names to
- Renamed internal classes at
com.unzer.payment.communication.json:JsonPayment->ApiPaymentJsonTransaction->ApiTransaction
- Installment Secured:
- method
com.unzer.payment.Unzer.installmentSecuredRates() - class
com.unzer.payment.business.paymenttypes.InstallmentSecuredRatePlan - class
com.unzer.payment.business.paymenttypes.InstallmentSecuredRate
- method
This release adds functionality to fetch payment page
- Added
com.unzer.payment.Unzer.fetchPaypage
- Changed return value for
com.unzer.payment.Paypage.getTypeUrl. Was:paypage/chargeorpaypage/authorize, now:paypage
This release brings liability and exemption type support to Java SDK
- Added
LiabilityandExemptionTypefields toAdditionalTransactionData.CardTransactionData
- Removed resource
version.properties. Version is set at generate-sources phase. - Removed class
com.unzer.payment.exceptions.PropertiesException - Removed deprecated method
com.unzer.payment.util.SDKInfo::getVersion(). Please, usecom.unzer.payment.util.SDKInfo.VERSIONinstead
- Enriched request and response logging
- Fixed
AdditionalTransactionData.RecurrenceTypefield is empty for fetched transactions.
This release updates dependencies with security issues
- Upgraded Apache HttpClient from version 4 to version 5.
- Made
HttpCommunicationExceptionunchecked exception. - Updated
jackson-coredependency.
This release introduces Unzer PayPal Express in Java SDK.
- Added Paypal-Express support:
- Extended
AdditionalTransactionDatawithpaypal.checkoutTypefield. Seecom.unzer.payment.models.AdditionalTransactionData.setPaypal. - Defined
RESUMEDvalue forcom.unzer.payment.AbstractTransaction.Status - Added
com.unzer.payment.Unzer::updateCharge(),com.unzer.payment.Unzer::updateAuthorization()which must be invoked after Paypal-Express transaction is resumed.
- Extended
- Added fields
orderIdandinvoiceIdtoAuthorize,ChargeandCanceltransactions. - Added authorize support for Paypage. Use
Paypage::setAction(Paypage.Action.AUTHORIZE) - Added new capture (charge authorization) methods. See:
com.unzer.payment.Unzer.chargeAuthorization(charge)andcom.unzer.payment.Unzer.chargeAuthorization(paymentId, charge)
- Reduced multiple
com.unzer.payment.service.PaymentService.chargeAuthorizationmethods to one withChargeargument.
- Deprecated
com.unzer.payment.paymenttypes.Invoice. Usecom.unzer.payment.paymenttypes.PaylaterInvoiceinstead - Deprecated behavioral methods for data objects. Please, use Unzer facade instead. List of deprecations:
AbstractTransaction(base class ofAuthorization,Cancel,Charge,Payout,Recurring,Shipment,MarketplaceAuthorization,MarketplaceCharge,MarketplacePayment,MarketplaceCancel):getUnzer/setUnzer
Charge:cancel
Authorization:chargecancel
Payment:chargeauthorizecancel
MarketplaceCharge:cancel
MarketplaceAuthorization:chargecancel
MarketplacePayment:marketplaceFullChargesCancelfullChargeAuthorizationsmarketplaceFullAuthorizeCancel
AbstractPayment:fetchBasket,fetchMetadata,fetchCustomer,fetchPaymentType
This release switches Java SDK version to a traditional 3-digit semantic versioning style.
- Removed first digit at semver:
API_VERSION.MAJOR.MINOR.PATCH
New version of Java SDK is not configurable via unzer.properties file anymore.
- Removed class
com.unzer.payment.service.PropertiesUtil, unzer.properties file andprivatekey1,privatekey2,privatekey3,publickey1,marketplacekeyand corresponding constantsPUBLIC_KEY1,PRIVATE_KEY1,PRIVATE_KEY2,PRIVATE_KEY3,MARKETPLACE_PRIVATE_KEY. Since this properties were used only for internal testing purpose. - Removed property
applepay.validValidationUrlsfromunzer.properties. Usecom.unzer.payment.util.ApplePayAdapterUtil.replaceValidationUrlsinstead - Changed method
com.unzer.payment.util.ApplePayAdapterUtil.getPlainDomainName()modifier to private. - Removed
unzer.propertiesfile. Usecom.unzer.payment.util.ApplePayAdapterUtil.setCustomAppleValidationUrlsto configure ApplePay validation urls.
- Upgraded
jackson-databinddependency. See: CVE-2022-42004
This release adds Klarna payment type to Java SDK.
- Added payment type
Klarna. - Added
languagefield toCustomerresource. - Added
termsAndConditionsUrlandprivacyPolicyUrlfields toAdditionalTransactionDataresource
- Fixed typo
ShippingAddress.Type:DIFFERENT_ADDRESSES->ShippingAddress.Type:DIFFERENT_ADDRESS. This typo caused errors on authorize/charge in some payment cases - Fixed (de-)serialization of
AbstractTransactioncause infinite Webhook calls.
This release brings Unzer Paylater Invoice payment type support to Java SDK.
- Added payment type Paylater Invoice. See more at Unzer Docs
- Added ability to set client IP. Use
com.unzer.payment.communication.impl.HttpClientBasedRestCommunication.HttpClientBasedRestCommunication(java.util.Locale, java.lang.String)andcom.unzer.payment.Unzer.Unzer(java.lang.String, java.util.Locale, java.lang.String, java.lang.String)to set client ip. - Added
com.unzer.payment.Unzer.cancelCharge(java.lang.String, java.math.BigDecimal)to cancel Paylater charges.
- Fixed: customer salutation is null, because of marshalling/unmarshalling issue.
- Fixed: cancel InvoiceSecured charge failed with error
API.340.100.024: Reason code is mandatory for the payment type INVOICE_SECURED. Please, usecom.unzer.payment.Cancel.setReasonCodeto set reason code andcom.unzer.payment.Unzer.cancelCharge(java.lang.String, java.lang.String, com.unzer.payment.Cancel)to cancel InvoiceSecured charge.
- Removed unused
com.unzer.payment.UnsupportedPaymentTypeException
- Deprecated
com.unzer.payment.util.SDKInfo.getVersion(). Usecom.unzer.payment.util.SDKInfo.VERSIONinstead. - Deprecated payment type
com.unzer.payment.paymenttypes.InvoiceSecured. Usecom.unzer.payment.paymenttypes.PaylaterInvoiceinstead. - Deprecated
com.unzer.payment.Customer.setShippingAddress(com.unzer.payment.Address). Usecom.unzer.payment.Customer.setShippingAddress(com.unzer.payment.ShippingAddress)instead
- Changed type of
com.unzer.payment.Customer.shippingAddressand according getter/setter:com.unzer.payment.Address->com.unzer.payment.ShippingAddress. UseShippingAddress.of(Address, Type)to adapt
-
Removed
log4j-corefrom Maven dependencies. Please, provide logger implementation on your own -
Renamed enum value
AbstractTransaction.Status.ERRRORtoAbstractTransaction.Status.ERROR -
Renamed enum value
Paypage.Status.ERRRORtoPaypage.Status.ERROR
-
com.unzer.payment.service.UrlUtil#getUrl(String)will not be part of java-sdk, because it has nothing to do with unzer/sdk specific logic. If you rely on this method, please, replace it withjava.net.URL#URL(String)constructor call -
Deprecated Basket getters/setters:
amountTotalVat,amountTotalGross,amountTotalDiscount -
Deprecated BasketItem getters/setters:
amountDiscount,amountGross,amountVat,amountPerUnit,amountNet
-
Basket v2 support:
-
Basket getters/setters:
totalValueGross -
BasketItem getters/setters:
amountPerUnitGross,amountDiscountPerUnitGross
-
- Remove
log.errorin catch clausecom.unzer.payment.service.PropertiesUtil#loadProperties()because the exception with exact same message is thrown after thelog.errorcall.
- Fix log message of
com.unzer.payment.service.UrlUtil#getUrl(String). It was not formatted and contained%sinstead of values
-
Type of
BasketItemtype field (wasString, becomeBasketItem.Type) -
Type of
BasketItemvatfield (wasInteger, becomeBigDecimal)
- Upgrade of the used gson Dependencies from 2.8.6 to 2.8.9
- Upgrade of the used faster-xml dependencies from 2.11.3 to 2.12.7
- Upgrade of the used log4j dependencies from 2.17.1 to 2.18.0
-
Added Unzer-Logo and updated the reference in Readme-File.
-
Added Json-Validation to JsonParser-Class before real Json-Deserialization happens.
-
Added Twitter-Handle to Readme-File.
- Documentation-Link in Readme-File has been changed.
- Several minor improvements.
-
Upgrade of the used Log4j Dependencies to fix the Log4j Zero-Day-Exploit from 2.16.0 to 2.17.0.
-
Handling of PaymentException-Message has been changed to now return correct Message on occurrence.
-
Several minor improvements.
- POM-File Updates.
- Several minor improvements.
- Upgrade of the used Log4j Dependencies to fix the Log4j Zero-Day-Exploit.
- Bumped log4j-Dependency from 2.15.0 to 2.16.0
- Bumped Maven-Dependency-Check-Dependency from 5.3.2 to 6.5.0
- Bumped httpclient from 4.5.12 to 4.5.13
- Bumped junit from 4.13 to 4.13.1
- Bumped jsoup from 1.13.1 to 1.14.2
- Increased Deployment Timeout for Sonatype to 20 Minutes.
- Several minor improvements.
- Upgrade of the used Log4j Dependencies to fix the Log4j Zero-Day-Exploit.
- Several minor improvements.
-
Changed the DateTime-Handling from PAPI so that all timezones will be handled correctly in parsing and formatting.
-
Several minor improvements.
- Enabled to set RecurrenceType for Authorize-, Charge- and Recurring-Requests.
- Added SDK-Info to HTTP-Request-Header like SDK-Type or SDK-Version.
- Several minor improvements.
- Added JAXB as a separate library to support newer Java versions.
-
Changed
ApplePay-Paymenttype accordingly to new Tech-Spec.- Added new Parameters to
ApplePay-Class. - Added new Test-Functions for
ApplePay-Class andApplePayHeader-Class. - Added Constructors for
ApplePay-Class andApplePayHeader-Class with mandatory Parameters.
- Added new Parameters to
-
Changed Documentation Link in Readme-File.
- Fixed the Way how the PAPI-Keypairs are loaded on Unzer Object Creation and eliminated the NullPointerException which was thrown.
- Some Tests were failing because of missing Merchant Configuration of the used Test-Merchant.
-
Added mapping of old payment type ids to the new payment type resources.
- e.g.
InvoiceGuaranteedandInvoiceFactoringreplaced byInvoiceSecured.
- e.g.
-
Add email property to payment type
cardto meet 3Ds2.x regulations.
- Rebranded SDK to Unzer.
- Removed payment type string from URL when fetching a payment type resource.
- Replace payment methods guaranteed/factoring by secured payment methods, i.e.:
InvoiceGuaranteedandInvoiceFactoringreplaced byInvoiceSecuredSepaDirectDebitGuaranteedreplaced bySepaDirectDebitSecuredHirePurchaseDirectDebitreplaced byInstallmentSecured- Basket is now mandatory for all those payment types above.
- Several minor changes.
- Changed handling of Keypairs for tests.
- Remove deprecated methods.
- getBasketImage
- setBasketImage
- getDescriptionMain
- setDescriptionMain
- getDescriptionSmall
- setDescriptionSmall
- cancelAuthorization
- Remove deprecated classes
- RestCommunication