【问题标题】:Not Found error when charging Square API为 Square API 充电时出现 Not Found 错误
【发布时间】:2017-07-04 17:19:15
【问题描述】:

Square REST API 文档指出,我应该获取我的位置列表,然后在调用交易端点时使用返回的位置代码(向信用卡收费)。我正在这样做,但返回的错误表明商家没有提供的 ID 的位置。

我已经在发送到事务端点的 JSON 中使用和不使用 location_id 进行了尝试,因为它是一个路径变量。结果相同。我还在 Square 的 API 常见问题解答中看到,未找到 404 的常见原因是卡随机数创建错误,但此响应清楚地表明位置 ID 无效。

我用 Postman 和 JSON 对此进行了测试,我可以看到位置代码是正确的。以下是我的电话和回复:

这是一个 GET 请求:

https://connect.squareup.com/v2/locations

下面是回复:

{
"locations": [
{
  "id": "FPVPFZ4DXXXXX",
  "name": "MyCompany",
  "address": {
    "address_line_1": "123 Candy Lane",
    "address_line_2": "",
    "locality": "Smithfield",
    "administrative_district_level_1": "RI",
    "postal_code": "02917",
    "country": "US"
  },
  "timezone": "America/Los_Angeles",
  "capabilities": [
    "CREDIT_CARD_PROCESSING"
  ]
},
{
  "id": "4FHNAN1WXXXXX",
  "name": "MyCompany2",
  "address": {
    "address_line_1": "567 Smith Street",
    "address_line_2": "",
    "locality": "Greenville",
    "administrative_district_level_1": "RI",
    "postal_code": "02828-2910",
    "country": "US"
  },
  "timezone": "America/Los_Angeles",
  "capabilities": [
    "CREDIT_CARD_PROCESSING"
  ]
 }
 ]
 }

我在上面的例子中稍微修改了返回的 ID。

接下来我打电话给这个 uri 充值:

https://connect.squareup.com/v2/locations/FPVPFZ4DXXXXX/transactions

有了这个身体:

{  
"note":"",
"idempotency_key":"azsxdcfvrtrewsdf",
"location_id":"FPVPFZ4DXXXXX",
"shipping_address":{  
  "address_line_1":"123 My Street",
  "address_line_2":null,
  "locality":"Greenville",
  "administrative_district_level_1":"RI",
  "postal_code":"02828",
  "country":"US"
},
"billing_address":{  
  "address_line_1":"123 My Street",
  "address_line_2":null,
  "locality":"Greenville",
  "administrative_district_level_1":"RI",
  "postal_code":"02828",
  "country":"US"
},
"card_nonce":"CBASEPPW7fjdUHe-3jP6ZZ4kvE0gAQ",
"reference_id":"RT-12345678",
"amount_money":{  
  "amount":12500,
  "currency":"USD"
},
"delay_capture":true,
"buyer_email_address":"jim@xxxxxxxxxx.net",
"customer_id":"JIM"
}

我得到了这样的回应:

{
"errors": [
{
  "category": "INVALID_REQUEST_ERROR",
  "code": "NOT_FOUND",
  "detail": "This merchant does not have a location with the ID    `FPVPFZ4DXXXXX`.",
  "field": "location_id"
}
]
}

因此位置 ID 与位置端点返回的 ID 完全匹配。

熟悉此 API 的人可以帮助我吗?遗憾的是,Square 缺乏文档和支持。

【问题讨论】:

    标签: square square-connect


    【解决方案1】:

    我认为这里的问题是您尝试使用您的沙盒凭据 (sandbox-sq0idp-defoUOlu...) 对您的生产位置 FPVPFZXXXXX 收费。如果您使用沙盒凭据调用ListLocations,您应该获得一个不同的位置,然后您可以使用该位置进行沙盒收费。

    【讨论】:

    • 谢谢@tristansokol,但我试过了。然后我这样做了,我得到了不同的位置,当我尝试使用一个位置时,我被禁止了,并且出现一个错误,提示我无权访问该位置。
    • 那么我认为您尝试将您的个人访问令牌与沙箱位置一起使用。尝试位置 CBASEHHNorL75Tj...sandbox-sq0atb-R6...,您遇到的任何错误都应该与您的请求正文相关。
    • 感谢@tristansokol 我愿意尝试,但评论编辑器截断了您发布的位置密钥和沙盒令牌。您能否编辑您的答案并将它们添加到那里?再次感谢您!
    • 抱歉,我进行了截断,以便您的凭据不会发布到网上(即使它们是沙盒)。您可以在Square Developer Portal 上找到该沙盒令牌,并通过使用该访问代码调用列表位置来找到该位置。
    • 好的,我又试了一次,这次我得到了有效的回复,谢谢。我敢肯定,当我最初尝试它时,我得到了“禁止”,但可能是因为添加的位置是新的或帐户是新的。无论如何它现在正在工作,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-05-24
    • 2021-01-12
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2017-09-03
    • 2017-11-25
    • 2016-10-05
    相关资源
    最近更新 更多