Attached is the securepaytech payment file I've managed to get working. I've merged my ecommerce code with the svn version so I'm not 100% sure it'll work for everyone but should at least give you a good place to start.
Add the following line to mysite/_config.php with the correct details
SecurePayTechPayment::set_account('merchantID', 'password');
I ended up using Director::forceSSL() in order to get SSL working, which is across the whole site, not just the payment pages.
Two additional javascript functions I've added (to Checkout.js) and use in this file:
paymarkVerify();
Is the same as the implementation in the SecurePayTech integration guide, just pops up a window with the right merchantID for verification purposes.
requireValidCC(fieldName);
this is a new validation function that works just the same as require() in /sapphire/javascript/Validator.js except it checks for a valid credit card number. Listing for this is below, add it to Checkout.js or anywhere that suits/works :):
function requireValidCC(fieldName) {
el = _CURRENT_FORM.elements[fieldName];
if (!checkCC(el.value)) {
validationError(el,"Please enter a valid credit card number","required",false);
return false;
} else {
if(!hasHadFormError()) {
clearErrorMessage(el.parentNode);
}
return true;
}
}
function checkCC(s) {
var i, n, c, r, t;
r = "";
for (i = 0; i < s.length; i++) {
c = parseInt(s.charAt(i), 10);
if (c >= 0 && c <= 9)
r = c + r;
}
if (r.length <= 1)
return false;
t = "";
for (i = 0; i < r.length; i++) {
c = parseInt(r.charAt(i), 10);
if (i % 2 != 0)
c *= 2;
t = t + c;
}
n = 0;
for (i = 0; i < t.length; i++) {
c = parseInt(t.charAt(i), 10);
n = n + c;
}
if (n != 0 && n % 10 == 0)
return true;
else
return false;
}
I'm using a Modified version of the latest release of silverstripe along with a modified version of the svn version of ecommerce so results may vary widely!
Enjoy.