在使用并行付款的DoExpressCheckoutPayment之后无法捕获金额

时间:2013-06-14 15:55:06

标签: paypal express-checkout

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

DoExpressCheckoutPayment我获得每笔付款的交易ID。但是doCapture失败了“You%20do%20not%20have%20permissions%20to%20make%20this%20API%20call”。我几个星期前发过但从未捕获过的单一授权付款只给了我“订购%20还是20%已付出%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"
}

1 个答案:

答案 0 :(得分:0)

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

SetExpressCheckout API调用(处理顺序)
GetExpressCheckoutDetail API调用
DoExpressCheckoutPayment API调用(作为订单处理)

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

DoCapture(对auth执行捕获,您将在此处调用先前调用中返回的auth id,而不是订单ID)