php - DoAuthorization 返回 "Permission denied"错误

标签 php paypal

我们正在开发一个买卖双方会面进行交易的市场(类似于 Ebay)。我们希望支持通过 PayPal 支付,我们不打算收取任何服务费。由于我们是一家初创公司,因此我们的任何间接文书工作都是多余的,因此我们决定任何 PayPal 交易都直接在买卖双方之间进行。

但是,我们希望为卖家提供接受/拒绝机制,因此他们必须手动批准每个订单(以防某些商品在他们的实体店缺货等)。接受订单后,应将款项转给卖家。

经过大量思考和阅读 PayPal 文档后,我们决定采用使用身份验证/捕获和并行支付概念的 Express Checkout。我们已经成功集成了 Express Checkout,一切正常,直到调用 DoAuthorization API,不幸的是失败了。到目前为止,我们所做的一切都在 PayPal 沙盒中。

为了让您了解我们与 PayPal 端点的通信是如何工作的,下面是我们正在做的事情(只会显示重要的字段):

  1. 使用 PAYMENTREQUEST_0_PAYMENTACTION=OrderPAYMENTREQUEST_0_SELLERPAYPALACCOUNTID={卖家的 PayPal 电子邮件地址} 调用 SetExpressCheckout
  2. 将买家重定向到 RedirectURL 以授权付款
  3. 调用GetExpressCheckoutDetails获取付款信息​​
  4. 调用具有PAYMENTREQUEST_0_PAYMENTACTION=OrderDoExpressCheckoutPayment

这里我们得到了状态为“待定”的交易信息,到目前为止似乎一切正常(交易在卖家的 PayPal 账户中也可见,状态为“待定”)。现在根据可用的文档,我们需要调用 DoAuthorization 以完成身份验证过程。但是,在调用 DoAuthorization 之后,我们遇到了一个错误:

[L_ERRORCODE] => 10007
[L_SHORTMESSAGE] => Permission denied
[L_LONGMESSAGE] => You do not have permissions to make this API call
[L_SEVERITYCODE] => Error

这是我们通过 DoExpressCheckoutPaymentDoAuthorization API 调用发送和接收的内容(仅显示重要部分):

DoExpressCheckoutPayment

请求

[REQUESTDATA] => Array
    (
        [USER] => {our API username}
        [PWD] => {our API password}
        [VERSION] => 98.0
        [BUTTONSOURCE] => AngellEYE_PHPClass
        [SIGNATURE] => {our API signature}
        [METHOD] => DoExpressCheckoutPayment
        [TOKEN] => {token we got from SetExpressCheckout}
        [PAYERID] => {payer ID we got from GetExpressCheckoutDetails}
        [RETURNFMFDETAILS] => 1
        [NOSHIPPING] => 1
        [PAYMENTREQUEST_0_AMT] => 123
        [PAYMENTREQUEST_0_ITEMAMT] => 23
        [PAYMENTREQUEST_0_SHIPPINGAMT] => 100
        [PAYMENTREQUEST_0_CURRENCYCODE] => EUR
        [PAYMENTREQUEST_0_DESC] => Order #54
        [PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID] => {seller's PayPal email address}
        [PAYMENTREQUEST_0_PAYMENTACTION] => Order
    )

响应

[PAYMENTS] => Array
    (
        [0] => Array
            (
                [TRANSACTIONID] => {we get some transaction ID here}
                [TRANSACTIONTYPE] => expresscheckout
                [PAYMENTTYPE] => None
                [ORDERTIME] => 2014-01-15T22:43:19Z
                [AMT] => 123.00
                [FEEAMT] =>
                [SETTLEAMT] =>
                [TAXAMT] => 0.00
                [EXCHANGERATE] =>
                [CURRENCYCODE] => EUR
                [PAYMENTSTATUS] => Pending
                [PENDINGREASON] => order
                [REASONCODE] => None
                [PROTECTIONELIGIBILITY] => None
                [ERRORCODE] => 0
            )
    )

授权

请求

[REQUESTDATA] => Array
    (
        [USER] => {our API username}
        [PWD] => {our API password}
        [VERSION] => 98.0
        [BUTTONSOURCE] => AngellEYE_PHPClass
        [SIGNATURE] => {our API signature}
        [METHOD] => DoAuthorization
        [TRANSACTIONID] => {transaction ID we got from DoExpressCheckoutPayment}
        [AMT] => 123
        [CURRENCYCODE] => EUR
    )

响应

[ERRORS] => Array
    (
        [0] => Array
            (
                [L_ERRORCODE] => 10007
                [L_SHORTMESSAGE] => Permission denied
                [L_LONGMESSAGE] => You do not have permissions to make this API call
                [L_SEVERITYCODE] => Error
            )
    )

在花了一周的时间试图让它工作、谷歌搜索并浏览所有可用的文档以试图找到我们是否必须具有调用 DoAuthorization API 的权限之后,我们一无所知。 如果这个问题太长,我们深表歉意,但我们希望您全面了解正在发生的事情以及我们如何使用 PayPal API 处理事情。如果知识渊博的人可以阐明这个问题,我们将不胜感激。

最佳答案

通常,这种错误的含义与它所说的完全一致,而您的 PayPal 帐户根本无权进行该特定调用。

您是否特别想暂停资金?您可以运行 DoCapture 直接捕获订单,而无需在两者之间进行授权,但订单授权实际上并不持有资金,因此这是您难题的重要组成部分,您需要联系 PayPal 了解您获得的原因那个错误。

您可以向 www.paypal.com/mts 提交票证,该票证将直接发送给技术支持。他们最近在更快地恢复工单方面做得更好,所以我肯定会尝试。

与此同时,您可以尝试电话支持,但是,一般电话代表往往不知道如何解决此类问题,最终可能会造成更多困惑。

在任何一种情况下,只要让他们知道您正在尝试调用 DoAuthorization API 但您收到此错误,他们应该能够帮助追踪问题并为您解决。

如果您仍然无法获得帮助,请告诉我,我可以直接联系我在 PayPal 的一些联系人。

关于php - DoAuthorization 返回 "Permission denied"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21156051/

相关文章:

php - 外部 CSS 链接在 codeIgniter 中不起作用

paypal - Omnipay/Paypal Gateway - 交易显示成功,而 Paypal 沙盒帐户不显示交易的债务/信用

Laravel Paypal 删除包但错误仍然存​​在

paypal - Paypal (Paypal),authorize.net和许多其他付款网关服务如何能够访问签证卡而不管银行如何?

paypal - 使用 Paypal 捐赠按钮选择金额

PayPal Sandbox 帐户新设计,无法登录

php - 针对 MySQL 查询优化慢速匹配

javascript - 通过 AJAX 和 PHP 通过输入 HTML 获取和读取文件

php - MySql PHPmyadmin 错误 #1062

php - 如何处理不同时区的 MYSQL NOW()?