thephpleague / omnipay-sagepay

Sage Pay driver for the Omnipay PHP payment processing library
MIT License
55 stars 78 forks source link

Getting Error "The ACS has provided an Erro message. CReq validation failure." when submitting the form. #191

Open SM-Prasad opened 2 years ago

SM-Prasad commented 2 years ago

I have submitted the test data and getting error

"The ACS has provided an Erro message. CReq validation failure."

I have checked about the issue and found that it is because "{}" in vpsTxId and I have tried by removing the paranthesis and then it's working fine. But the form html is inside vendor folder which we can't modify directly. File Path => vendor\omnipay\common\src\Common\Message\AbstractResponse.php

Would anyone suggest how to fix this?

judgej commented 2 years ago

Can you provide any additional details? What is failing, and what are you doing when it fails?

SM-Prasad commented 2 years ago

I have replaced {} in hidden field value in file path vendor\omnipay\common\src\Common\Message\AbstractResponse.php that and then it's working fine.

Replaced below code

 $output = sprintf(
            $output,
            htmlentities($this->getRedirectUrl(), ENT_QUOTES, 'UTF-8', false),
           $hiddenFields
        );

With

 $output = sprintf(
            $output,
            htmlentities($this->getRedirectUrl(), ENT_QUOTES, 'UTF-8', false),
            str_replace(array("{", "}"), "", $hiddenFields)
        );

And then it's working fine. As it removes the {} which gets added to vpsTxId.

Please suggest me solution for this as I have changed in vendor folder which is not a proper way.

judgej commented 2 years ago

Some workarounds here: https://stackoverflow.com/questions/71424620/sagepa-3ds2-3377-the-acs-has-provided-an-erro-message-creq-validation-failure