0

我使用 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"
}
4

1 回答 1

0

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


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

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

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

于 2013-06-17T14:07:49.323 回答