vcatalano / py-authorize

A full-featured Python API for the Authorize.net payment gateway.
MIT License
42 stars 35 forks source link

Cannot get the "cardCodeResponse" on transaction detail #41

Closed filipeximenes closed 8 years ago

filipeximenes commented 9 years ago

Hi, Transaction.details response does not contain a cardCodeResponse field. From what I understood it's supposed to be there: https://developer.authorize.net/api/reference/#transaction-reporting-get-transaction-details

I'm currently working on sandbox. Am I missing something? Do I need to unlock something in Authorize.net configuration?

vcatalano commented 9 years ago

Py-authorize only translates the XML response from the server to a dictionary object; none of the response data is ever omitted. Are you sure the transactions were processed with the CVV? Also, have you enabled the Card Code Verification for your account?

filipeximenes commented 9 years ago

I get this. Do you happen to know where do I enable Card Code Verification? From what I read it's automatic (https://support.authorize.net/authkb/index?page=content&id=A664&actp=LIST). And yes, my API version is set to 3.1 (there's actually no other option.

Seems like Authorize.net is not returning the field to me. This is for the details call. The response just after I call auth does returns a cvv_result_code but it's empty and from what I've read this behaviour is not documented.

vcatalano commented 9 years ago

Okay, so it seems that Card Code Verification is enabled by default. According to the Authorize.net documentation, the field you are looking for is cardCodeResponse, which gets translated to card_code_response and not cvv_result_code. Are you looking at the correct field?

filipeximenes commented 9 years ago

In transaction.details i'm looking for card_code_response which does not exists in the response I'm getting. As for transaction.auth I can see there's field cvv_result_code in the response, but it's empty.

vcatalano commented 9 years ago

Hmmm. Dumb question, but are you certain you are sending the CVV with your transaction? Also, is the transaction a non-zero amount? Also, is the transaction you are looking at settled?

filipeximenes commented 9 years ago

Doble checked CVV and amount, they are both present. I have a test script running so every time I'm creating a new transaction and trying to get it's details.

vcatalano commented 9 years ago

Now that I think about it, the card code may only be used when processing a transaction in production. I'm willing to bet that if you run a transaction for a small amount with your production settings, you will receive a the card code response.

fredstluka commented 9 years ago

Filipe and Vincent,

I know that in the sandbox, when we use a dummy credit card number, we can use any CVV. It does not check. The fake transaction still goes through.

Hope this help, --Fred

filipeximenes commented 9 years ago

This PR solves the problem but breaks tests: https://github.com/vcatalano/py-authorize/pull/43

vcatalano commented 8 years ago

I've fixed the unit test issue and merged in your PR. Thanks for your work on this!