PayPal API 返回 RESOURCE_NOT_FOUND/INVALID_RESOURCE_ID 但交易列在 Sandbox Business 帐户中

标签 paypal paypal-sandbox

我有一个类似的问题。

设置

  • Paypal 沙盒环境
  • 两个测试帐户(个人帐户和企业帐户)。在测试期间,个人账户购买产品。交易进入企业账户。
  • 我创建了 REST API 应用程序,它连接到上面的 Sandbox Business 帐户。
  • 我登录:https://www.sandbox.paypal.com/使用企业帐户的凭据生成 PayPal 按钮。按钮的 HTML 代码已添加到我的网站。

  • 步骤
  • 我打开网站并单击 PayPal 按钮。
  • 我使用个人帐户的凭据登录到 PayPal Sandbox。
  • 我完成了付款过程。
  • 我登录到企业账户,我看到交易(订单)列在那里。我可以看到交易 ID。

  • 问题

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

    之后,我打开 Postman 并向 PayPal API 发送以下请求以生成访问 token (文档:https://developer.paypal.com/docs/api/get-an-access-token-curl/)。
    curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
       -H "Accept: application/json" \
       -H "Accept-Language: en_US" \
       -u "client_id:secret" \
       -d "grant_type=client_credentials"
    

    到现在为止还挺好。然后我向 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"
        }
    }
    

    我试过 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": "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 按钮(使用企业帐户生成)发起的付款的默认行为是销售,而不是订单。有关两者之间差异的更多详细信息,请阅读此处 - https://www.paypal.com/us/smarthelp/article/what-are-the-differences-between-the-express-checkout-payment-actions-ts1501

    解决方案是向另一个 PayPal API 方法发出请求(检查:https://developer.paypal.com/docs/paypal-plus/germany/how-to/show-sale/?fbclid=IwAR30yROZMjKT2LlRgSRuVBMGrjdmN1MGbuJ50rUiUBWwW11FSpGdxk5JNpY#show-sale-details)

    这是返回正确数据的请求。
    curl -v -X GET https://api.sandbox.paypal.com/v1/payments/sale/TRANSACTION_ID \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer Access-Token"
    

    最佳答案

    解决方案

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

    解决方法是向另一个PayPal API 方法检查发出请求this

    这是返回正确数据的请求。

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

    关于PayPal API 返回 RESOURCE_NOT_FOUND/INVALID_RESOURCE_ID 但交易列在 Sandbox Business 帐户中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61042832/

    相关文章:

    wordpress - 使用借记卡或信用卡的 Woocommerce Paypal Pay 间歇性不显示

    flutter - flutter 中的 Paypal 集成

    android - 在 Android 中使用 paypal 快速结帐

    php - 使用 POST 从 PHP 页面将自定义购物车上传到 Paypal

    php - paypal ipn 案例未调用 paypal "pay now"

    rest - PayPal REST API 支付状态的含义和原因

    php - 用于购物车的 Paypal IPN 处理程序

    angular - 在 Angular 4 中处理 Paypal onAuthorize 回调

    paypal - Doexpresscheckoutpayment 支付未被用户授权

    paypal - GetVerifiedStatus API 调用中的 matchCriteria NONE 可以吗?