我在店面使用优惠券来提供折扣。对于大于特定值的订单,某些优惠券的金额为美元。比如,订单满$ 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);
我在这里没有想法。
答案 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)
这些订单项未总计。所以