thephpleague / omnipay-sagepay

Sage Pay driver for the Omnipay PHP payment processing library
MIT License
54 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 1 year ago

SM-Prasad commented 1 year 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 1 year ago

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

SM-Prasad commented 1 year 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 1 year ago

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