PayPal API返回资源\未\找到/无效\资源\ ID,但交易列在沙箱业务帐户中

PayPal API返回资源\未\找到/无效\资源\ ID,但交易列在沙箱业务帐户中,paypal,paypal-sandbox,Paypal,Paypal Sandbox,我也有类似的问题 设置 贝宝沙箱环境 两个测试帐户(个人帐户和业务帐户)。在测试期间,个人帐户购买产品。交易进入商业账户 我创建了RESTAPI应用程序,它连接到上面的沙盒业务帐户 我登录到:以企业帐户的凭据生成PayPal按钮。按钮的HTML代码被添加到我的网站中 步骤 我打开网站,点击PayPal按钮 我使用个人帐户的凭据登录到PayPal沙箱 我完成了付款流程 我登录到业务帐户,我看到交易(订单)列在那里。我可以看到交易ID 问题 在对API的所有请求中,我使用客户端ID和REST

我也有类似的问题

设置

  • 贝宝沙箱环境
  • 两个测试帐户(个人帐户和业务帐户)。在测试期间,个人帐户购买产品。交易进入商业账户
  • 我创建了RESTAPI应用程序,它连接到上面的沙盒业务帐户
  • 我登录到:以企业帐户的凭据生成PayPal按钮。按钮的HTML代码被添加到我的网站中
步骤

  • 我打开网站,点击PayPal按钮
  • 我使用个人帐户的凭据登录到PayPal沙箱
  • 我完成了付款流程
  • 我登录到业务帐户,我看到交易(订单)列在那里。我可以看到交易ID
问题

在对API的所有请求中,我使用客户端ID和RESTAPI应用程序的机密,我已经为测试目的创建了RESTAPI应用程序

之后,我打开了Postman,向PayPal API发送了以下请求,以生成一个访问令牌(Doc:)

到目前为止,一切顺利。然后我向PayPal APIv1发送一个API请求,以获取有关订单的更多详细信息。我使用交易Id,根据我读到的与订单Id相同

curl -v -X GET https://api.sandbox.paypal.com/v1/checkout/orders/TRANSACTION_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"
我明白了:

{
    "http_code": 404,
    "body": {
        "name": "INVALID_RESOURCE_ID",
        "message": "INVALID_RESOURCE_ID",
        "information_link": "https://developer.paypal.com/docs/api/orders/v1/#error-INVALID_RESOURCE_ID",
        "debug_id": "c02871817abba"
    }
}
{
    "http_code": 404,
    "body": {
        "name": "RESOURCE_NOT_FOUND",
        "details": [
            {
                "issue": "INVALID_RESOURCE_ID",
                "description": "Specified resource ID does not exist. Please check the resource ID and try again."
            }
        ],
        "message": "The specified resource does not exist.",
        "debug_id": "c2c24f91a44fd",
        "links": [
            {
                "href": "https://developer.paypal.com/docs/api/orders/v2/#error-INVALID_RESOURCE_ID",
                "rel": "information_link",
                "method": "GET"
            }
        ]
    }
}
我试过APIv2:

curl -v -X GET https://api.sandbox.paypal.com/v1/checkout/orders/ORDER_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"
我明白了:

{
    "http_code": 404,
    "body": {
        "name": "INVALID_RESOURCE_ID",
        "message": "INVALID_RESOURCE_ID",
        "information_link": "https://developer.paypal.com/docs/api/orders/v1/#error-INVALID_RESOURCE_ID",
        "debug_id": "c02871817abba"
    }
}
{
    "http_code": 404,
    "body": {
        "name": "RESOURCE_NOT_FOUND",
        "details": [
            {
                "issue": "INVALID_RESOURCE_ID",
                "description": "Specified resource ID does not exist. Please check the resource ID and try again."
            }
        ],
        "message": "The specified resource does not exist.",
        "debug_id": "c2c24f91a44fd",
        "links": [
            {
                "href": "https://developer.paypal.com/docs/api/orders/v2/#error-INVALID_RESOURCE_ID",
                "rel": "information_link",
                "method": "GET"
            }
        ]
    }
}
混乱

交易清楚地列在商业账户中,但API表示没有此类交易

建议/解决方案



解决方案

通过PayPal按钮(使用业务帐户生成)发起的付款的默认行为是销售,而不是订单。有关两者之间差异的更多详细信息,请阅读此处-

解决方案是向另一个PayPal API方法发出请求(检查:)

这是返回正确数据的请求

curl -v -X GET https://api.sandbox.paypal.com/v1/payments/sale/TRANSACTION_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"
curl -v -X GET https://api.sandbox.paypal.com/v1/payments/sale/TRANSACTION_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"

v2/订单对象仅用于付款审批,不是交易记录。出于调试的目的,他们的ID应该只保留大约一个月,因为他们没有记账的目的,也不能在PayPal.com上引用


另一方面,PayPal交易由v2/支付对象表示,在捕获v2/订单时返回。您可以通过适当的get调用再次获取捕获的详细信息:

解决方案

通过PayPal按钮(使用业务帐户生成)发起的付款的默认行为是销售,而不是订单。有关两者之间差异的更多详细信息,请阅读

解决方案是请求另一个PayPal API方法检查

这是返回正确数据的请求

curl -v -X GET https://api.sandbox.paypal.com/v1/payments/sale/TRANSACTION_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"
curl -v -X GET https://api.sandbox.paypal.com/v1/payments/sale/TRANSACTION_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"