diff --git a/.github/workflows/java-workflow.yml b/.github/workflows/java-workflow.yml index 80a32f7c..418ccba4 100644 --- a/.github/workflows/java-workflow.yml +++ b/.github/workflows/java-workflow.yml @@ -32,7 +32,7 @@ jobs: uses: actions/checkout@v4 with: repository: 'authorizenet/sample-code-java' - ref: 'future-alternate' + ref: 'master' path: ${{env.sample_code_java}} - name: Setup Java 17 to build the SDK uses: actions/setup-java@v2 diff --git a/README.md b/README.md index a592d4f0..c15917af 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,49 @@ # Authorize.Net Java SDK -[![Travis CI Status](https://travis-ci.org/AuthorizeNet/sdk-java.svg?branch=master)](https://travis-ci.org/AuthorizeNet/sdk-java) -[![Code Climate](https://codeclimate.com/github/AuthorizeNet/sdk-java/badges/gpa.svg)](https://codeclimate.com/github/AuthorizeNet/sdk-java) +[![Authorize.net Java CI](https://github.com/AuthorizeNet/sdk-java/actions/workflows/java-workflow.yml/badge.svg?branch=master)](https://github.com/AuthorizeNet/sdk-java/actions/workflows/java-workflow.yml) [![Maven Central](https://img.shields.io/maven-central/v/net.authorize/anet-java-sdk.svg?style=flat)](http://mvnrepository.com/artifact/net.authorize/anet-java-sdk) - + +## IMPORTANT NOTE + +### Support for Java 1.8 + +**A new version that supports Java 1.8 is `v2.0.7`. This is the _LAST_ release with support for Java 1.8.** + +### Support for Java 9 and higher + +**A new version of the SDK has been released that supports Java 9 and higher. This new version is `v3.0.0`.** + ## Requirements -* JDK 1.5.0 to JDK 1.8.0 +* JDK 9 and higher * Ant 1.6.2 or higher (build SDK only) * Maven 2.2.0 or higher (build SDK only) * An Authorize.Net account (see _Registration & Configuration_ section below) _Note 1: Support for building the SDK with either Ant or Maven has been made. Please see the respective build processes below. All initial jars and docs were built with Ant, however._ -_Note 2: Support for higher versions of JDK (>= 1.9.0) has not been made available._ - ### Dependencies -* commons-logging-1.1.1.jar : logging -* log4j-2.17.1.jar : logging -* httpclient-4.0.1.jar : http communication with the payment gateway -* httpcore-4.0.1.jar : http communication with the payment gateway -* junit-4.8.2.jar : unit testing -* hamcrest-core-1.3.jar : unit testing -* hamcrest-library-1.3.jar : unit testing -* jmock-2.6.0.jar : unit testing +* commons-logging-1.3.3 +* log4j-2.23.1 +* log4j-jcl-2.23.1 +* log4j-api-2.23.1 +* log4j-core-2.23.1 +* log4j-1.2-api-2.23.1 +* httpclient5-5.3.1 +* httpcore5-5.2.5 +* gson-2.11.0 +* jakarta.xml.bind-api-4.0.2 +* jaxb-runtime-4.0.5 +* jackson-module-jakarta-xmlbind-annotations-2.17.2 +* junit-4.13.1 +* hamcrest-core-1.3 +* hamcrest-library-1.3 +* jmock-2.6.0 ### Migrating from older versions -Since August 2018, the Authorize.Net API has been reorganized to be more merchant focused. Authorize.Net AIM, ARB, CIM, Transaction Reporting, and SIM classes have been deprecated in favor of `net\authorize\api`. To see the full list of mapping of new features corresponding to the deprecated features, see [MIGRATING.md](MIGRATING.md). +Since August 2018, the Authorize.Net API has been reorganized to be more merchant focused. Authorize.Net AIM, ARB, CIM, Transaction Reporting, and SIM classes have been deprecated in favor of `net\authorize\api`. To see the full list of mapping of new features corresponding to the deprecated features, see [MIGRATING.md](MIGRATING.md). ### Contribution - - If you need information or clarification about Authorize.Net features, create an issue with your question. You can also search the [Authorize.Net developer community](https://community.developer.authorize.net/) for discussions related to your question. + - If you need information or clarification about Authorize.Net features, create an issue with your question. You can also search the [Authorize.Net developer community](https://community.developer.authorize.net/) for discussions related to your question. - Before creating pull requests, read [the contributors guide](CONTRIBUTING.md). ### TLS 1.2 @@ -68,7 +83,7 @@ Authorize.Net maintains a complete sandbox environment for testing and developme ApiOperationBase.setEnvironment(Environment.PRODUCTION); ``` -API credentials are different for each environment, so be sure to switch to the appropriate credentials when switching environments. +API credentials are different for each environment, so be sure to switch to the appropriate credentials when switching environments. ## SDK Usage Examples and Sample Code When using this SDK, downloading the Authorize.Net sample code repository is recommended. @@ -127,27 +142,22 @@ To create the javadocs: ### Testing Guide For additional help in testing your own code, Authorize.Net maintains a [comprehensive testing guide](http://developer.authorize.net/hello_world/testing_guide/) that includes test credit card numbers to use and special triggers to generate certain responses from the sandbox environment. -## Logging Sensitive Data - -The Authorize.Net Java SDK uses Log4J framework for logging purposes. Enable the logger by keeping a configuration file `Log4j.properties` in the resources folder of the application. A sample [Log4.properties](https://github.com/AuthorizeNet/sdk-java/blob/master/resources/log4j.properties) file has been provided as a reference. - -The possible log levels are `DEBUG, INFO, WARN, ERROR` and `FATAL`. There is a new pattern layout introduced to mask sensitive data while logging and can be used with the application by providing the following configurations in the `Log4j.properties` file: - -``` -// Default configuration which logs the entries in clear text - -log4j.appender.S.layout = org.apache.log4j.PatternLayout -log4j.appender.R.layout = org.apache.log4j.PatternLayout - -// Configuration which masks the sensitive data in the log entries - -log4j.appender.S.layout = net.authorize.util.SensitiveFilterLayout -log4j.appender.R.layout = net.authorize.util.SensitiveFilterLayout - -``` - -By default the logger comes with two appenders, **console** and **file transport**. - +## Logging Sensitive Data + +The Authorize.Net Java SDK uses Log4J2 framework for logging purposes. Enable the logger by keeping a configuration file `log4j2.xml` in the resources folder of the application. A sample [log4j2.xml](https://github.com/AuthorizeNet/sdk-java/blob/master/resources/log4j2.xml) file has been provided as a reference. + +The possible log levels are `DEBUG, INFO, WARN, ERROR` and `FATAL`. There is a new pattern layout introduced to mask sensitive data while logging and can be used with the application by making the following configurations in the `log4j2.xml` file: + +1. Create your own appender under `` and insert the `` section. (Example is present in the `log4j2.xml` file) + * To enable masking of sensitive data, replace `%m` with `%maskedMessage`. + * To disable masking, replace `%maskedMessage` with `%m`. +2. Create a logger under `` +3. The `name` field in the `` should contain the namespace from where log messages needs to be written to file. +4. Attach an `` section where the `ref` field uses one of the Appenders that have been created under the `` section. +5. Do **NOT** modify the logger with ``. + +By default the logger comes with two appenders, **LogToConsole** and **RollingFile**. + The sensitive fields that are masked during logging are: * Card Number * Card Code @@ -156,7 +166,7 @@ The sensitive fields that are masked during logging are: * Account Number * Name on Account -There is also a list of regular expressions which the sensitive logger uses to mask credit card numbers while logging. +There is also a list of regular expressions which the sensitive logger uses to mask credit card numbers while logging. More information on the regular expressions used during sensitive data logging [can be found here](https://github.com/AuthorizeNet/sdk-java/blob/master/resources/AuthorizedNetSensitiveTagsConfig.json). diff --git a/pom.xml b/pom.xml index 75e17b62..91f70ccb 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ net.authorize anet-java-sdk jar - 2.0.7-SNAPSHOT + 3.0.1-SNAPSHOT Authorize.Net Java SDK Authorize.Net SDK includes standard payments, recurring billing, and customer profiles. http://developer.authorize.net diff --git a/src/main/java/net/authorize/api/controller/base/ApiOperationBase.java b/src/main/java/net/authorize/api/controller/base/ApiOperationBase.java index 52e3d7cc..c59b2c55 100644 --- a/src/main/java/net/authorize/api/controller/base/ApiOperationBase.java +++ b/src/main/java/net/authorize/api/controller/base/ApiOperationBase.java @@ -121,12 +121,11 @@ public S executeWithApiResponse(Environment environment) { return this.getApiResponse(); } - final String nullEnvironmentErrorMessage = "Environment not set. Set environment using setter or use overloaded method to pass appropriate environment"; public void execute() { if ( null == ApiOperationBase.getEnvironment()) { - throw new InvalidParameterException(nullEnvironmentErrorMessage); + throw new InvalidParameterException(Constants.NULL_ENVIRONMENT_ERROR_MESSAGE); } else { @@ -139,7 +138,7 @@ public void execute(Environment environment) { logger.debug(String.format("Executing Request:'%s'", this.getApiRequest())); - if ( null == environment) throw new InvalidParameterException(nullEnvironmentErrorMessage); + if ( null == environment) throw new InvalidParameterException(Constants.NULL_ENVIRONMENT_ERROR_MESSAGE); ANetApiResponse httpApiResponse = HttpUtility.postData(environment, this.getApiRequest(), this.responseClass); if ( null != httpApiResponse) diff --git a/src/main/java/net/authorize/util/Constants.java b/src/main/java/net/authorize/util/Constants.java index 2a2b42c5..500f920c 100644 --- a/src/main/java/net/authorize/util/Constants.java +++ b/src/main/java/net/authorize/util/Constants.java @@ -36,4 +36,5 @@ public final class Constants { public static final int HTTP_READ_TIME_OUT_DEFAULT_VALUE = 30000; public static final String CLIENT_ID = "sdk-java-2.0.3"; + public static final String NULL_ENVIRONMENT_ERROR_MESSAGE = "Environment not set. Set environment using setter or use overloaded method to pass appropriate environment"; } diff --git a/src/main/java/net/authorize/util/HttpClient.java b/src/main/java/net/authorize/util/HttpClient.java index d864dc36..f1e04cdc 100644 --- a/src/main/java/net/authorize/util/HttpClient.java +++ b/src/main/java/net/authorize/util/HttpClient.java @@ -185,7 +185,7 @@ static CloseableHttpClient getHttpsClient() throws Exception { proxySet = true; } else { - LogHelper.warn(logger, "Defaulting to non-proxy environment"); + if( UseProxy ) { LogHelper.warn(logger, "Defaulting to non-proxy environment");} httpClient = HttpClientBuilder .create()