Auth Only
This transaction obtains real-time authorization for an EMV, magnetic stripe or contactless transaction but does not place the authorization in the Settlement batch.
This transaction type guarantees that funds are available on the card and reduces the cardholder’s limit to buy for a pre-determined period (usually 7 - 10 days depending on the issuing bank).
To place the Auth Only transaction in the Open batch, use Pre-Auth Complete to convert the transaction into a Sale or use Auth Only Reversal to delete and restore the funds in the card.
These are the processing options that you can integrate with a Pre-Auth card transaction.
- Address Verification Service
- Manual Card Entry
- Merchant Transaction Reference
- Partial Approval
- Token Request
- Pay with Token
Code Samples
CWS
Request
Property | Description |
---|---|
method string | required | startPaymentTransaction |
requestId string | required | Transaction Request ID |
targetType string | required | paymentGatewayConverge |
parameters JSONObject | required | All relevant parameters for Pre-Auth transactions. |
paymentGatewayId string | required | Payment Gateway ID Unique identifier of the payment gateway as returned in the openPaymentGateway transaction response. |
transactionType string | required | Transaction Type Valid value: PRE_AUTH |
baseTransactionAmount JSONObject | required | Transaction Amount to Pre-Authorize “baseTransactionAmount” : { “currencyCodeStr” : “USD”, “amountInMinorUnits” : 1900 }, |
tenderType string | required | Tender Type Valid value: CARD or CASH |
discountAmounts array | optional | Discount Amount Deducted from baseTransactionAmount .key: “currencyCode” (“USD”) key: “value” (“2000” - in minor units) |
Example
Request
{
"method" : "startPaymentTransaction",
"requestId" : "721787309",
"targetType" : "paymentGatewayConverge",
"version" : "1.0",
"parameters" : {
"paymentGatewayId" : "cc9b37e3-1a59-4c8b-a3e6-8e9b18468ab8",
"transactionType" : "PRE_AUTH",
"baseTransactionAmount" : {
"value" : 3900,
"currencyCode" : "USD"
},
"tenderType" : "CARD",
"cardType" : null,
"isTaxInclusive" : false,
"taxAmounts" : [{
"value" : 0,
"currencyCode" : "USD"
}],
"discountAmounts" : null,
}
}
Response
{
"requestId" : "721787331",
"statusDetails" : "REQUEST_ACCEPTED",
"data" : {
"paymentGatewayCommand" : {
"completed" : true,
"eventQueue" : [ ],
"chanId" : "0ea7e529-dc2f-43a7-9ace-a6293401c4b1",
"paymentTransactionData" : {
"result" : "APPROVED",
"authCode" : "******",
"date" : "Mon Mar 07 13:08:42 MST 2016",
"cardEntryType" : "SWIPE",
"resultMessage" : "APPROVED",
"cardScheme" : "VISA",
"amount" : {
"currencyCode" : "USD",
"value" : 3900
},
"id" : "070316A15-D808755A-4283-4280-B4D6-5029D84F34B3",
"transactionType" : "PRE_AUTH",
"approved" : "yes",
"errors" : [ ],
"maskedPan" : "******",
"tenderType" : "CARD",
"balanceDue" : {
"currencyCode" : "UNKNOWN",
"value" : 0
}
}
}
}
}
Java
Initialize Commerce SDK and receive an
ECLAccountInterface
instance named account.Create a money object by specifying a currency code and an amount.
ECLMoney amount = new ECLMoney(ECLCurrencyCode.USD, 300L);
Create a transaction reference.
ECLPreAuthTransactionInterface transaction = account.getTransactionProcessor().createPreAuthTransactionWithSubtotal(amount);
Create a card tender instance.
ECLCardTenderInterface tender = account.getTransactionProcessor().createCardTender();
Objective-C
Initialize Commerce SDK and receive an
ECLAccountInterface
instance named account.Create a money object by specifying a currency code and an amount.
ECLMoney *amount = [[ECLMoney alloc] initWithMinorUnits:300 withCurrencyCode:ECLCurrencyCode_USD];
Create a transaction protocol.
id<ECLCurrencyTransactionProtocol> saleTransaction = [[_account transactionProcessor] createPreAuthTransactionWithSubtotal:amount];
Create a card tender instance.
id<ECLCardTenderProtocol> tender = [account.transactionProcessor createCardTender];
C#
Request
PaymentArgs bea = new PaymentArgs();
Money m = new Money(Money.CurrencyCodefromString("USD"), myAmount);
bea.baseTransactionAmount = m;
bea.tenderType = TenderType.CARD;
bea.transactionType = TransactionType.PRE_AUTH;
bea.paymentGatewayId = m_PaymentGatewayId;
m_CWS.StartPaymentTransaction(bea, MyNotifyCWSEvent, MyPaymentComplete);