SagePay表单 - 成功/失败Url在编码为RFC1738时失败

时间:2015-03-12 16:35:08

标签: php sagepay rfc1738

我们只是升级到v3.0,同时重构我们的代码。

虽然这样做,但我们注意到当使用带有关联数组并将其转换为RFC1738有效URL的http_build_query时,SagePay失败并出现以下错误:

The SuccessURL format is invalid

提交给SagePay端点的表单的enctype为application/x-www-form-urlencoded

但是......如果我们手动构建要加密的字符串:

$tmp = '';
foreach ($crypt_store as $key => $value) {
    $tmp .= sprintf('&%s=%s', $key, $value);
}

它有效......

现在我理解RFC1738,如果url中存在url,它应该被编码,即

RFC1738:

&VendorTxCode=Test&SuccessUrl=http%3A%2F%2Fwww.stackoverflow.com%3Fa%3Da%26b%3Db&FailureUrl...

SagePay:

&VendorTxCode=Test&SuccessUrl=http://www.stackoverflow.com?a=a&b=b&FailureUrl...

当然,如果SagePay遵循RFC1738,编码URL应该有效吗?或者是因为字符串是加密的,这意味着它并不重要?

有什么想法吗?

由于

加文

1 个答案:

答案 0 :(得分:1)

你是对的。由于成功/失败URL在Crypt字段中加密,因此无需对其进行编码。