从数据库动态创建的 PayPal SDK (PHP) 项目

Posted

技术标签:

【中文标题】从数据库动态创建的 PayPal SDK (PHP) 项目【英文标题】:PayPal SDK (PHP) items creating dynamically from database 【发布时间】:2017-08-05 21:45:10 【问题描述】:

我正在使用 PayPal SDK (php)。我正在尝试从数据库动态创建项目。所有计算将由动态完成。但我失败了。谁能帮我?这里代码:

$item_1 = new Item();
        $item_1->setName('Item 1') /** item name **/
            ->setCurrency('USD')
            ->setQuantity(1)
            ->setPrice($request->get('amount')); /** unit price **/
        $item_list = new ItemList();
        $item_list->setItems(array($item_1));
        $amount = new Amount();
        $amount->setCurrency('USD')
            ->setTotal($request->get('amount'));
        $transaction = new Transaction();
        $transaction->setAmount($amount)
            ->setItemList($item_list)
            ->setDescription('Your transaction description') 

【问题讨论】:

【参考方案1】:
$order_subtotal = $order->invoice->sub_total;
       $ship_tax = 0;
       $ship_cost = 0;
       $shipping_discount = $order->invoice->discount;
       $total = $order_subtotal + $ship_tax + $ship_cost - $shipping_discount;
        $items = [];
    foreach($order->invoice->products as $product)
    
        $item = new Item();
        $item->setName($product->name)
            ->setPrice($product->price)
            ->setCurrency('USD')
            ->setQuantity($product->qty);
        $items[] = $item; 
    
    $itemList = new ItemList();
    $itemList->setItems($items);

    $details = new Details();
    $details->setSubtotal($order_subtotal)
            ->setTax($ship_tax)
            ->setShipping($ship_cost)
            ->setShippingDiscount(- $shipping_discount);


    $amount = new Amount();
    $amount->setCurrency('USD')
        ->setDetails($details)
            ->setTotal($total);

【讨论】:

【参考方案2】:
$order_discount = $order->invoice->discount;
$order_subtotal = $order->invoice->sub_total;
$order_grandtotal = $order->invoice->grand_total;

$i = 1;
$order_items = array();
foreach ($order->invoice->products as $product) 

$order_items[$i] = new Item();
$order_items[$i]->setName($product->name)
->setCurrency('USD')
->setQuantity($product->qty)
->setPrice($product->price);

$i++;


if ($order->order_discount > 0) 
$order_items[$i] = new Item();
$order_items[$i]->setName('Discount')
->setCurrency('USD')
->setQuantity(1)
->setPrice('-' . $order_discount);


$item_list = new ItemList();
$item_list->setItems($order_items);

$amount_details = new Details();
$amount_details->setSubtotal($order_subtotal);

$amount = new Amount();
$amount->setCurrency('USD')
->setDetails($amount_details)
->setTotal($order_grandtotal);
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($item_list)
->setDescription('Your transaction description')
->setInvoiceNumber($order->invoice->invoice_no);

【讨论】:

但问题是:PayPalHttpConnection.php 第 154 行中的 PayPalConnectionException:访问api.sandbox.paypal.com/v1/payments/payment 时获得 Http 响应代码 400。

以上是关于从数据库动态创建的 PayPal SDK (PHP) 项目的主要内容,如果未能解决你的问题,请参考以下文章

使用 PayPal-PHP-SDK 进行第三方支付的 Paypal 沙盒测试

PayPal PHP SDK - 如何通过 PayPal 传递自定义变量?

发票 PayPal-PHP-SDK 中的 Paypal notify_url

用于 PayPal RESTful API 的 PHP SDK 上线错误

PayPal PHP SDK错误 - 项目金额必须添加到指定的金额小计

与 Paypal 的 PHP REST SDK 的支付协议