-2

我正在使用 squareup API .. 我将通知 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"}

有什么帮助吗?!

4

2 回答 2

0

我刚刚在 2015 年 5 月 18 日下午 5:30 左右开始在生产应用程序中遇到这个问题。

我记录每个传入的请求,并在每个 webhook 回调之后执行一些数据操作。我的解决方案是根据收到的 entity_id 在我的数据库中简单地放置一个唯一约束。不是一个很好的解决方案,而是一个临时解决方法,不能让所有事情都执行 2 倍。

于 2015-05-19T18:20:04.810 回答
0

您的重复 webhook 通知可能是由于您的工作流程中的某种即时处理效果。例如,您授权然后捕获的卡交易会触发多个 webhook。

于 2017-06-23T18:32:13.630 回答