I ran this script : infusionsoft-php/verifyRestHook.php at master · infusionsoft/infusionsoft-php · GitHub
but the events are still unverified.
I cross-checked with a list-hook-subscriptions.php script.
php list-hook-subscriptions.php
[{“key”:“7”,“eventKey”:“invoice.payment.add”,“hookUrl”:“https://www.mydomain.com/is-hook.php",“status”:“Unverified”},{“key”:“3”,“eventKey”:“invoice.payment.add”,“hookUrl”:“https://www.mydomain.com/is-hook.php”,“status”:“Unverified”},{“key”:“1”,“eventKey”:“invoice.payment.add”,“hookUrl”:“http://infusionsoft.app/verifyRestHook.php”,“status”:“Unverified”},{“key”:“5”,“eventKey”:“invoice.payment.add”,“hookUrl”:“https://www.mydomain.com/is-hook.php”,“status”:"Unverified”}]
What am I doing wrong here ?
Place this code at the very top of your script and re-run the verification:
/**
* IMPORTANT! The following code MUST be at the top and at code root level
* before namespacing or any other code. While it is not necessary to keep
* this code it is necessary that it is present whenever endpoint validation
* is registered as this is how Infusionsoft confirms the endpoint as valid.
*/
$headers = array();
foreach ($_SERVER as $key => $value) {
if (substr($key, 0, 5) <> 'HTTP_') {
continue;
}
$header = str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))));
$headers[$header] = $value;
}
$notification = json_decode(file_get_contents('php://input'));
if (isset($headers['X-Hook-Secret'])){header('X-Hook-Secret: ' .
$headers['X-Hook-Secret'] . '');}
/**
* End required code root
*/
I ran this :
/**
* IMPORTANT! The following code MUST be at the top and at code root level
* before namespacing or any other code. While it is not necessary to keep
* this code it is necessary that it is present whenever endpoint validation
* is registered as this is how Infusionsoft confirms the endpoint as valid.
*/
$headers = array();
foreach ($_SERVER as $key => $value) {
if (substr($key, 0, 5) <> 'HTTP_') {
continue;
}
$header = str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))));
$headers[$header] = $value;
}
$notification = json_decode(file_get_contents('php://input'));
if (isset($headers['X-Hook-Secret'])){header('X-Hook-Secret: ' .
$headers['X-Hook-Secret'] . '');}
/**
* End required code root
*/
session_start();
require_once '../vendor/autoload.php';
$infusionsoft = new \Infusionsoft\Infusionsoft(array(
'clientId' => '<clientId>',
'clientSecret' => '<clientSecret>',
'redirectUri' => '<url>',
));
// In order to verify the endpoint, we need to return the X-Hook-Secret header.
// By default, the autoverify() function will set the proper header, but if you
// pass false as the first argument to autoverify(false) the function will simply
// return the header value for you to set as you please (handy if you are using
// a PHP class or framework that manages requests for you
$infusionsoft->resthooks()->autoverify();
return;
But still is :
[{"key":"7","eventKey":"invoice.payment.add","hookUrl":"https://www.mydomain.com/is-hook.php","status":"Unverified"},{"key":"3","eventKey":"invoice.payment.add","hookUrl":"https://www.mydomain.com/is-hook.php","status":"Unverified"},{"key":"1","eventKey":"invoice.payment.add","hookUrl":"http://infusionsoft.app/verifyRestHook.php","status":"Unverified"},{"key":"5","eventKey":"invoice.payment.add","hookUrl":"https://www.mydomain.com/is-hook.php","status":"Unverified"}]
You have to re-validate. Just running the code won’t do it. that code is there so that when you setup the webhook, IS will see the endpoint as valid
You mean I got to run resthookManager.php again , right ?
Does the code you supplied need to be there in resthookManager.php ?
$headers = array();
...
$headers['X-Hook-Secret'] . '');}
Also,
$resthook = $resthooks->create([
'eventKey' => 'invoice.payment.add',
# 'hookUrl' => 'http://infusionsoft.app/verifyRestHook.php'
'hookUrl' => 'https://www.mydomain.com/is-hook.php'
]);
is-hook.php is
<?php
$data = file_get_contents('php://input');
$to = 'me@gmail.com';
$subject = 'InfusionSoft Hook';
$message = $data;
@mail($to, $subject, $message);
?>
I got the email with the json data
{"event_key":"invoice.payment.add","verification_key":"xxx-xxxx-xxx-xxx-xxx"}
I don’t get what I’m doing wrong.
I did get one verified
{"key":"13","eventKey":"invoice.payment.add","hookUrl":"https://www.domain.com/is-hook.php","status":"Verified"}
1 Like