我正在使用以下代码执行用户已在 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
这很好,但是在使用此代码执行之后它会返回 state approved
。
approved
如果这意味着交易已完成,这很好,但是在开发人员仪表板上,交易completed
按我的预期显示!
为什么代码approved
真的会返回completed
?
谢谢
更新:我刚刚检查了http://sandbox.paypal.com并以我的商家测试帐户和我使用的客户测试帐户登录,并且都说交易已完成。我可以证明这一点,因为如果我尝试重新执行订单,它会返回 500 错误。这真的很令人困惑,为什么它返回不一致的数据......
截图:
从上面的代码返回...
开发者网站上的订单视图...
是什么Approved
意思Completed
?