PHP PayPal API:为订单设置运费和可选折扣

时间:2014-10-23 09:21:04

标签: php paypal

使用REST API设置paypal订单的运费和折扣时遇到一些麻烦。

此处https://github.com/paypal/rest-api-sdk-php/blob/master/lib/PayPal/Api/Amount.php我看到最后一种方法是setDetails(),所以我使用Details()类来设置发货,然后我拨打了$amount->setDetails($details),但每次我得到400 error response {1}}。

这是代码

// $shipping_cost = 10; $subtotal = 100; $total = 110;
$details = new Details();
$details->setShipping($shipping_cost);
$details->setShipping($subtotal);

// Specify the payment amount.
$amount = new Amount();
$amount->setCurrency($currency);
$amount->setTotal($total);
$amount->setDetails($details);

可以肯定的是,如果我移除$details部分,它会被重定向到PayPal,但运费不会显示出来。

此错误是因为总计有些错误,只有在运费为0时才有效。

我也试过设置$amount->setTotal($total);,但没有运气。

这与文档站点上的代码完全相同,但它不起作用。

请帮我解决,我正在与它斗争2天,他们的文档根本没有帮助我。

谢谢。

1 个答案:

答案 0 :(得分:3)

您收到400响应代码,因为小计,税金和运费未累计金额。

尝试声明以下变量以进行测试:

$subtotal = 100; // These are just test values for this example
$ship_tax = 10;
$ship_cost = 10;
$currency = 'USD';
$total = $subtotal + $ship_tax + $ship_cost;

然后:

$details = new Details();
$details->setSubtotal($subtotal)
        ->setTax($ship_tax)
        ->setShipping($ship_cost);

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