Is there ANY way to retrieve merchant-defined field values when using the Accept Hosted payment form in an iFrame?
I've already confirmed that:
They do still arrive in Silent Post Responses, but we're not supposed to use those anymore (in favor of WebHooks).
This is really frustrating, as our application implicitly relies on two pieces of data defined in merchant-defined fields to determine the source of the transaction (cart, invoice, donation form) and who the "responsible user" is (the user responsible for generating/triggering the transaction event, as opposed to the user account that the cart/invoice/etc belongs to).
If we are unable to access those values after a transaction has been completed, we will have to completely re-engineer our solution.
Thanks, Fritz
Solved! Go to Solution.
05-11-2018 09:50 AM
Hi @coppercup
You can pass the merchantReferenceID in the transactionRequest
refId | Merchant-assigned reference ID for the request. |
and retirve it back when calling the getTransactionDetails
transrefId | Merchant-assigned reference ID for the request. If your request included refId , we will return the value in transrefId |
You can store and retrieve the merchant custom fields on your server side using this merchantReferenceID .
Hope it helps !!!
05-14-2018 12:20 AM - edited 05-14-2018 12:20 AM
Hi @coppercup
You can pass the merchantReferenceID in the transactionRequest
refId | Merchant-assigned reference ID for the request. |
and retirve it back when calling the getTransactionDetails
transrefId | Merchant-assigned reference ID for the request. If your request included refId , we will return the value in transrefId |
You can store and retrieve the merchant custom fields on your server side using this merchantReferenceID .
Hope it helps !!!
05-14-2018 12:20 AM - edited 05-14-2018 12:20 AM
Thank you for your response @Anurag.
So, technically, your response indirectly implies that the true answer to my question is:
"No, it is not possible to retrieve Merchant Defined Field values from AuthNet after the transaction is processed, either via the iFrame Communicator response or a subsequent getTransactionDetailsRequest()." (Correct me if I'm wrong.)
I understand that I can keep track of these values myself, but as I mentioned in my original post, our existing SIM-based solution currently relies on merchant defined field values being available in the SIM relay response, and I was implicitly hoping to avoid reengineering our application on a broader scale. Turns out that replacing the SIM form with the Accept Hosted form is not as easy as I had hoped.
As a side thought, what is the point of Merchant Defined Fields, now, if they essentially disappear into the ether and can never again be accessed?
05-16-2018 12:41 PM
Hi @coppercup
Yes we cant pass it back as we dont persist them in our system .
The reason silent post was able to do it as it was synchronous call after the API and it had lots of issues of lost messages due to it .
As to keep the integration loosely coupled , using the merchant reference ID and handling of these custom fields on client side is preferred way going forward .
Thanks
05-16-2018 05:22 PM - edited 05-16-2018 05:23 PM
Understood, thanks for the clarification. I appreciate it.
05-17-2018 07:27 AM
You may have a way out, although it may be too late. I've found some out of the box ways to use authorize's defined fields in ways not originally intended but suitable to what I am doing.
For those 2 things you need, source of transaction and owner of the transaction, these are both present on your app before the redirection mechanism/iframe payment form is called?
11-29-2018 10:27 PM
For accept hosted without iframe/lightbox, we are creating transaction using authorize.net payment page and receipt. In such case I dont see we can pass refId. Am not calling createTransaction as we are passing the details to athorize.net. In such case what should we use in place of refId
var transactionRequest = new transactionRequestType
{
transactionType = transactionTypeEnum.authCaptureTransaction.ToString(), // authorize capture only
amount = amount,
lineItems = lineItems,
billTo = billingAddress,
customer = customer,
customerIP = "dummy ip",
merchantDescriptor = "merchand Descriptor",
};
12-04-2018 09:00 AM