附加费
附加费是商家为支付接受卡付款费用收取的额外金额。 使用 Mastercard Gateway 的附加费功能,您可以基于以下参数在交易中应用附加费:
- 网关入口点,例如,Hosted Checkout、API
- 付款方式,例如,Mastercard、Visa、American Express
- 资金提供方法,例如,贷记、借记
- 货币
若要允许网关为交易计算附加费,您必须在 Merchant Administration 中配置附加费规则。 或者,如果您是使用 API/Batch 集成,您可以在订单中提供预先计算的附加费。
先决条件
- 您必须通过 Mastercard Gateway 在商家配置文件中启用附加费。
- 您必须在 Merchant Administration 中配置附加费规则以允许网关计算附加费。
集成以使用附加费
网关使用以下集成方法在交易中支持附加费:
通过 API/Batch 集成
您可以使用以下选项之一在订单中应用附加费:
- 网关计算的附加费
若要允许网关计算附加费,请在
Authorize
/Pay
或Update Session
请求中提供以下字段:order.netAmount
: 这是在应用附加费前订单应支付的金额。
不要在请求中提供order.amount
字段。 请参见下方的常见问题。您可以提交
Retrieve Transaction
/Retrieve Order
请求来检索以下附加费详细信息:order.surchargeAmount
: 网关根据您的附加费规则计算的附加费。order.amount
: 订单的总金额,含附加费金额。
您还可以通过提供以下字段使用Payment Options Inquiry
操作来请求计算得出的附加费金额:session.id
、order.netAmount
、order.currency
、gatewayEntryPoint
和sourceOfFunds.provided.card.prefix
。 - 商家计算的附加费
请在
Authorize
/Pay
/Standalone Capture
或Update Session
请求中提供以下字段:order.amount
: 订单的总金额,含附加费金额。order.surchargeAmount
: 适用于此订单的附加费(如果有)。 此金额必须包含在您在order.amount
字段中指定的总订单金额中。
提交
Retrieve Transaction
/Retrieve Order
请求将返回您在交易请求中提供的附加费详细信息和order.netAmount
(订单金额减去附加费金额得出的净额)。
Payment Options Inquiry
操作来请求卡组织/资金提供详细信息以帮助您为卡评估和应用正确的附加费。 有关详细信息,请参见下方的常见问题。- 商家计算的附加费
order.amount
: 订单的总金额,含附加费金额。order.merchantCharge.amount
: 您向付款人收取的其他费用金额,目前仅指附加费金额。order.merchantCharge.type
: 您向付款人收取的其他费用类型,目前仅指附加费。 merchantCharge.type 的值为附加费。
- 网关计算的附加费
order.netAmount
: 这是在应用附加费前订单应支付的金额。order.merchantCharge.type
: 您向付款人收取的其他费用类型,目前仅指附加费。 merchantCharge.type 的值为附加费。
Retrieve Transaction API 参考 [REST][NVP]
Payment Options Inquiry API 参考 [REST][NVP]
通过 Hosted Checkout 集成
网关可以通过 Hosted Checkout 计算附加费。
若要在 Hosted Checkout 付款中应用附加费,请在 Hosted Checkout 请求(Checkout.configure()
函数或 Create Checkout Session
操作,具体取决于您的结账流)中提供以下字段:
order.netAmount
: 应用附加费前订单应支付的金额。
order.amount
字段。 请参见下方的常见问题。您可以提交 Retrieve Transaction
/Retrieve Order
请求来检索附加费详细信息:
order.surchargeAmount
: 网关根据您的附加费规则计算的附加费。order.amount
: 净额加上附加费。
付款人将能够查看其输入的卡的适用附加费,然后可以选择继续支付新的总额、使用其他卡或取消订单。 向付款人呈现的付款收据会显示所应用的附加费金额。
order.netAmount
: 应用附加费前订单应支付的金额。order.merchantCharge.type
: 您向付款人收取的其他费用类型,目前仅指附加费。 merchantCharge.type 的值为附加费。
order.amount
字段。 请参见下方的常见问题。您可以提交 Retrieve Transaction
/Retrieve Order
请求来检索附加费详细信息:
order.merchantCharge.amount
: 您向付款人收取的其他费用金额,目前仅指附加费金额。order.amount
: 净额加上附加费。
付款人将能够查看其输入的卡的适用附加费,然后可以选择继续支付新的总额、使用其他卡或取消订单。 向付款人呈现的付款收据会显示所应用的附加费金额。
常见问题
如果我在请求中同时提供了 order.netAmount
和 order.amount
字段,网关是否会计算附加费?
同时提供 order.netAmount
和 order.amount
字段而没有 order.surchargeAmount
将返回错误,因为网关没有充足的信息来计算附加费。 网关需要您提供 order.netAmount
字段或 order.amount
字段。
如果您提供了全部三个字段,那么网关不会计算附加费,而会使用您提供的附加费金额。
在提交交易时我能否选择不对卡付款收取附加费?
可以,要选择不收取附加费,
- 请在交易请求中提供 order.amount 字段以指示订单的总金额。
对于 WSAPI 版本 50 到 66 的直接 API,
- 当商家计算附加费时,请勿在 order.netAmount 和 order.surchargeAmount 字段中提供值。
- 当网关计算附加费时,请勿在 order.netAmount 字段中提供值。
对于 WSAPI 版本 67 及更高版本的直接 API,
- 当商家计算附加费时,请勿在 order.netAmount、order.merchantCharge.amount 和 order.merchantCharge.type 字段中提供附加费值。
- 当网关计算附加费时,请勿在 order.netAmount 和 order.merchantCharge.Type 字段中提供附加费值。
对于 WSAPI 版本 50 到 70 的 Hosted Checkout,
- 附加费始终由网关计算,请勿在 order.netAmount 字段中提供值。
对于 WSAPI 版本 71 及更高版本的 Hosted Checkout,
- 附加费始终由网关计算,请勿在 order.netAmount 和 order.merchantCharge.type 字段中提供附加费值。
如果付款人请求退款,是否会退回附加费金额?
是。 因为附加费包含在 order.amount
字段内,而此金额是退回付款人的金额,因此附加费金额也会退回。 如果是部分退款,附加费金额将按比例退回。
如果启用了动态货币兑换 (DCC),网关是否会同时使用付款人的账单货币和我的首选货币来计算附加费?
是,网关将在订单金额内包含适用的附加费,这将使用付款人的账单货币返回为 paymentTypes.card.currencyConversion.payerAmount
,并使用您的首选货币返回为 order.amount
字段(在 Payment Options Inquiry
操作响应中)。
我能否检索卡类型识别数据来帮助计算订单的附加费?
您可以在 Payment Options Inquiry
请求中提供 sourceOfFunds.provided.card.prefix
字段来检索付款所使用的卡的以下计划/资金提供详细信息,这些信息可以帮助您作出附加费决定:
paymentTypes.card.scheme
: 拥有卡品牌并定义卡使用操作规则的组织。paymentTypes.card.brand
: 用于描述全球认可和接受的卡的品牌名称。 对于许多主要卡类型,这将与组织名称匹配。在某些市场中,卡还可能作为在原始国家/地区得到认可和接受的本地品牌的联名卡(请参见本地品牌)。paymentTypes.card.localBrand
: 用于描述在原始国家/地区内被认可和接受的卡的品牌名称。 此卡还可能与全球认可和接受的品牌名称联名。paymentTypes.card.fundingMethod
: 付款人用于提供付款资金的方法。
您可以根据付款人提供的卡并使用这些详细信息来计算附加费。