1

我正在创建一个 ZenCart 支付模块。我可以通过产品,运输细节以及运费,但它不会通过优惠券而不弄乱货币格式。

如果我这样做,它根本不会显示优惠券

 $mCouponCost => $order->info['coupon_cost']  * $order->info['currency_value'];

如果我这样做,它会显示优惠券,但会弄乱货币格式

  $mCouponCost = $order->info['coupon_cost']  -> $order->info['currency_value'];    

所有代码如下:

  $mCouponCost = $order->info['coupon_cost'] - $order->info['currency_value'];
  if (!empty($mCouponCost)) {
  $j++;
  $process_button_string .= zen_draw_hidden_field('LIDSKU' . $j, 'Coupon') .
                                        zen_draw_hidden_field('LIDDesc' . $j, 'Coupon Cost') .
                            zen_draw_hidden_field('LIDPrice' . $j, number_format($mCouponCost, 2, '.', '')) .
                            zen_draw_hidden_field('LIDQty' . $j, '1') .
                            zen_draw_hidden_field('ShippingRequired' . $j, '1') .
                            zen_draw_hidden_field('IsVoucher' . $j, '0');
 }

我哪里错了?

4

1 回答 1

0

您发布了 $mCouponCost = xxxxxxx 的 3 个变体

  • 第一个使用 * 来相乘 ... 这是正确的解决方案。

  • 第二个使用 -> 这肯定是错误的,因为数据不是 -> 需要的对象格式。

  • 第三个是您所说的“所有代码”的一部分,它使用 - 这将是减法,并且绝对不会产生正确的结果。

您的代码需要一些东西,其中一些在您的帖子中没有:

a) $order 对象必须在您使用它的函数/方法中声明为全局对象

b) 您必须编写自己的代码来实际声明 $order->info 数组的“coupon_cost”元素并为其赋值

c) 如果您处理多种货币,则将基本成本乘以 $order->info['currency_value'] 将得出客户购物时所用货币的正确结果。

确定您的问题是否实际上与您首先引用的代码行有关的简单测试是简单地分配

$mCouponCost = $order->info['coupon_cost'];

即:根本不做任何乘法。这样做会揭示有关其他问题实际上可能导致您遇到的困难的有用信息。

于 2012-08-10T03:04:54.680 回答