Retrieve CVM Signature

A new field for signature option is added to Converge terminal setting. The following code demonstrates how to obtain the value from Commerce SDK.

Default Use

Java (Android and Windows)

// In the callback method accountInformationRetrievalDidSucceed(

// ECLAccountInterface eclAccountInterface,

// ECLAccountInformation accountInformation)

// on interface ECLAccountInformationRetrievalListener

// Signature options can be obtained by the following codes

ECLTerminalConfiguration terminalConfig = eclAccountInterface.getTerminalConfiguration();

// Get signature option set in Converge Terminal

ECLSignatureOption signatureOptionConvergeTerminal = terminalConfig.getTerminalSignatureOption();

// Get applied signature option for transactions. Its value is same as signatureOptionTerminal if not

// overridden by POS system otherwise is the value set by POS system (see the section below)

ECLSignatureOption signatureOption = terminalConfig.getSignatureOption();

CWS

The following example shows the signature option in a response for openPaymentGateway request.

//Attribute signatureOptionTerminal in response represents the signature option from Converge terminal setting

//and is DISABLED in this case.

//Attribute signatureOption in response represents applied signature option for transactions. Its value is same

//as signatureOptionTerminal if not overridden by POS system otherwise is the value set by POS system (see

//the section below)

{
    "requestId":"659460833",
    "statusDetails":"REQUEST_ACCEPTED",
    "data":{
        "paymentGatewayCommand":{
            "completed":true,
            "eventQueue":[],
            "openPaymentGatewayData":{
                "result":"SUCCESS",
                "paymentGatewayId":"c949e9fa-8387-48b1-9a44-071f4b53fd48"
                },
            "accountInfo":{
                "businessEmail":"zahara.adossa-defreitas@elavon.com",
                "city":"",
                "address1":"",
                "postalCode":"",
                "isCvvEnabled":false,
                "stateProvince":"",
                "isCreditSurchargeAllowed":true,
                "creditSurchargePercent":2.55,
                "isAvsEnabled":false,
                "isGratuitySupported":false,
                "signatureOptionTerminal":"DISABLED",
                "signatureOption":"OPTIONAL",
                "name":"Cert 117_The_Grove_US_Test",
                "currencyCode":"USD",
                "marketSegment":"RETAIL"
            }
        }
    }
}

C

// Property AccountInfo of Object OpenPaymentGatewayResults has one new property for holding signature option:

// signatureOptionTerminal -- the signature option from Converge terminal

// signatureOption -- the signature option used for transactions

// Note: it returns the value set by POS system if POS system overrides it (see the section below)

private void updateAccountInformation(AccountInfo acctInfo)
{

Log("----- AccountInfo -----");

Log(String.Format("Converge Terminal Signature Option: {0}", acctInfo.signatureOptionTerminal));

Log(String.Format("Applied Signature Option: {0}", acctInfo.signatureOption));

}

Objective-C

// In the following callback method

// [ECLAccountInformationRetrievalDelegate accountInformationRetrievalDidSucceed:accountInformation:]

// param account can be used to obtain the Signature option

// Note: it returns the value set by POS system if POS system overrides it (see the section below)

ECLTerminalConfiguration *terminalConfiguration = [account terminalConfiguration];

// Get signature option set in Converge Terminal

ECLSignatureOption signatureOptionConvergeTerminal = [terminalConfiguration terminalSignatureOption];

// Get applied signature option for transactions. Its value is same as terminalSignatureOption from Converge if not

// overridden by POS system otherwise is the value set by POS system (see the section below)

ECLSignatureOption signatureOption = [terminalConfiguration getSignatureOption];

Override Signature Option

ECLSignatureOption enum has the following values:

  • DISABLED - only suppress presentation
  • OPTIONAL - presented, but can be bypassed
  • ENABLED_MSR_ONLY - presented and required for MSR only
  • ENABLED_ALL - presented and required

The default signature option is ECLSignatureOption.DISABLED.

If Converge supplies the signature option when retrieving the terminal account information, that value will be used as the default.

You have the option to override the default signature option:

Java (Android and Windows)

Override the default signature option for all transactions via ECLAccountInterface, as demonstrated below:

ECLSignatureOption signatureOption = ECLSignatureOption.OPTIONAL;

accountInterface.overrideSignatureOption(signatureOption);

Restore the default signature option for all transactions via ECLAccountInterface, as demonstrated:

accountInterface.overrideSignatureOption(null);

Override the default signature option for a single card transaction via ECLCardTenderInterface, as demonstrated below:

ECLCardTenderInterface cardTenderInterface = accountInterface.getTransactionProcessor().createCardTender();

ECLSignatureOption signatureOption = ECLSignatureOption.ENABLED_ALL;

cardTenderInterface.setSignatureOption(signatureOption);

If the signature option is overridden via both ECLAccountInterface and ECLCardTenderInterface, the signature option set in ECLCardTenderInterface will be used for the transaction.

CWS

New API method- overrideCvmOptions

This method overrides default CVM options.

method
String | required
overrideCvmOptions
 
requestId
string | required
Transaction Request ID
targetType
string | required
API
parameters
JSON Object | required
All relevant parameters for overriding CVM options.
signatureOption
string | optional
This parameter overrides the default signature option that was pulled down from converge. This override applies to all transactions.
Valid values:
  • DISABLED
  • OPTIONAL
  • ENABLED_MSR_ONLY
  • ENABLED_ALL
Request example - overrideCvmOptions with signatureOption = DISABLED:
{
    "method" : "overrideCvmOptions",
    "requestId" : "123456789",
    "targetId" : "1",
    "targetType" : "api",
    "version" : "1.0",
    "parameters" :
    {
    "signatureOption" : "DISABLED"
    }
}
Response example - overrideCvmOptions with signatureOption = DISABLED:
{
    "requestId": "123456789",
    "statusDetails": "REQUEST_ACCEPTED",
    "data": {
        "signatureOption": "DISABLED",
        "completed": true
    }
}

Update method - openPaymentGateway:

New entry signatureOption is added to the parameters section of Request table for command openPaymentGateway. This parameter overrides the default signature option that was pulled down from converge. This override applies to all transactions.

Request example - openPaymentGateway with signatureOption = ENABLED_ALL:
{
    "method" : "openPaymentGateway",
    "requestId" : "1234567890",
    "targetType" : "paymentGatewayConverge",
    "version" : "1.0",
    "parameters" :
    {
        "merchantId" : "******",
        "userId" : "******",
        "pin" : "******",
        "paymentGatewayEnvironment" : "QA_EXTERNAL",
        "vendorId" : "******",
        "vendorAppName" : "******",
        "vendorAppVersion" : "******",
        "email" : "*******",
        "handleDigitalSignature" : "true",
        "signatureOption" : "ENABLED_ALL"
    }
}

Update method - startPaymentTransaction:

New entry signatureOption is added to the parameters section of Request table for command startPaymentTransaction. This parameter overrides the default signature option that was pulled down from converge and the previously overridden signature option that was set via openPaymentGateway or overrideSignatureOption. This override applies only to the current transaction.

Request example - startPaymentTransaction with signatureOption = ENABLED_MSR_ONLY:
{
    "method" : "startPaymentTransaction",
    "requestId" : "1234567891",
    "targetType" : "paymentGatewayConverge",
    "version" : "1.0",
    "parameters" : {
        "paymentGatewayId": "a6bf5379-65d5-4a17-aab3-52777969e55a",
        "cardEntryTypes": null,
        "transactionType": "SALE",
        "tenderType": "CARD",
        "baseTransactionAmount": {
            "value": 100,
            "currencyCode": "USD"
        },
        "forceTransaction": false,
        "generateToken": false,
        "addToken": false,
        "tokenizedCardNumber": null,
        "tokenExpirationDate": null,
        "originalTransId": null,
        "avsFields": null,
        "cardType": null,
        "note": null,
        "merchantTransactionReference": "",
        "invoiceNumber": null,
        "isTaxInclusive": false,
        "partialApprovalAllowed": false,
        "gratuityFlowEnabled": false,
        "gratuityCustomAmountEntryAllowed": false,
        "gratuityQuickSelections": null,
        "signatureOption" : "ENABLED_MSR_ONLY"
    }
}

C

Override the default signature option for all transactions by setting the signatureOption property in OverrideCvmOptions, as demonstrated below:

OverrideCvmOptions overrideCvmOptions = new OverrideCvmOptions();

overrideCvmOptions.signatureOption = "ENABLED_ALL";

m_CWS.StartOverrideCvmOptions(overrideCvmOptions, MyNotifyCWSEvent, MyOverrideCvmOptionsComplete);

Override the default signature option for all transactions by setting the signatureOption property in OpenPaymentArgs, as demonstrated below:

OpenPaymentArgs obea = new OpenPaymentArgs();
...
obea.signatureOption = "ENABLED_MSR_ONLY";
...

Objective-C:

Override the default signature option for all transactions via ECLAccountProtocol, as demonstrated below:

ECLSignatureOption signatureOption = ECLSignatureOption_Disabled;
[accountProtocol overrideSignatureOption:signatureOption];

Restore the default signature option for all transactions via ECLAccountInterface, as demonstrated below:

[accountProtocol overrideSignatureOption:ECLSignatureOption_Unset];

Override the default signature option for a single card transaction via ECLCardTenderProtocol, as demonstrated below:

id<ECLCardTenderProtocol> cardTenderProtocol = [[accountProtocol transactionProcessor] createCardTender];

ECLSignatureOption signatureOption = ECLSignatureOption_EnabledAll;

[cardTenderProtocol setSignatureOption:signatureOption];

If the signature option is overridden via both ECLAccountProtocol and ECLCardTenderProtocol, the signature option set in ECLCardTenderProtocol will be used for the transaction.