cancel
Showing results for 
Search instead for 
Did you mean: 

In-Person SDK Windows: implementation of Void and Refund

I have an application that uses the In-Person SDK (using a bbpos reader) to charge credit cards.

However, I am unable to implement the Void and Refund transactions.
When creating the request, I set

 

 transactionRequestType transaction = new transactionRequestType()
{
    transactionType = transactionTypeEnum.voidTransaction.ToString(),
    refTransId = "<my transaction Id>"
};

 

I tried invoking each of the following with SDKTransactionType.VOID

(1) startQuickChipTransaction

(2) startQuickChipWithoutUI 

(3) startEMVTransaction

 

None of the 3 above options worked.

I do not find any documentation anywhere regarding this.
Any help would be appreciated.

 

 

Giri
Member
1 REPLY 1

I was able to Void a transaction by bypassing the In-Person SDK altogether, and following the approach shown in: https://developer.authorize.net/api/reference/index.html#payment-transactions-void-a-transaction.

 

However, I am still unable to to implement Refund.

I first used the approach in 
https://developer.authorize.net/api/reference/index.html#payment-transactions-refund-a-transaction

and got the response that the Merchant Account was not authorized for this transaction.

 

Next I tried the code below:

 

 

ApiOperationBase<ANetApiRequest, ANetApiResponse>.RunEnvironment = this.sdkEnvironment;

transactionRequestType transaction = new transactionRequestType()
{
  transactionType = transactionTypeEnum.refundTransaction.ToString(),
  amount = 1.0m,
  refTransId = "<original transactionID>",

  transactionSettings = new settingType[] {
  },
  retail = new transRetailInfoType()
  {
	deviceType = "5", 
	marketType = "2",
  },
};
transaction.terminalNumber = this.terminalID;
request = new createTransactionRequest()
{
  transactionRequest = transaction
};
request.merchantAuthentication = new merchantAuthenticationType()
{
  Item = this.sessionToken,
  mobileDeviceId = this.deviceID,
  ItemElementName = ItemChoiceType.sessionToken
};
this.launcher.startEMVTransaction(request, SDKTransactionType.REFUND, this);
   

 

 

However, instead of refunding the transaction, it charged the card anew for the amount that I had specified.

 

Any assistance would be welcome.

 

 

Giri
Member