Square Trade Insurance

Change Log

9th January 2024

Jonas Falk Nielsen

1.0

Doc created.

Introduction

The rator-insurance-no-squaretrade module is a client integration towards the Square trade insurance using jersey for its REST client implementation.

Include the maven artifact in the pom.xml of parent projects to use the functionality.

Maven Artifact

<dependency>  

    <groupId>com.cdrator.integration.insurance</groupId>
<artifactId>rator-insurance-no-squaretrade</artifactId>
<version>1.0-SNAPSHOT</version>

</dependency>

The following dependencies are also needed at runtime, if not already included in the client project, as they are provided scope in the integration module and thus does not get transitively added to a build:

com.cdrator.integration.utils.rator-utils-restutils
com.cdrator.core:rator-engine-api
com.cdrator.util.rator-logging
com.cdrator.workflow.hookpoint-stats
com.cdrator.workflow.hookpoint-documentation
com.fasterxml.jackson.core:jackson-databind
com.fasterxml.jackson.core:jackson-core
org.glassfish.jersey.media:jersey-media-json-jackson
javax.ws.rs:javax.ws.rs-api
org.glassfish.jersey.core:jersey-client
com.google.guava:guava

Source code for the module can be found in bitbucket: https://bitbucket.org/enghouseglobal/nw-ra-rator-insurance-no-squaretrade

Square Trade API Documentation

The API is documented in these pdf’s, note that as they are added as documents, they might not be up to date.

Also note, that they are not 100% correct, a couple of errors have been regarding the URL’s and the multiple credentials. (see under configuration)

Implementation

The project consist of a new engine, as it is heavily dependent generic order and custom logic in the customer project.

Square Trade Order Inquiry Engine

The engine (com.cdrator.insurance.inquiryengine.SquareTradeOrderInquiryEngine) checks waiting SquareTradeOrderInquiry objects where the LAST_CHECKED_DATE is before sysdate + a configurable amount of seconds.
it is then inquiring about the status with Square Trade and updating its own status and the status of the generic order according to the response.

EngineParameters

One optional extra parameter exist:

Name

Description

Default value

Name

Description

Default value

SECONDS_BEFORE_CHECKING

Minimum amount of seconds passed before checking an order again.

300

EngineStartupCheck

Startup check implementation. No startup checks are required, so this just returns true. Exists to enable the implementation of startup checks if required.

EngineQueueLoader

Uses the broker to retrieve generic orders where:

  • status id is 2 (processing)

  • partner code is “SQUARE_TRADE”

  • more than SECONDS_BEFORE_CHECKING have passed since the record was last checked

EngineHandler

The EngineHandler will:

  • Receive a list of generic orders

  • Retrieve the status of the order from square trade

  • If response is either success or error, update the order

  • Regardless of the response, update the last checked date to sysdate

Configuration

Parameters

Square trade allows for multiple set of parameters, they are configured in the parameter tree under the node INSURANCE.SQUARE_TRADE.(credentialParameterName).

Note that the credentialParameterName is optional, but advised, as squaretrade currently requires different credentials depending on the SKU.

The following parameters are used in the rator-insurance-no-squaretrade module.

INSURANCE.SQUARE_TRADE

INSURANCE.SQUARE_TRADE

NAME

EXAMPLE VALUE

MANDATORY

DESCRIPTION

BASE_URL

api-stage4.squaretrade.com (test)

Yes

The base endpoint for the Telenor Wholesale REST API.

CLIENT_ID

N074R341V41u38u7C10533n0u9hR19h7

Yes

The value to use for the client_id part of the client_id:client_secret credentials that must be Base64-encoded and can then be used to call endpoint oauth/v2/token; see also parameter CLIENT_SECRET.

CLIENT_SECRET

4n07h3rF4k3V41u3

Yes

The value to use for the client_secret part of the client_id:client_secret credentials that must be Base64-encoded and can then be used to call endpoint oauth/v2/token; see also parameter CLIENT_ID.

TOKEN

 

No

If branded USERNAME,PASSWORD,CLIENT_ID, CLIENT_SECRET parameters are used, this parameter has to be created manually.

The currently valid token for authorization.

This will be automatically populated if there is only one set of credentials used. If multiple sets of credentials (USERNAME,PASSWORD,CLIENT_ID, CLIENT_SECRET) are used via branding of parameters, in combination with a set of non-branded/default credentials, this parameter has to be created beforehand, so as not to interfere with the non-branded/default one.

TOKEN_EXPIRY

 

No

If branded USERNAME,PASSWORD,CLIENT_ID, CLIENT_SECRET parameters are used, this parameter has to be created manually.

The point in time at which the current token will expire.

This will be automatically populated if there is only one set of credentials used. If multiple sets of credentials (USERNAME,PASSWORD,CLIENT_ID, CLIENT_SECRET) are used via branding of parameters, in combination with a set of non-branded/default credentials, this parameter has to be created beforehand, so as not to interfere with the non-branded/default one.

MERCHANT_ID

RATOR

Yes

Despite being sent as part of the payload for a new insurance request, merchant id is part of the credentials, as a merchant id is linked to a specific client id and secret.

Tables

One new table needs to be added to handle the inquiry status:

SQUARE_TRADE_ORDER_INQUIRY

SQUARE_TRADE_ORDER_INQUIRY

NAME

DESCRIPTION

ID

Standard rator id.

STATUS_ID

The status of the inquiring, can be 0 (waiting), 1 (success) and 5 (error)

GENERIC_ORDER_ID

The id of the generic order this was created from.

SQUARE_TRADE_ID

The instance id sent to Square Trade.

CREATE_DATE

The date this object was created.

LAST_CHECKED_DATE

The last time this has been inquired.

ERROR_MESSAGE

Any error message returned from Square Trade.

CREDENTIAL_PARAMETER_NAME

The parameter node to find the credentials under.

Implementation in customer project.

Due to how much of the required data that is not stored in rator core, the entire process of creating request, filling out the required data and sending the request, has to done in the customer project.

Logging

Logging of the connection is done in the CLIENT_LOG table with the client name SQUARE_TRADE and either the inquiry or generic order id.

Examples of the exact payloads can be seen in the attached documentation.