Cybersource Error messages

1,401 views
Skip to first unread message

madhu...@gmail.com

unread,
Nov 8, 2007, 7:07:58 AM11/8/07
to ATG_Tech
Hi group,

Can somebody help me in configuring the error messages from
cybersource for credit card validation?
I mean where exactly i can.
I was getting some error message like this when i dispaly the eroor
messages from the from Handler.

"The credit card Visa could not be authorized for payment: We
encountered an FDC problem:FIP reason:Unknown error.Unknown error"

Thanks
Lal

O'Brien, Paul

unread,
Nov 8, 2007, 9:06:25 AM11/8/07
to atg_...@googlegroups.com

The first part of that message is contained in the resource file atg.commerce.order.OrderResources, with resource key FailedCreditCardAuthorization.  You can override that to say whatever you want.

 

The second part of the message (starting with “We encountered an FDC problem…”) comes directly from Cybersource.  It can’t be configured in ATG.  If you would prefer to not show that part of the message, you can do that by changing the FailedCreditCardAuthorization resource, which currently takes the message from Cybersource as an input parameter.

madhu...@gmail.com

unread,
Nov 8, 2007, 10:39:47 AM11/8/07
to ATG_Tech
thanks for the reply.
but cybersoorce had sent me a document about the Reason Codes for
Credit Card Services.
http://apps.cybersource.com/library/documentation/sbc/api_guide/html/
Based on that we can configure the error messages--thats wht they say.
i need to know where this cybersource service is requested and gets
its response from thr.
based on that particular response i can configure the error messages.

hope this is clear enough.

On Nov 8, 7:06 pm, "O'Brien, Paul" <pobr...@atg.com> wrote:
> The first part of that message is contained in the resource file
> atg.commerce.order.OrderResources, with resource key
> FailedCreditCardAuthorization. You can override that to say whatever
> you want.
>
> The second part of the message (starting with "We encountered an FDC

> problem...") comes directly from Cybersource. It can't be configured in


> ATG. If you would prefer to not show that part of the message, you can
> do that by changing the FailedCreditCardAuthorization resource, which
> currently takes the message from Cybersource as an input parameter.
>
> -----Original Message-----
> From: atg_...@googlegroups.com [mailto:atg_...@googlegroups.com] On
>

> Behalf Of madhulal...@gmail.com

O'Brien, Paul

unread,
Nov 8, 2007, 11:14:33 AM11/8/07
to atg_...@googlegroups.com
For a credit card requests, the request is sent in
atg.integrations.cybersource.CyberSourceCreditCard - there are two
methods: performAuthORCredit and performDebitORCredit. For tax
requests, the request is sent in
atg.integrations.cybersource.CyberSourceTax - the calculate() method.

But where I think you'd want to configure the error messages is in
atg.integrations.cybersource.CyberSourceStatus. This class is
instantiated after each cybersource request (of either type), and its
constructor take the Cybersource reply as it's lone parameter. It
passes the reply to a setValues method, which populates the properties
of the class based on the contents of the reply. You could override
that method to do any other processing of the reply that you want.
Specifically, it is the "errorMessage" property of CyberSourceStatus
that is used in the second half of the error message you mentioned. So
changing the value of that property here would affect the message you
see.

madhu...@gmail.com

unread,
Nov 21, 2007, 5:46:25 AM11/21/07
to ATG_Tech
That was a good tip.
I tried the same. I created the new Class which extends the
CyberSourceStatus class in ATG.
Then override the setValues(ICSReply ) method.
Also I created a new properties file CyberSourceStatus.properties
and pointed the same class field to the new class I had written.

But I could never find that the this method ever reached during the
check out process. Can you tell me whethter I'm following the correct
convention as I'm being new to ATG?

On Nov 8, 9:14 pm, "O'Brien, Paul" <pobr...@atg.com> wrote:
> For a credit card requests, the request is sent in
> atg.integrations.cybersource.CyberSourceCreditCard - there are two
> methods: performAuthORCredit and performDebitORCredit. For tax
> requests, the request is sent in
> atg.integrations.cybersource.CyberSourceTax - the calculate() method.
>
> But where I think you'd want to configure the error messages is in
> atg.integrations.cybersource.CyberSourceStatus. This class is
> instantiated after each cybersource request (of either type), and its
> constructor take the Cybersource reply as it's lone parameter. It
> passes the reply to a setValues method, which populates the properties
> of the class based on the contents of the reply. You could override
> that method to do any other processing of the reply that you want.
> Specifically, it is the "errorMessage" property of CyberSourceStatus
> that is used in the second half of the error message you mentioned. So
> changing the value of that property here would affect the message you
> see.
>
> -----Original Message-----
> From: atg_...@googlegroups.com [mailto:atg_...@googlegroups.com] On
>
> Behalf Of madhulal...@gmail.com
> Sent: Thursday, November 08, 2007 10:40 AM
> To: ATG_Tech
> Subject: [atg_tech:277] Re: Cybersource Error messages
>
> thanks for the reply.
> but cybersoorce had sent me a document about the Reason Codes for
> Credit Card Services.http://apps.cybersource.com/library/documentation/sbc/api_guide/html/

O'Brien, Paul

unread,
Nov 26, 2007, 10:21:00 AM11/26/07
to atg_...@googlegroups.com
Sorry, I overlooked something in my original suggestion. The
performAuthORCredit and performDebitORCredit methods in
CyberSourceCreditCard call the constructor of CyberSourceStatus directly
- they don't use the component. So you're override class isn't being
used. I think you'll need to extend CyberSourceCreditCard and override
performAuthORCredit and performDebitORCredit like this:

public CreditCardStatus performAuthORCredit(CreditCardInfo ccinfo,
String pCommand)
throws ICSException (

CyberSourceStatus status = (CyberSourceStatus)
super.performAuthORCredit(ccinfo, pCommand);
ICSReply icsReply = (ICSReply) status.getValues();
return ExtendedCyberSourceStatus(icsReply);

}

That way, your extended status class will be used.

madhu...@gmail.com

unread,
Nov 27, 2007, 8:22:02 AM11/27/07
to ATG_Tech
ok. I tried the same way. I had overridden the setValues() method.
But that error message is already set there. I don't have a clue how
to get that response code from Cybersource.I checked all the available
methods to get the response code from the ICSReply object, so that I
can configure the error message accordingly.
Whats your thought on this?

On Nov 26, 8:21 pm, "O'Brien, Paul" <pobr...@atg.com> wrote:
> Sorry, I overlooked something in my original suggestion. The
> performAuthORCredit and performDebitORCredit methods in
> CyberSourceCreditCard call the constructor of CyberSourceStatus directly
> - they don't use the component. So you're override class isn't being
> used. I think you'll need to extend CyberSourceCreditCard and override
> performAuthORCredit and performDebitORCredit like this:
>
> public CreditCardStatus performAuthORCredit(CreditCardInfo ccinfo,
> String pCommand)
> throws ICSException (
>
> CyberSourceStatus status = (CyberSourceStatus)
> super.performAuthORCredit(ccinfo, pCommand);
> ICSReply icsReply = (ICSReply) status.getValues();
> return ExtendedCyberSourceStatus(icsReply);
>
> }
>
> That way, your extended status class will be used.
>
> -----Original Message-----
> From: atg_...@googlegroups.com [mailto:atg_...@googlegroups.com] On
>
> Behalf Of madhulal...@gmail.com

O'Brien, Paul

unread,
Nov 27, 2007, 10:06:28 AM11/27/07
to atg_...@googlegroups.com
CyberSourceStatus sets its errorMessage based on the "replyCode"
property of ICSReply. If ICSReply.getReplyCode() is anything other than
"1", it sets an errorMessage on the CyberSourceStatus. Looking at the
code, it seems that it sets the "errorMessage" property of
CyberSourceStatus using the "errorMessage" property of ICSReply. So
accessing either property should get you the Cybersource response
message. And ICSReply.getReplyCode() should get you the code.

madhu...@gmail.com

unread,
Nov 28, 2007, 3:52:06 AM11/28/07
to ATG_Tech
It is not.I got it as either 1 or -1.
It doesn't give the reason codes mentioned by Cybersource.
According to them if its a success it wud be 100.
But wht i'm getting for success is 1.

On Nov 27, 8:06 pm, "O'Brien, Paul" <pobr...@atg.com> wrote:
> CyberSourceStatus sets its errorMessage based on the "replyCode"
> property of ICSReply. If ICSReply.getReplyCode() is anything other than
> "1", it sets an errorMessage on the CyberSourceStatus. Looking at the
> code, it seems that it sets the "errorMessage" property of
> CyberSourceStatus using the "errorMessage" property of ICSReply. So
> accessing either property should get you the Cybersource response
> message. And ICSReply.getReplyCode() should get you the code.
>
> -----Original Message-----
> From: atg_...@googlegroups.com [mailto:atg_...@googlegroups.com] On
>
> Behalf Of madhulal...@gmail.com

O'Brien, Paul

unread,
Nov 28, 2007, 10:02:27 AM11/28/07
to atg_...@googlegroups.com
I don't know what to tell you about that. ATG sets that code based on
the ICSReply object returned by Cybersource. The ATG integration does
not change that value. And the errorMessage property set on the
CyberSourceStatus is also copied directly from the ICSReply. Can you
turn loggingDebug=true on CyberSourceCreditCard so that you can see the
request and response? That will tell what Cybersource is sending back,
and can help pinpoint the problem.
Reply all
Reply to author
Forward
0 new messages