同様の質問があるのはうれしいですが、私の (継承された) コードでは解決策が得られません。そのため、ご提供いただけると大変助かります。
当社では、フォーム統合を介して Sage Pay / Opayo 支払いゲートウェイを使用しています。
完了または失敗すると、顧客は暗号化された _GET 文字列を使用して Web サイト上の URL にリダイレクトされます。
復号化後、 getToken 関数 ( $values = getToken($Decoded);
) を呼び出して、配列から値を取得します。
ただし、すべてのタグが常に設定されるわけではないため、これらの null 値が問題の原因である可能性があると考えられます。
このコードは PHP 7.1 では正常に動作しますが、PHP 8.1 では例外がスローされます:
[2023-05-03 15:12:15 Europe/London] PHP 致命的エラー: キャッチされないエラー: /home/sitename/public_html/ch_functions.php:166 の null にプロパティ 'start' を割り当てようとしています スタックトレース: #0 /home/サイト名/public_html/not_completed.php(32): getToken('VendorTxCode=AP...') #1 {メイン} /home/sitename/public_html/ch_functions.php 行 166
をスローします
コードは、$resultArray[$i]->start = $start;
で失敗するものは次のとおりです:
リーリー$resultArray[$i]
をオブジェクトとして参照しましたが、配列が空であるため、参照するオブジェクトがありません。 PHP 7.4 以前のバージョン では、次のことができます:PHP は
stdClass
オブジェクトを$x[0]
に動的に作成し、その後 foo プロパティを動的に作成しますが、警告が発行されます:現在、この警告を抑制または無視しています。 PHP 8.0 では、これにより致命的なエラーが生成されるようになりました。したがって、値を設定する前に空のオブジェクトを作成してください:
リーリー ###または:### リーリー