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

Posted

技术标签:

【中文标题】Paypal SDK - 在付款执行后仪表板显示“已完成”时返回“已批准”【英文标题】:Paypal SDK - Returning "Approved" when the Dashboard says "Completed" after payment execution 【发布时间】:2013-08-19 11:33:17 【问题描述】:

我正在使用以下代码执行用户已在 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吗?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

提问者无法区分付款和销售。

“已批准”是付款的最终满意状态。 https://developer.paypal.com/docs/api/#look-up-a-payment-resource

一旦付款获得批准,就会创建销售。然后,您可以在 Payment JSON 的“transactions/related_resources”字段中找到它。 “完成”是一种愉快的销售状态。

【讨论】:

以上是关于Paypal SDK - 在付款执行后仪表板显示“已完成”时返回“已批准”的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 REST SDK 获取已执行 PayPal 付款的销售 ID

在 PayPal SDK (Java) 中执行批准的付款时在哪里获取 payerId

PayPal REST SDK 未在 execute() 上返回正确状态

Paypal rest sdk沙盒账户在0资金后仍然可以付款

使用 REST api 执行 PayPal 付款

PayPal REST SDK:删除送货地址和付款授权,使其进入待处理状态[关闭]