Square API 响应为空 JSON

Square API responds with empty JSON

为什么我从 Square 服务器收到空响应?

将位置更改为其中一个测试位置后,我似乎无法获得任何类型的响应。我使用的是正确的沙盒令牌。我是否无意中遗漏了必要的信息或触发了某种错误或安全机制?我无法想象空洞的回应在任何情况下都是合适的。由于显而易见的原因混淆了敏感字符串。

PHP

$url = 'https://connect.squareup.com/v2/locations/'.$location_id.'/transactions';
$curl_handle = curl_init($url);
$request_headers = array();
$request_headers[] = 'Content-Type: application/json';
$request_headers[] = 'Accept: application/json';
$request_headers[] = 'Authorization: Bearer '.$token;
$encodedData = json_encode($jsonData);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $encodedData);
$request_headers[] = 'Content-Length: '.strlen($encodedData);
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $request_headers);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl_handle);

JSON 用于 cURL 请求

{
"idempotency_key": "1",
"billing_address": {
"address_line_1": "123 Main Street",
"address_line_2": "",
"locality": "New York City",
"administrative_district_level_1": "NY",
"postal_code": "12345",
"country": "US"
},
"amount_money": {
"amount": 10,
"currency": "USD"
},
"delay_capture": false,
"buyer_email_address": "test@example.com",
"card_nonce": "122333444455555666666777777"
}

使用 print_r(curl_getinfo($curl_handle)) 我收到:

Array
(
 [certinfo] => Array()
 [connect_time] => 0.101375
 [content_type] => application/json
 [download_content_length] => 2
 [filetime] => -1
 [header_size] => 372
 [http_code] => 200
 [local_ip] => 66.198.240.51
 [local_port] => 44428
 [namelookup_time] => 0.009074
 [pretransfer_time] => 0.392582
 [primary_ip] => 74.122.190.85
 [primary_port] => 443
 [redirect_count] => 0
 [redirect_time] => 0
 [redirect_url] => 
 [request_size] => 734
 [size_download] => 2
 [size_upload] => 492
 [speed_download] => 3
 [speed_upload] => 979
 [ssl_verify_result] => 0
 [starttransfer_time] => 0.502108
 [total_time] => 0.502167
 [upload_content_length] => 492
 [url] => https://connect.squareup.com/v2/locations/__example__/transactions
)

您不使用 PHP SDK 有什么原因吗?我认为这会让你更容易一些,跟踪所有这些卷曲选项看起来有点混乱。

您正在向交易端点发送 GET 请求,要求 API 列出您的所有交易。对于 GET 请求,向您的请求添加正文不是一个好主意,因为几乎每个 API 都会忽略它(比如我们的)。

API 收到您的 GET 请求并 returns 向您发送您可能尚未在测试帐户中创建的交易可能如下所示:

{}

这是预期的行为。如果您尝试创建费用而不列出您的交易,请改为发送 POST 请求,或者只是使用 SDK 让事情变得更容易,请参阅 Charge