我使用以下代码执行用户在Paypal.com上批准的付款:
// Get the order object
$order_object = new Order($_GET["orderid"]);
// Complete the payment
$payment = Payment::get($order_object->paypal_payment_id, $apiContext);
//Set the payer id
$order_object->SetPayerId($_GET["PayerID"]);
try
{
// PaymentExecution object includes information necessary
// to execute a PayPal account payment.
// The payer_id is added to the request query parameters
// when the user is redirected from paypal back to your site
$execution = new PaymentExecution();
$execution->setPayer_id($_GET["PayerID"]);
//Execute the payment
// (See bootstrap.php for more on `ApiContext`)
$finished_payment = $payment->execute($execution, $apiContext);
}
catch(PayPal\Exception\PPConnectionException $e)
{
echo "<p>PPConnectionException - Already executed payment?</p>";
}
echo "Payment state: " . $finished_payment->getState() . '<br/>';
echo "Payment ID:" . $finished_payment->getId() . '<br/>';
如果在执行之前我得到了订单的状态,它会返回created
,这很好,但是在使用此代码执行后,它返回状态approved
。
如果approved
表示交易已完成,那就没问题了,但是在开发者信息中心上,交易显示为completed
,正如我预期的那样!
为什么代码在真正approved
时会返回completed
?
由于
更新:我刚刚检查了http://sandbox.paypal.com并登录了我的商家测试帐户和我使用的客户测试帐户,并且两人都说交易已完成。 我可以证明这一点,因为如果我尝试重新执行该命令,它将返回500错误。 这实在令人困惑,为什么它会返回不一致的数据...
截图:
从上面的代码返回......
开发者网站上的订单视图......
Approved
是Completed
是什么意思?
答案 0 :(得分:2)
是的,通过此处的文档完成了已批准的平均值:https://developer.paypal.com/webapps/developer/docs/api/#execute-an-approved-paypal-payment 如果一切顺利,响应必须是“状态”:“已批准”。
答案 1 :(得分:2)
提问者未能区分付款和销售。
“已批准”是付款的最终满意状态。 https://developer.paypal.com/docs/api/#look-up-a-payment-resource
付款获批后,即会创建销售。然后,您可以在Payment JSON的“transactions / related_resources”字段中找到它。 “完成”是一种快乐的销售状态。