reCAPTCHA - jak dodać widget na stronę?

Witam,
Mam problem ponieważ nie mogę zrozumieć jak dodać widget reCAPTCHA v2 wraz ze skryptem. Są co prawda poradniki ale jakimś cudem nie mogę zrozumieć nawet tego od Google (moją wiedza o programowaniu sięga stworzenia formularza). Stronę mam w PHP.

Musisz stworzyć jakiś obiekt gdzie zostanie osadzony widżet. Np:
<div id="recaptcha_container" style="margin-bottom: 15px;" align="center"></div>

Skrypt java dodajesz za pomocą (async = asynchronicznie, defer po załadowaniu strony)
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>

Następnie gdzieś na stronie musisz wywołać skrypt ładujący widżet.
Obiekt skryptu warto zapisać do zmiennej w celu uniknięcia błędów, np reCAPTCHA_var. Warto dodać sobie zmienną zapisującą czy captha została rozwiązana czy nie. W kodzie użyłem jquerry aby ukrywać rozwiązany widżet. $(„#recaptcha_container”).hide();. Gdzie XXXXXXXX musisz podać klucz publiczny, który generujesz na stronie recaptha od google.

		<script type="text/javascript">
			var captchaLoaded = false;
			var reCAPTCHA_var;
			var onloadCallback = function() {
				var reCAPTCHA_var = grecaptcha.render("recaptcha_container", {
					"sitekey" : "XXXXXXXXXXXXXXXXXXXXXXX",
					"theme" : "dark",
					"callback": recaptchaCallbackHide
				});
				captchaLoaded = true;
				$("#recaptcha_container").hide();
				<--RESZTA KODU-->
			};
			function recaptchaCallbackHide() {
				$("#recaptcha_container").hide();
				<--RESZTA KODU-->
			}
		</script>
		<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>

Potem musisz dodać przesyłanie tokenu zwrotnego np w funkcji fetch czy parametrze post czy cokolwiek tam robisz aby pobrać jakieś dane z pliku np php.
W java script w fetch dodaje po prostu parametr &grecaptcharesponse=${grecaptcha.getResponse(reCAPTCHA_var)

Teraz musisz na swojej stronie zrobić weryfikację tokena podam ci przykład w php:

	if (isset($_GET['grecaptcharesponse'])) {
		//Dane wstępne
		$recaptchaSecretKey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
		$recaptchaURL = 'https://www.google.com/recaptcha/api/siteverify';
		
		//Budowanie klucza 
		$recaptchaData = array(
			'secret' => $recaptchaSecretKey,
			'response' => $_GET['grecaptcharesponse']
		);
		
		//Budowanie zapytania
		$recaptchaOptions = array(
			'http' => array(
				'header' => "Content-type: application/x-www-form-urlencoded\r\n",
				'method' => 'POST',
				'content' => http_build_query($recaptchaData)
			)
		);
		
		//Pobieranie danych zwrotnych
		$recaptchaContext = stream_context_create($recaptchaOptions);
		$recaptchaResult = file_get_contents($recaptchaURL, false, $recaptchaContext);
		$recaptchaResponseData = json_decode($recaptchaResult);

		if ($recaptchaResponseData->success) {
			<-- TWÓJ KOD LUB USTAWIENIE ZMIENNEJ GLOBALNEJ LUB FUNCJA JEŻELI POZYTYWNY WYNIK -->

		} else {
			<-- NEGATYWNY WYNIK KOD -->
		}
	} else {
		<-- BRAK DANYCH WYNIK NEGATYWNY (Oszczedzanie zasobów) -->
	}