【问题标题】:Capturing payments: The requested action could not be performed, semantically incorrect, or failed business validation捕获付款:请求的操作无法执行、语义不正确或业务验证失败
【发布时间】:2019-09-11 20:56:26
【问题描述】:

我对新的 PayPal API (v2) 和沙盒有疑问

1- 创建订单https://api.sandbox.paypal.com/v2/checkout/orders

{
    "intent": "CAPTURE",
    "purchase_units": [
        {
            "amount": {
                "currency_code": "USD",
                "value": 10
            },
            "payee": {
                "email": "xxxx@gmail.com",
                "merchant_id": "xxxx"
            }
        }
    ],
    "application_context": {
        "shipping_preference": "NO_SHIPPING"
    }
}

2- 转到响应中的approve 链接

如果沙盒帐户有信用卡,PayPal 会显示:“抱歉,我们无法处理您的请求。请稍后再试”

3- 登录并批准订单

沙盒帐户没有信用卡

单击继续按钮时,页面显示加载指示符,然后再次消失,没有任何反应

4- 查看订单状态,APPROVED

{
    ...
    "status": "APPROVED"
    ...
}

5- 尝试捕获付款https://api.sandbox.paypal.com/v2/checkout/orders/xxx/capture

{
    "name": "UNPROCESSABLE_ENTITY",
    "details": [
        {
            "issue": "TRANSACTION_REFUSED",
            "description": "The request was refused"
        }
    ],
    "message": "The requested action could not be performed, semantically incorrect, or failed business validation.",
    "debug_id": "939b641049ad2",
    "links": [
        {
            "href": "https://developer.paypal.com/docs/api/orders/v2/#error-TRANSACTION_REFUSED",
            "rel": "information_link",
            "method": "GET"
        }
    ]
}

【问题讨论】:

  • 你试过旧的 API 吗?
  • 他们说它在 v1 的文档中已被弃用

标签: paypal paypal-sandbox


【解决方案1】:

我想通了。这很简单。正文有效负载在application_context 中缺少return_url。 PayPal 确实需要更好地记录错误。

【讨论】:

    【解决方案2】:

    我花了 5 个小时来调试。与 Ziad 的情况一样,我的问题是 application_context,但与 Ziad 不同的是,我同时定义了 cancel_url 和 return_url。不过,我之前已将 payment_method 更改为我理解的更好的配置。

    这些变化对我有帮助。

    payment_method": {
        "payee_preferred": "IMMEDIATE_PAYMENT_REQUIRED"
    }
    

    到

    payment_method": {
        "payee_preferred": "UNRESTRICTED"
    }
    

    Paypal 没有帮助我们缩小这些无情的领域,这是罪魁祸首。

    【讨论】:

      【解决方案3】:

      迟到总比没有好:)

      我发现这个错误通常是因为用户没有回复 PayPal 的邮件来验证他们的身份! PayPal 偶尔会发送电子邮件以验证您的身份,我们中的一些人可能已将其标记为垃圾邮件!当您不回复并验证您的身份时,他们会限制您的帐户,然后您会收到此错误:

      description: "The merchant account is restricted."
      field: "/purchase_units/@reference_id=='default'/payee"
      issue: "PAYEE_ACCOUNT_RESTRICTED"
      
      The requested action could not be performed, semantically incorrect, or failed business validation.
      

      您必须登录您的 PayPal 帐户并转到 https://www.paypal.com/restore/dashboard

      【讨论】:

        【解决方案4】:

        UNPROCESSABLE_ENTITY 错误涵盖了大量问题,如他们的文档中所述: https://developer.paypal.com/docs/api/reference/orders-v2-errors/#capture-order

        在我的例子中,我使用的是旧的测试 Visa 4111 1111 1111 1111。如今,您必须在此处使用您在开发者帐户中生成的测试卡号: https://developer.paypal.com/developer/creditCardGenerator

        【讨论】:

        • 愚蠢的测试卡问题是我的问题,我花了几天时间试图弄清楚,因为他们的文档不清楚。
        猜你喜欢
        • 2021-04-14
        • 2016-01-28
        • 1970-01-01
        • 2018-07-15
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        • 2019-06-23
        相关资源
        最近更新 更多