cancel
Showing results for 
Search instead for 
Did you mean: 

CIM: Void Captured/Pending Settlement stopped working

Hi,

 

I have made an integration using the CIM interface where voiding transactions with status "Captured/Pending Settlement" has stopped working in the CIM api (I am using the .NET API).

 

The flow is the following:

1) I authorize the Credit Card

2) I settle the authorization

3) I void the settlement as I cannot do a refund yet (It has not been settled yet at Authroize.NET)

 

This worked fine for me two weeks ago but no I have started getting this error: "E00051The original transaction was not issued for this payment profile."

 

If I look at the transaction details in the sandbox I can see that the transaction ID is: 2243564785, the customer profile id is: 38038422 and the payment profile is: 34589924 (This is the same as what I have in my database).

 

If I send in the request:

<?xml version="1.0" encoding="utf-16"?>
<createCustomerProfileTransactionRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
  <merchantAuthentication>
    <name></name>
    <transactionKey></transactionKey>
  </merchantAuthentication>
  <transaction>
    <profileTransVoid>
      <customerProfileId>38038422</customerProfileId>
      <customerPaymentProfileId>34589924</customerPaymentProfileId>
      <transId>2243564785</transId>
    </profileTransVoid>
  </transaction>
</createCustomerProfileTransactionRequest>

I get back: "E00051 The original transaction was not issued for this payment profile.".

However from what I can see if send in the correct details (also according to the documentation) and this has worked for me in the past so I think Authorize.NET has made some breaking changes.

 

It should be relatively easy to replicate.

1) Create an auth on a customer profile and payment profile using CIM

2) Settle the auth using CIM (PriorAuthCapture)

3) Void it

 

Anyone have the same issue or a suggestion to a workaround?

 

Edit:

Sample code that can replicate the issue using the .NET API found on github:

 

            string apiLogin = "";
            string transactionKey = "";
            var customerGateway = new CustomerGateway(apiLogin, transactionKey, ServiceMode.Test);

            var uniqueIdentifier = "CustomerProfile" + DateTime.Now.Millisecond; //Need unique identifier
            var customerProfileId = customerGateway.CreateCustomer(string.Empty, uniqueIdentifier, uniqueIdentifier).ProfileID;

            var billToAddress = new Address();
            var customerPaymentProfileId = customerGateway.AddCreditCard(
                customerProfileId,
                "4007000000027",
                01,
                2020,
                "123",
                billToAddress);

            var amount = new Random().Next(5, 999);
            var authResponse = customerGateway.Authorize(customerProfileId, customerPaymentProfileId, amount);

            var priorAuthCaptureResponse = customerGateway.PriorAuthCapture(authResponse.TransactionID, amount);

            var gatewayResponse = customerGateway.Void(customerProfileId,
                customerPaymentProfileId,
                priorAuthCaptureResponse.TransactionID);

            if (gatewayResponse.ResponseCode.Contains("E00051"))
            {
                Console.WriteLine("Error: " + gatewayResponse.ResponseCode);
            }
            else
            {
                Console.WriteLine("Success");
            }
            Console.ReadLine();

 

Many thanks.

mlpboyum
Member
1 ACCEPTED SOLUTION

Accepted Solutions

Hi,

 

Yes, it sounds like the same thing that broke refunds for us: https://community.developer.authorize.net/t5/Integration-and-Testing/CIM-E00051/td-p/52880

 

They've done something to break whatever comparison they do with the original transaction. It's happened before, and it mysteriously fixes itself from time to time.

 

Try doing the void with just the transId, and omit the customerProfileId and the customerPaymentProfileId. This is what we do on our implementation, and it still works.

 

            transaction = new Cim.ProfileTransactionType()
            {
                Item = new Cim.ProfileTransVoidType()
                {
                    transId = anetDeposit.TransactionIdentity
                }
            };

View solution in original post

npiasecki
Regular Contributor
2 REPLIES 2

As a note: Yes, I can void the transaction using the "Unsettled transactions" report in the sandbox. So it is valid to void the transaction.Void is possible

mlpboyum
Member

Hi,

 

Yes, it sounds like the same thing that broke refunds for us: https://community.developer.authorize.net/t5/Integration-and-Testing/CIM-E00051/td-p/52880

 

They've done something to break whatever comparison they do with the original transaction. It's happened before, and it mysteriously fixes itself from time to time.

 

Try doing the void with just the transId, and omit the customerProfileId and the customerPaymentProfileId. This is what we do on our implementation, and it still works.

 

            transaction = new Cim.ProfileTransactionType()
            {
                Item = new Cim.ProfileTransVoidType()
                {
                    transId = anetDeposit.TransactionIdentity
                }
            };
npiasecki
Regular Contributor