Manual Card Data Entry
Manual Card Entry enables a merchant to enter the card number and expiration date on a terminal and allowing the terminal to encrypt the card data.
error_outline
important
The iCMP, iSC250 or iPP320 terminal must be certified.
Code Samples
CWS
Request
Property | Description |
---|---|
parameters JSONObject | required | All relevant parameters for manually-entered card data processing. |
cardEntryTypes array | optional | Card Entry Types Indicator Used to indicate the type of card entry on card reader. Valid values: MANUALLY_ENTERED |
Example
Request
{
"method" : "startPaymentTransaction",
"requestId" : "861693916",
"targetType" : "paymentGatewayConverge",
"version" : "1.0",
"parameters" : {
"paymentGatewayId" : "79f139c4-3bb0-4bdb-b587-6cbcce02acf7",
"transactionType" : "SALE",
"tenderType" : "CARD",
.....
"cardEntryTypes" : ["MANUALLY_ENTERED"],
.....
}
}
This will request CardPresent
, which is a boolean to indicate if the credit card is actually present. To which you should reply:
{
"method" : "continuePaymentTransaction",
"requestId" : "861693918",
"targetType" : "paymentGatewayConverge",
"version" : "1.0",
"parameters" : {
"paymentGatewayId" : "79f139c4-3bb0-4bdb-b587-6cbcce02acf7",
"chanId" : "710d97d2-4dcc-453a-a3fa-6983a4411cc5",
"CardPresent" : "true"
}
}
Response
{
"requestId" : "861693917",
"statusDetails" : "REQUEST_ACCEPTED",
"data" : {
"paymentGatewayCommand" : {
"completed" : false,
"eventQueue" : [ ],
"chanId" : "710d97d2-4dcc-453a-a3fa-6983a4411cc5",
"requiredInformation" : [ "CardPresent" ]
}
}
}
Java
ECLCardTenderInterface cardTenderInterface = account.getTransactionProcessor().createCardTender();
cardTenderInterface.setAllowedCardEntryTypes(EnumSet.of(ECLCardEntryType.MANUALLY_ENTERED));
account.getTransactionProcessor().processTransaction(transaction, cardTenderInterface, transactionListener);
Objective-C
Using the same code from the Sale transaction with a card tender, the only addition we need to do before processing the transaction is:
tender.allowedCardEntryTypes = ECLCardEntryType_ManuallyEntered;
//optional - for tracking first and last name of manually entered transaction
[cardTender setAVSField:ECLAVS_CardholderFirstName withValue:_firstName.text];
[cardTender setAVSField:ECLAVS_CardholderLastName withValue:_lastName.text];
C#
PaymentArgs bea = new PaymentArgs();
...
bea.cardEntryTypes = new string[1];
bea.cardEntryTypes[0] = “MANUALLY_ENTERED”;
...
m_CWS.StartPaymentTransaction(bea, MyNotifyCWSEvent, MyPaymentComplete);
Request
Respond to card present request.
Dictionary<string, string> info = new Dictionary<string, string>();
info["CardPresent"] = "true"; /* Note: string not boolean. Set to 'true' if card is present. 'false' if it is not present */
PaymentTransactionResults tr = m_CWS.ContinuePaymentTransaction(m_PaymentGatewayId, chanId, info, MyNotifyCWSEvent);
Response
public void MyPaymentComplete(PaymentResults ber)
{
String[] req = ber.getRequiredInformation();
if (null != req) /* expect "CardPresent" */
}