フォーム 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 のエンコードは機能するはずですか? それとも、文字列が暗号化されているため、実際には問題にならないのでしょうか?
何かご意見は?
ありがとう
ギャビン