贝宝项目描述与其余api sdk

我正在使用https://github.com/paypal/rest-api-sdk-php

我想要显示一个项目描述审查,这里是代码:

  $amountDetails = new Details();
    $amountDetails->setSubtotal('7.41');
    $amountDetails->setTax('0.03');
    $amountDetails->setShipping('0.03');

    $amount = new Amount();
    $amount->setCurrency('USD');
    $amount->setTotal('7.47');
    $amount->setDetails($amountDetails);

    $transaction = new Transaction();
    $transaction->setAmount($amount);
    $transaction->setDescription('This is the payment transaction description.');




    $RedirectUrls = new RedirectUrls();
    $RedirectUrls ->setReturnUrl('http://localhost/mrSurvey/public/#/pricing');
    $RedirectUrls ->setCancelUrl('http://localhost/mrSurvey/public/#/pricing');

    $payment = new Payment();
    $payment->setIntent('sale');
    $payment->setPayer($payer);
    $payment->setTransactions(array($transaction));
    $payment->setRedirectUrls($RedirectUrls);

我所能看到的只是描述,但我想看到物品编号和小计,我错过了什么?

更新:所以我读了我需要添加一些东西:所以我做了这样的事情:

 $item = new Item();
 $item->setQuantity('1');
 $item->setName('benny');
 $item->setPrice('7.41');
 $item->setCurrency('USD');
 $item->setSku('blah');


 $items = new ItemList();
 $items->addItem(array($item));

...

$transaction->setItemList($items);

...

$payment = new Payment();
$payment->setIntent('sale');
$payment->setPayer($payer);
$payment->setTransactions(array($transaction));
$payment->setRedirectUrls($RedirectUrls);

$response = $payment->create($apiContext)->toarray();

return Response::json($response);

现在上面的代码给了我400错误......因为添加的东西,任何线索?


从你得到的更新中看起来你是在正确的轨道上。 但它也似乎也有一些问题,然后只是所述的问题

尝试将您的代码添加到catch中,并从PayPal回显消息

try{
  //your code here
}
catch(PayPalExceptionPayPalConnectionException $e) {
  //This will show error from paypal
  $e->getData()
}

我的猜测是因为我得到类似的错误是您没有正确添加您的物品(税,运费,小计等)等等。 试试这个示例@ https://github.com/paypal/PayPal-PHP-SDK/blob/master/sample/payments/ExecutePayment.php并让它首先工作,然后修改示例中的代码,对您的需求进行排序。

下面是我修改的一些代码,它适用于我。

请注意,您获得了商品说明和交易说明

 //run x through loop with ++
 $x = 0;

 //for item 
 $items[$x] = new Item();
 $items->setName($item_name)
 ->setDescription($item_description)
 ->setCurrency($currency)
 ->setQuantity($item_quantity)
 ->setTax($item_tax)
 ->setPrice($item_price)
 ->setSku($item_sku);

  $itemList = new ItemList();
  $itemList->setItems($items);

  //for transaction
  $transaction = new Transaction();
  $transaction
  ->setAmount($amount)
  ->setItemList($itemList)
  ->setDescription($payment_description)
  ->setInvoiceNumber($invoice_number);

function getTotals($quantity, $tax, $price){
  $tax = $tax * $quantity;
  $subtotal = $price * $quantity;
  $total = $tax + $subtotal;
} 
total = getTotal($item_quantity, $item_tax, $item_price);

我找到了答案,我们需要更多的细节来创建交易,并且您必须将正确的编号设置为subTotal(),total()等...

Each price item * Quantity = Subtotal

Subtotal +- Tax, Shipping etc... = total

这是我拥有的:

        $sdkConfig = array(
            "mode" => "sandbox"
        );

        $cred = new OAuthTokenCredential($client_id, $secret, $sdkConfig);
        $apiContext = new ApiContext($cred, 'Request' . time());
        $apiContext->setConfig($sdkConfig);

        $payer = new Payer();
        $payer->setPaymentMethod("paypal");

        foreach ($cartHasItems as $key => $order) {
            $item[$key] = new PayPalItem();
            $item[$key]->setName($order->getItem()->getName())
                ->setCurrency('EUR')
                ->setQuantity($order->getQuantity())
                ->setPrice($order->getItem()->getPrice());
        }

        if($cart->getPromoCode()){
            $item[1] = new PayPalItem();
            $item[1]->setName('Promo code '.$cart->getPromoCode()->getCode())
                ->setCurrency('EUR')
                ->setQuantity(1)
                ->setPrice(-$this->getDoctrine()->getRepository('AppBundle:CartHasItems')->countTotalForCart($cart, 'Promo'));
        }

        $itemList = new ItemList();
        $itemList->setItems($item);

        $details = new Details();
        $details->setTax($this->getDoctrine()->getRepository('AppBundle:CartHasItems')->countTotalForCart($cart, 'HT')*20/100)
                ->setSubtotal($this->getDoctrine()->getRepository('AppBundle:CartHasItems')->countTotalForCart($cart, 'HT'));

        $amount = new Amount();
        $amount->setCurrency("EUR")
            ->setTotal($this->getDoctrine()->getRepository('AppBundle:CartHasItems')->countTotalForCart($cart, 'All'))
            ->setDetails($details);

        $transaction = new Transaction();
        $transaction->setAmount($amount)
            ->setItemList($itemList)
            ->setDescription("Payment description")
            ->setInvoiceNumber(uniqid());

        $redirectUrls = new RedirectUrls();
        $redirectUrls->setReturnUrl($this->generateUrl('paypal_success', array(), UrlGeneratorInterface::ABSOLUTE_URL));
        $redirectUrls->setCancelUrl($this->generateUrl('order_validation', array('type' => 'paypal'), UrlGeneratorInterface::ABSOLUTE_URL));

        $payment = new Payment();
        $payment->setIntent("sale")
            ->setPayer($payer)
            ->setRedirectUrls($redirectUrls)
            ->setTransactions(array($transaction));

        $payment->create($apiContext);

加这个 ...

$transaction->setDescription("Payment description")

...

链接地址: http://www.djcxy.com/p/22795.html

上一篇: Paypal item description with the rest api sdk

下一篇: Silverlight + MVVM + Bindings = Memory leaks?