在弄清楚如何計算優惠之前先了解下相關金額參數:
1、請求中金額參數
total_amount:訂單總金額,訂單總金額,機關為元,精确到小數點後兩位,取值範圍[0.01,100000000]
discountable_amount:可打折金額,參與優惠計算的金額,機關為元,精确到小數點後兩位,取值範圍[0.01,100000000]
undiscountable_amount:不可打折金額,不參與優惠計算的金額,機關為元,精确到小數點後兩位,取值範圍[0.01,100000000]
滿足:total_amount=discountable_amount+undiscountable_amount
三者選其二,另外一個支付寶背景可以自動計算。 該參數是由商戶的收銀系統擷取,需要商戶系統能夠區分可打折與不可打折的商品,以保證給支付寶傳參時厘清可打折金額與不可打折金額。商戶在支付寶商家中心配置的優惠是根據可打折金額(discountable_amount)來做優惠的。
2、支付成功傳回中的金額參數
total_amount:訂單總金額,
receipt_amount:實收金額,商家在交易中實際收到的款項
invoice_amount:開票金額,使用者在交易中支付的可開具發票的金額
buyer_pay_amount:付款金額,使用者在交易中支付的金額
point_amount:集分寶金額
上述五個金額的關系如下:
total_amount - 商戶出資的優惠金額 = receipt_amount;
receipt_amount - 支付寶出資的優惠金額 = buyer_pay_amount;
buyer_pay_amount - 使用者自由的營銷工具(目前隻有集分寶 即point_amount)= invoice_amount
3、當面付支付管道(fund_channel,支付管道;amount,支付金額)
4、優惠計算:
商家優惠是:mdiscount,
支付寶優惠是:discount
也就是
商戶優惠: 訂單總金額(total_amount) - 商戶實收(receipt_amount)
使用者優惠:訂單總金額(total_amount)-使用者實付(buyer_pay_amount)
詳細參數參考該接口文檔:
[url]https://docs.open.alipay.com/194/105203/[/url]附上案例分析:
某餐廳在支付寶背景配置了商戶出資的9折活動,酒水不享受折扣,同時疊加支付寶出資的立減5元活動。某使用者總共消費100元,其中酒水20元,則商戶系統在請求支付時,需傳入undiscountable_amount=20。此時商戶實收金額為(100-20)*0.9+20=92元,使用者實付金額為92-5=87元,由于使用者又使用了自己賬戶等值2元的集分寶,是以開票金額為87-2=85元