Paypal 无法使用GetExpressCheckoutDetails获取完整的购物车详细信息

Paypal 无法使用GetExpressCheckoutDetails获取完整的购物车详细信息,paypal,paypal-sandbox,Paypal,Paypal Sandbox,我目前正在使用paypal沙盒中的自定义购物车测试一个在线商店。 我能够正确地完成所有的转换步骤 setExpressCheckout->pay->DoExpressCheckout 在DoExpressCheckout步骤中,我认为这是用订单更新数据库的好时机。为此,我使用GetExpressCheckoutDetails函数来检索事务的内容。 遗憾的是,这个函数返回了paypal提供的所有内容,但是错过了我购物车的内容。我所能得到的只是一个项目的细节。如果交易涉及多个项目,我只会得到第一个项

我目前正在使用paypal沙盒中的自定义购物车测试一个在线商店。 我能够正确地完成所有的转换步骤 setExpressCheckout->pay->DoExpressCheckout

在DoExpressCheckout步骤中,我认为这是用订单更新数据库的好时机。为此,我使用GetExpressCheckoutDetails函数来检索事务的内容。 遗憾的是,这个函数返回了paypal提供的所有内容,但是错过了我购物车的内容。我所能得到的只是一个项目的细节。如果交易涉及多个项目,我只会得到第一个项目的详细信息

以下是我的代码(主要取自paypal示例):

我是否遗漏了一个步骤或调用了一个错误的函数。因为我试图打印我遇到的每个变量,但却找不到我购物车的全部内容。我觉得这很奇怪,因为交易的“orderTotal”与我的原始购物车匹配。我可以在SetExpressCheckout步骤中存储我的原始订单,但由于paypal已经有了这些值,我发现它是多余的

作为最后一种手段,我确实使用$paypalService->getLastRequest()找到了购物车的内容,但说真的,这是paypal返回的原始XML,api应该正确解析它:(


感谢您阅读

我遇到了完全相同的问题-虽然PayPal返回的XML很好,但他们的PHP SDK无法正确解析它,因此您只能在GetExpressCheckout中看到最后一项

我在PayPal的GitHub上发布了一个问题的解决方案,请查看:


我遇到了完全相同的问题-虽然PayPal返回的XML很好,但他们的PHP SDK无法正确解析它,因此您只能在GetExpressCheckout中看到最后一项

我在PayPal的GitHub上发布了一个问题的解决方案,请查看:


这类东西是我很久以前放弃PayPal SDK的原因。我开发了自己的SDK,比他们的更好用,并且我从大量使用该类的开发人员那里得到了相同的反馈。这类东西是我很久以前放弃PayPal SDK的原因。我开发了自己的SDK,比他们的更好用o与than's一起工作,我从大量使用该类的开发人员那里得到了相同的反馈。谢谢你的错误通知单。我毕竟没有疯谢谢你的错误通知单。我毕竟没有疯
$token =urlencode( $_REQUEST['token']);
$payerId=urlencode(  $_REQUEST['PayerID']);
$getExpressCheckoutDetailsRequest = new GetExpressCheckoutDetailsRequestType($token);

$getExpressCheckoutReq = new GetExpressCheckoutDetailsReq();
$getExpressCheckoutReq->GetExpressCheckoutDetailsRequest = $getExpressCheckoutDetailsRequest;

$paypalService = new PayPalAPIInterfaceServiceService();
$getECResponse = $paypalService->GetExpressCheckoutDetails($getExpressCheckoutReq);

$details = $getECResponse->GetExpressCheckoutDetailsResponseDetails;

// $details->PaymentDetails->PaymentDetailsItem this array should hold all items details
// sadly it always have 1 element instead of the full content of my cart :(

$orderTotal = $details->PaymentDetails->OrderTotal;

$PaymentDetails= new PaymentDetailsType();
$PaymentDetails->OrderTotal = $orderTotal;

 // 
 Some stuff with payment details
 //

$DoECRequestDetails = new DoExpressCheckoutPaymentRequestDetailsType();

$DoECRequest = new DoExpressCheckoutPaymentRequestType();
$DoECRequest->DoExpressCheckoutPaymentRequestDetails = $DoECRequestDetails;


$DoECReq = new DoExpressCheckoutPaymentReq();
$DoECReq->DoExpressCheckoutPaymentRequest = $DoECRequest;

$DoECResponse = $paypalService->DoExpressCheckoutPayment($DoECReq);