Я использую API-интерфейс squareup. Я правильно установил URL-адрес уведомления для своего приложения и настроил его для PAYMENT_UPDATED
// setup notifications
$data = array("PAYMENT_UPDATED");
$data_json = json_encode($data);
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, "https://connect.squareup.com/v1/me/webhooks");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_json),
'Authorization: Bearer XXXXXXXXXXXXXXXXXX')
);
curl_setopt($curl, CURLOPT_POSTFIELDS,$data_json);
echo $response = curl_exec($curl);
curl_close($curl);
echo "<pre>";
print_r(json_decode($response,true));
echo "</pre>";
и затем я совершаю платеж с мобильного устройства, получаю дубликаты запросов на разовый платеж с такими же данными:
{"entity_id":"xxxxxxxxxxxx","event_type":"PAYMENT_UPDATED","merchant_id":"xxxxxxxxxxxx","subunit_id":"xxxxxxxx"}
любая помощь ?!
У меня только началась эта проблема с рабочим приложением 18.05.15, около 5:30 вечера.
Я регистрирую каждый входящий запрос и выполняю некоторые манипуляции с данными после каждого обратного вызова webhook. Мое решение состояло в том, чтобы просто поместить уникальное ограничение в мою базу данных на основе полученного entity_id. Не отличное решение, но временный обходной путь, чтобы не выполнить все 2 раза.
Вероятно, ваши дубликаты уведомлений о веб-крюках вызваны каким-то немедленным эффектом обработки в вашем рабочем процессе. Например, транзакция карты, которую вы авторизуете, а затем фиксируете, вызовет несколько веб-хуков.