【问题标题】:Square API responds with empty JSONSquare API 以空 JSON 响应
【发布时间】:2017-09-29 00:26:14
【问题描述】:

为什么我从 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);

cURL 请求中使用的 JSON

{
"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
)

【问题讨论】:

    标签: square-connect


    【解决方案1】:

    您不使用PHP SDK 是否有原因?我认为这会让你更容易,跟踪所有这些 curl 选项看起来有点令人困惑。

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

    API 接收您的 GET 请求并将您可能尚未在测试帐户中创建的交易返回给您,可能如下所示:

    {}
    

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

    【讨论】:

    • 我现在收到(模糊的)错误消息,尽管 确实 解决了问题。我真的不喜欢第三方代码,因为它通常臃肿而复杂。我有我希望成为最后一个问题的问题:stackoverflow.com/questions/46477085/…,如果我能做到这一点,我会非常激动。
    • 另外,查看 SDK(希望提取我需要的 JSON)它说使用 require 'vendor/autoload.php'; 但是 SDK 中没有供应商目录。那么……什么?
    • 你必须使用 Composer,PHP 的包管理器,阅读此页面上的安装说明:github.com/square/connect-php-sdk
    • 啊,这就是我提取所有内容的原因。一旦我最小化了代码,哪里是分享我所学知识的好地方?到目前为止,我喜欢 Square 的一切,除了对于避免使用第三方软件的人来说有点杂乱无章。在我向他们展示加载 8 MB JavaScript 的网站之前,人们并不理解这一点。这一切都与我的客户有关,对他们而言,一切都与他们的客户有关。我会和作曲家混在一起,希望能走得足够远,可以通宵达旦地工作。感谢您的帮助和回复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    相关资源
    最近更新 更多