1

現在、PayPal サンドボックス内のカスタム カートを使用してオンライン ストアをテストしています。setExpressCheckout-> pay -> DoExpressCheckout のすべての取引手順を適切に実行できます。

DoExpressCheckout のステップ中に、データベースを注文で更新するのに良い時期だと思います。そのために、GetExpressCheckoutDetails 関数を使用してトランザクションの内容を取得します。悲しいことに、この関数はペイパルが提供するすべてのものを返しますが、カートの内容を見逃してしまいます。私が得ることができるのは、1 つのアイテムの詳細だけです。トランザクションに複数のアイテムが含まれる場合、最初のアイテムの詳細のみを取得します。

これが私のコードです(主に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);

ステップを見逃したり、悪い関数を呼び出したりしますか? 出くわしたすべての変数をprint_rしようとしたため、カートの完全なコンテンツがどこにも見つかりませんでした。トランザクションの「orderTotal」が元のカートと一致するため、これは奇妙に感じます。SetExpressCheckout ステップで元の注文を保存できましたが、paypal には既にそれらの値があるため、冗長であることがわかりました。

最後の手段として、$paypalService->getLastRequest() を使用してカートのコンテンツを見つけましたが、真剣にこれはペイパルによって返された生の XML であり、API はそれを適切に解析する必要があります :(.

読んでくれてありがとう

4

1 に答える 1

1

これとまったく同じ問題がありました.PayPalから返されたXMLは問題ありませんが、PHP SDKはそれを適切に解析しないため、GetExpressCheckoutの最後のアイテムしか表示できません.

この問題の修正を PayPal の GitHub の問題に投稿しました。確認してください。

https://github.com/paypal/SDKs/issues/37

于 2012-11-19T09:31:39.513 に答える