我使用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"
}
答案 0 :(得分:0)
看起来您正在将Express Checkout API调用作为订单运行,然后您正在转向并执行DoCapture请求,但您正在传递auth id的订单ID而不是授权ID。如果您想将快速结账设置为订单而不是授权或销售,则需要通过以下方式执行呼叫。
SetExpressCheckout API调用(处理顺序)
GetExpressCheckoutDetail API调用
DoExpressCheckoutPayment API调用(作为订单处理)
DoAuthorization(执行身份验证,并传递您从EC流程中收到的订单ID)
DoCapture(对auth执行捕获,您将在此处调用先前调用中返回的auth id,而不是订单ID)