Authorize.net 添加负价格行项目或折扣

Authorize.net 添加负价格行项目或折扣,authorize.net,Authorize.net,我在店面用优惠券打折。有些优惠券是针对大于特定值的订单的固定美元金额。比如说,40美元或更多的订单可以打10美元的折扣。其他优惠券提供折扣率,比如说,本月第一次订购可享受20%的折扣(店面正在处理此限制,因此可以忽略不计)。我想使用authorize.net处理交易,并向客户发送收据 我的第一个想法是修改打折商品的单价。这对于费率折扣很有效,但并没有显示所有信息。问题是要有统一的折扣。如果有几种商品,你在哪里可以减价10美元 我的第二个想法是在订单收据中添加一个具有负值/价格的行项目。Autho

我在店面用优惠券打折。有些优惠券是针对大于特定值的订单的固定美元金额。比如说,40美元或更多的订单可以打10美元的折扣。其他优惠券提供折扣率,比如说,本月第一次订购可享受20%的折扣(店面正在处理此限制,因此可以忽略不计)。我想使用authorize.net处理交易,并向客户发送收据

我的第一个想法是修改打折商品的单价。这对于费率折扣很有效,但并没有显示所有信息。问题是要有统一的折扣。如果有几种商品,你在哪里可以减价10美元

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

我们正在使用针对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);
Transaction Transaction=merchant.createAIMTransaction(TransactionType.AUTH_CAPTURE,总计);
交易。设置信用卡(信用卡);
交易。设置客户(客户);
事务处理.setOrder(anertorder);
事务处理。设置shippingAddress(shippingAddress);
交易。设置运费(运费);
结果结果=(结果)商户。交易后(交易);
返回getPaymentResult(结果);

我在这里没有主意。

一种方法是在不修改行项目的情况下,计算折扣的总金额,对于60美元的销售,折扣为10美元,如下所示:

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

authCaptureTransaction
50
然后加上

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

优惠
$10.00

userField的值是任意的,如果您更喜欢,可以将其设置为-10.00美元。

行项目不是总和。所以

  • 在系统中添加信贷行项目
  • 当您提交到Authorize.net时,请检查负数并更改描述以表明它是一个贷项,然后将值更改为正值
  • 确保您提交的总数正确无误。Authorize.net不会检查您的行项目合计是否正确

欢迎使用堆栈溢出!即使您可能正在使用Java作为项目的一部分,请不要使用
Java
标记,除非您的问题实际上是关于Java本身的。您可能只想发送收据,这样您就可以根据需要自定义它,而不必使用负面指标。一些用户可能会对此感到困惑。很抱歉,我的问题不准确,我们在这个遗留系统中使用AIM。userFields是否仅用于新API?AIM方法具有商户定义的字段,这些字段与新API中的userFields类似。