添加负价格订单项或折扣

时间:2017-07-14 21:44:06

标签: authorize.net

我在店面使用优惠券来提供折扣。对于大于特定值的订单,某些优惠券的金额为美元。比如,订单满$ 40减$ 10。其他优惠券给予折扣率,比如说,这个月你的第一个订单减少了20%(店面正在处理限制,所以可以忽略)。我想使用authorize.net来处理交易,并将收据发送给客户。

我的第一个想法是修改打折的东西的单价。这对于费率折扣可以正常工作,但不会显示所有信息。问题是平板折扣。如果有几种商品,你在哪里可以减少10美元。

我的第二个想法是在订单收据中添加一个负值/价格的订单项。授权似乎不接受任何负面价值,因此这是一个失败。

我们正在使用Java的AIM事务库。

Order anetOrder = Order.createOrder();
anetOrder.setInvoiceNumber(sanitize(order.getOrderNumber(), 20));
anetOrder.setShippingCharges(shippingCharges);
anetOrder.setTotalAmount(total);

for (OrderProductIf op : order.getOrderProducts()) {
    OrderItem item = OrderItem.createOrderItem();
    item.setItemTaxable(true);
    item.setItemId(sanitize(op.getSku(), 31));
    item.setItemName(sanitize(op.getName(), 31));
    item.setItemDescription(sanitize(op.getModel(), 255));
    item.setItemPrice(op.getPrice());
    item.setItemQuantity(new BigDecimal(op.getQuantity()));

    anetOrder.addOrderItem(item);
}

sanitize是一个限制字符串长度的函数。

Transaction transaction = merchant.createAIMTransaction(TransactionType.AUTH_CAPTURE, total);
transaction.setCreditCard(creditCard);
transaction.setCustomer(customer);
transaction.setOrder(anetOrder);
transaction.setShippingAddress(shippingAddress);
transaction.setShippingCharges(shippingCharges);

Result<Transaction> result = (Result<Transaction>) merchant.postTransaction(transaction);
return getPaymentResult(result);

我在这里没有想法。

2 个答案:

答案 0 :(得分:0)

一种方法是使用折扣计算总金额而不修改订单项,以低于10美元的折扣进行60美元的折扣:

<transactionRequest>
    <transactionType>authCaptureTransaction</transactionType>
    <amount>50</amount>

然后添加

<userFields>
      <userField>
        <name>Discount</name>
        <value>$10.00</value>
      </userField>

userField值是任意的,如果您更喜欢它,请使用10.00美元。

答案 1 :(得分:0)

这些订单项未总计。所以

  • 在您的系统中添加要贷记的订单项。
  • 当您提交到Authorize.net时,请检查负数并更改说明以表明它是贷方,然后将值更改为正数
  • 确保您提交的TOTAL总数正确无误。 Authorize.net不会检查您的订单项加起来是否正确