Форма SagePay — URL-адрес успеха / сбоя при кодировании в RFC1738

Мы просто обновляемся до версии v3.0 и пока делаем рефакторинг нашего кода.

При этом мы заметили, что при использовании http_build_query который берет ассоциативный массив и преобразует его в действительный URL RFC1738, что SagePay завершается ошибкой со следующей ошибкой:

The SuccessURL format is invalid

Форма, отправляемая в конечную точку SagePay, имеет тип 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 должно работать? Или это потому, что строка зашифрована, что означает, что это не имеет значения?

Какие-нибудь мысли?

Спасибо

Gavin

2

Решение

Ты прав. Поскольку URL-адреса успеха / неудачи зашифрованы в поле Crypt, их не нужно кодировать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]