-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 に答える