I have a new D6 site and I am using this module. I have the Vendor Login Name correct I believe. The host is 1&1 in the UK and it's a VPS and so I added the ip address listed on the control panel. If I run

curl -s http://whatismyip.org/

From an ssh shell on the VPS, I get that same IP address as well. But when I attempt to make a transaction I get:

We were unable to process your credit card payment. Please verify your
card details and try again. If the problem persists, contact us to
complete your order.

and I don't see any failed transactions at sagepay. Nothing in fact. I also don't see anything on the server error log.

Do you have a suggestion as to how I can debug this?

Thank you.

Comments

drupal centric’s picture

Have you contacted SagePay? They can run a test their end I think to see if it's connecting OK. Are you using the test server?

hershel’s picture

I have:

Payment settings:  edit

    * Payment tracking is enabled.
    * Payments can be deleted by users with permission.
    * Log payments are being entered to and deleted from the order log.
    * Default payment details message is:
      Continue with checkout to complete payment.

Payment methods: edit

    * Credit card is enabled for checkout.

Payment gateways: edit

    * SagePay VSP Direct is enabled.

and in SagePay config I am using Test Server and Transaction type: PAYMENT. I disabled "inline frames for 3D-Secure" and when I check out, I enter my CC data on my site and submit and it never goes to SagePay. It never attempts to connect--it simply remains at my site and gives the error message noted above.

hershel’s picture

I have traced the code to see what the issue is. If I put:

print_r($response);

after

  list($response, $http_response_code, $curl_error) = uc_protx_vsp_direct_curl($url, $post);

which is line 535 of the module file I get:

Array
(
    [VPSProtocol] => 2.23
    [Status] => INVALID
    [StatusDetail] => 3058 : The CardHolder field is required. 
)

There is indeed no field on the screen for "CardHolder." If I hard code that field in the code, then it proceeds. I actually realize now that the reason I thought it wasn't connecting was because I was logging into the SagePay live system and it was configured for the Test system. When I set it for Live, then it indeed connects and I see the error in my SagePay transaction listing: "INVALID - 3058 : The CardHolder field is required."

I have temporarily set the CardHolder value to be Billing First Name, space, Billing Last Name and now it works fine.

But why do I not have a CardHolder field in the form?

drupal centric’s picture

Under Payment Settings you should have selected 'Enable card owner text field on checkout form.' which is the field for the name that's on the card.

hershel’s picture

Status: Active » Closed (fixed)

I see. Under "Payment methods" there is a section called "Credit card settings" and in there is a checkbox called "Enable card owner text field on checkout form."

OK, that was fairly easy. :)

Thank you.