2

フォーム v3.0 にアップグレードし、その間にコードをリファクタリングしています。

そうしているうちに、 which を使用http_build_queryして連想配列を受け取り、それを RFC1738 の有効な URL に変換すると、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 のエンコードは機能するはずですか? それとも、文字列が暗号化されているため、実際には問題にならないのでしょうか?

何かご意見は?

ありがとう

ギャビン

4

1 に答える 1