我正在使用GoCardless (沙箱帐户)网页钩子为一个计费项目。我想恢复那些选择用GoCardless付款的客户。问题是,在我从GoCardless获得的JSON中,没有这样的信息。
我需要公司名称将授权号放入sql数据库中,我的所有客户都在这个数据库中。
是否有方法在创建委托时获取公司名称?,还是将授权号连接到公司名称?
这是我的代码:
<?php
putenv('GC_WEBHOOK_SECRET=my_secret...');
$token = getenv("GC_WEBHOOK_SECRET");
$raw_payload = file_get_contents('php://input');
$headers = getallheaders();
$provided_signature = $headers["Webhook-Signature"];
$calculated_signature = hash_hmac("sha256", $raw_payload, $token);
if ($provided_signature == $calculated_signature) {
$payload = json_decode($raw_payload, true);
foreach ($payload["events"] as $event) {
if ($event["resource_type"]=="mandates" && $event["action"]=="created"){
$mandates=$event["links"];
$mandate=$mandates["mandate"];
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('sqlsrv...', $pdo_options);
$reqi="INSERT INTO goCardLess (client) VALUES ('".$mandate."')";
$req = $bdd->query($reqi);
$req->closeCursor();
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
header("HTTP/1.1 200 OK");
}
}
}
else {
header("HTTP/1.1 498 Invalid Token test");
}
?>
发布于 2017-11-17 07:36:41
GoCardless 网钩事件不包含任何敏感数据--它们提供资源if,以便在需要时可以从API中检索它们。
“任务创建”事件包含任务ID,API任务参考显示任务响应包含一个客户ID (客户资源是您查找其公司名称的地方)。
if ($event["resource_type"]=="mandates" && $event["action"]=="created") {
$mandate_id = $event["links"]["mandate"];
$mandate = $client->mandates()->get($mandate_id);
$customer_id = $mandate->links->customer;
$customer = $client->customers()->get($customer_id);
$company_name = $customer->company_name;
}这假设您已经将安装并初始化客户端库作为$client。
https://stackoverflow.com/questions/47303481
复制相似问题