reCaptchaをフォームなどに実装すると正常な場合の動作検証は可能ですが
認証を通らない場合の動作検証はなかなか難しかったりします。
reCaptcha認証が通らない場合にエラー画面が正しく表示されるかを検証するには、以下の手順を実施します。
無効なトークンをシミュレートすることで、認証失敗時の動作をテストします。
フォーム内に以下のタグを設置します。
<input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response" value="invalid-token">
reCaptchaのVer.2の場合、ロボット認証をチェックするとvalue部分が正常なトークン値に書き換えられてしまうので、ブラウザのデベロッパーツールなどで適当な値に書き直します。
送信をして、エラー画面が表示されれば動作検証完了です。
reCaptchaの実装方法は以下の記事にも書いていますが、
https://www.uki213.com/memo/google-form-static-html-recaptcha/
Googleフォームへの送信とエラー画面の表示を切り分けるPHPは以下のような記述となります。
<?php
$recaptcha_secret_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret_key."&response=".$_POST['g-recaptcha-response']);
$response = json_decode($response, true);
if ($response["success"] === true) {
// reCAPTCHA認証が成功した場合、Googleフォームに値を送信する処理をここに記述
$redirect_url = 'https://docs.google.com/forms/u/0/d/e/zzzzzzzzzzzzzzzzzzzzzzzzzzzz/formResponse';
//307 (Temporary Redirect)でリダイレクトして通常のフォーム投稿の処理
header('Location: '.$redirect_url, true, 307);
} else {
// reCAPTCHA認証が失敗した場合、エラーメッセージを表示する処理をここに記述
$error_url = 'https://sample.jp/test/error.html';
header('Location: '.$error_url, true, 307);
}
?>