I had this issue on Sage Pay Direct test, and it turned out to be the Content-Type
not being set to application/x-www-form-urlencoded
.
The documentation states that the body of the registration transaction must be URL encoded, but does not mention the Content-Type
header. This is kind of obvious if you understand how these HTTP messages are going to be parsed, but can result in this very misleading error message from the gateway if not correctly set.
So basically, if you get error number 3034, and you do have the vendor
field set correctly, then the problem is likely that the remote Sage Pay gateway cannot parse the body of the transaction in the HTTP message you have POSTed. In that case you need to look at the complete message being sent.