我目前正在使用 Paypal 沙箱中的自定义购物车测试在线商店。 我能够正确完成所有交易步骤 setExpressCheckout-> pay -> DoExpressCheckout.
在 DoExpressCheckout 步骤中,我认为现在是用订单更新我的数据库的好时机。为此,我使用 GetExpressCheckoutDetails 函数来检索交易的内容。 可悲的是,此功能返回 Paypal 必须提供的所有内容,但错过了我的购物车的内容。我所能得到的只是一件元素的细节。如果交易涉及多个项目,我只会得到第一个项目的详细信息。
这是我的代码(主要来自 Paypal 样本):
$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);
我是错过了一个步骤还是调用了一个错误的函数。因为我试图打印我遇到的每个变量,所以我的购物车的全部内容无处可寻。我觉得这很奇怪,因为交易的“orderTotal”与我原来的购物车相匹配。我可以在 SetExpressCheckout 步骤中存储我的原始订单,但由于 paypal 已经有了这些值,我发现它是多余的。
作为最后的手段,我确实使用 $paypalService->getLastRequest() 找到了我的购物车的内容,但说真的,这是 paypal 返回的原始 XML,api 应该正确解析它:(。
感谢阅读
最佳答案
我遇到了完全相同的问题 - 虽然 PayPal 返回的 XML 没有问题,但他们的 PHP SDK 无法正确解析它,因此您只能在 GetExpressCheckout 中看到最后一项。
我已经在 PayPal 的 GitHub 上发布了针对此问题的修复,请查看:
关于paypal - 无法使用 GetExpressCheckoutDetails 获取完整的购物车详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12292832/