【问题标题】:Cannot capture amounts after DoExpressCheckoutPayment with parallel paymentDoExpressCheckoutPayment 后无法通过并行支付获取金额
【发布时间】:2013-06-11 08:15:15
【问题描述】:

我使用 PayPal 的 Express Checkout API 进行并行付款。一切正常,在收款人网站上,2 笔付款被预订为“开放”。

在 DoExpressCheckoutPayment 时,我会为每笔付款获得一个交易 ID。但是 doCapture 失败并显示“You%20do%20not%20have%20permissions%20to%20make%20this%20API%20call”。几周前我进行了一次授权付款,但从未收到过付款给我的只是“Order%20has%20expired%2e”——这很好。

我为 NVP API 使用以下参数:

    $parameters = array("METHOD"=>"DoCapture",
                "AUTHORIZATIONID"=>$transactionid_item,
                "AMT"=>$amt_item,
                "CURRENCYCODE"=>$currencycode,
                "COMPLETETYPE"=>"Complete"
               );

当变量当然是每次付款的对应值时。 (加上身份验证/api 凭证)。

我做错了什么?当我进行并行付款而不是单次付款时,是否需要设置其他变量?

问候,

克里斯

这是一个示例调用和响应:

https://api-3t.sandbox.paypal.com/nvp?METHOD=DoCapture&AUTHORIZATIONID=O-67121848EA448750G&AMT=9.70&CURRENCYCODE=EUR&COMPLETETYPE=Complete&USER=xxx&PWD=xxx&SIGNATURE=xxx&VERSION=95.0

array(9) {
  ["TIMESTAMP"]=>
  string(28) "2013%2d06%2d15T09%3a35%3a52Z"
  ["CORRELATIONID"]=>
  string(12) "140dec053198"
  ["ACK"]=>
  string(7) "Failure"
  ["VERSION"]=>
  string(6) "95%2e0"
  ["BUILD"]=>
  string(7) "6444009"
  ["L_ERRORCODE0"]=>
  string(5) "10007"
  ["L_SHORTMESSAGE0"]=>
  string(19) "Permission%20denied"
  ["L_LONGMESSAGE0"]=>
  string(67) "You%20do%20not%20have%20permissions%20to%20make%20this%20API%20call"
  ["L_SEVERITYCODE0"]=>
  string(5) "Error"
}

【问题讨论】:

  • 您能否提供您发送的 API 请求减去您的凭据以及您返回的 API 响应。使用响应中返回的关联 ID,我可以检查我们这边的日志以了解问题可能是什么。
  • 好的,我已将其添加到原始帖子中。也许我只是做错了什么。

标签: paypal express-checkout


【解决方案1】:

看起来您正在将 Express Checkout API 调用作为订单运行,然后您正在转身并执行 DoCapture 请求,但您传递的是 auth id 而不是授权 id 的订单 id。如果您想将 Express Checkout 设置为订单而不是身份验证或销售,则需要通过以下方式执行调用。

SetExpressCheckout API 调用(按订单处理)
GetExpressCheckoutDetail API 调用
DoExpressCheckoutPayment API 调用(按订单处理)

DoAuthorization(执行身份验证,并传递您从 EC 流程收到的订单 ID)

DoCapture(对 auth 执行捕获,您将在此处传递上一次调用中返回的 auth id,而不是订单 id)

【讨论】:

  • 您好,这都是按订单处理的。我不知道的是,我必须在 DoCapture 之前进行 DoAuthorization。所以我尝试了但没有运气。所以为此我做了 .../nvp?METHOD=DoAuthorization&TRANSACTIONID=O-66439431R6885290D&AMT=9.70&TRANSACTIONENTITY=Order&CURRENCYCODE=EUR&USER=...&PWD=...&SIGNATURE=...&VERSION=95.0 但得到了 Permission%20denied 回。现在出了什么问题?
  • 这是一个老问题,但只是为了以后遇到它的人:上面的答案听起来像 DoAuthorization 是必需的步骤。它不是。您可以执行 DoEC(订单)、DoAuth(来自订单)、DoCapture(来自身份验证),或者您可以执行 DoEC(订单)、DoCapture(来自订单),而无需干预 DoAuth 调用。调用者的错误只是他们实际上是在传递一个 orderID 时说他们有一个 authID。您必须正确识别您拥有的 ID。另请注意,由于未保留资金,因此不保证针对 OrderID 的 DoCapture 会成功。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
  • 2015-10-01
  • 2016-10-22
  • 2016-04-29
  • 2018-05-26
  • 1970-01-01
相关资源
最近更新 更多