php – Paypal SDK – 在付款执行后仪表板显示“已完成”时返回“已批准”

我使用以下代码执行用户在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/>';

如果我在执行它之前获得了订单的状态,它会返回创建的,这很好,但是在使用此代码执行后,它会返回状态已批准.

如果批准意味着交易已完成,这将没有问题,但是在开发人员仪表板上,交易显示为按预期完成!

为什么代码在真正完成后才会被批准?

谢谢

更新:我刚检查了http://sandbox.paypal.com登录了我的商家测试帐户和我使用的客户测试帐户,并且两人都说交易已完成.
我可以证明这一点,因为如果我尝试重新执行该命令,它将返回500错误.
这实在令人困惑,为什么它会返回不一致的数据……

截图:

从上面的代码返回…

在开发者网站上查看订单…

批准的意思是否完成?

解决方法:

是的,通过此处的文档完成批准的平均值:https://developer.paypal.com/webapps/developer/docs/api/#execute-an-approved-paypal-payment
如果一切顺利,响应必须是“状态”:“已批准”.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...