2017-07-14 52 views
0

我正在店面使用優惠券來提供折扣。對於大於特定值的訂單,某些優惠券適用於平價美元。例如,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

歡迎來到Stack Overflow!即使您可能將Java用作項目的一部分,請不要使用'java'標記,除非您的問題實際上是關於Java本身。 –

+0

你可能只是想發送你的收據,所以你可以相應地定製它 –

回答

0

一種方法是計算貼息總額不修改行項目,爲$ 60銷售低於$ 10的折扣:

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

然後加入

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

的userField價值是任意的,使它 - $ 10.00,如果你更喜歡它。

+0

沒有負面的指標,一些用戶可能會被這個困惑。 –

+0

對於我的問題不確切,我們在這個遺留系統中使用AIM。用戶字段僅適用於新API嗎? –

+0

AIM方法有Merchant定義的字段,它們將像新API中的用戶字段一樣。 – NexusWebDevelopment