为 Square 充电时未发现错误 API
Not Found error when charging Square API
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
有了这个body:
{
"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 的文档和支持。
我认为这里的问题是您曾尝试使用您的沙盒凭据 (sandbox-sq0idp-defoUOlu...
) 对您的生产地点收费 FPVPFZXXXXX
。如果您使用沙盒凭据调用 ListLocations
,您应该获得一个不同的位置,然后您可以使用该位置进行沙盒收费。
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
有了这个body:
{
"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 的文档和支持。
我认为这里的问题是您曾尝试使用您的沙盒凭据 (sandbox-sq0idp-defoUOlu...
) 对您的生产地点收费 FPVPFZXXXXX
。如果您使用沙盒凭据调用 ListLocations
,您应该获得一个不同的位置,然后您可以使用该位置进行沙盒收费。