确认付款
用户必须先捕获订单的付款,再进行确认。 用户就能在订单上添加或编辑付款方式,应用促销以及管理费用等。
解决方案
以下部分描述了 API、用户出口、服务及其他组件。
下图中显示了处理不同付款方式的付款时的不同阶段:

付款确认是订单创建或修改过程的最后一个阶段。 可以在订单创建、修改和取消期间访问“确认付款”屏幕。
getCompleteOrderDetails API
以检索以下信息:- 客户必须支付以实现订单的金额。
- 订单总额以及诸如调整、费用和税款的定价细目部分。
- 如果支付了履行订单所需的金额,那么将显示消息以指示支付了足够的金额。
- 如果取消了订单行,那么将显示减少的金额。
- 如果向订单添加了新产品,那么将显示额外的金额以及一条消息,该消息声明需要额外的金额才能履行订单。
- 如果用户创建退货订单而不进行交换,那么在退回产品后将向客户退款。
- 对于从退货订单创建的交换订单,用户可查看从退货订单转移到交换订单的金额。 如果交换订单的花费超过退货订单,那么用户必须提供更多金额。
getCompleteOrderDetailsAPI 返回的TotalTransferredOut属性决定从退货订单转移的金额。processReturnOrder和computeRefundPaymentsAPI 将更新TotalTransferredOut属性。 当交换订单具有已应用的优惠券或订单总额发生更改时,将再次调用computeRefundPaymentsAPI。 - 用户还可调整费用。 更多信息,请参阅管理费用。
用户可以通过单击“添加付款方式”按钮来添加付款方式。 用户可以添加一种或多种付款方式,例如客户帐户、信号卡、支票、预付卡或储值卡。
添加付款方式后,用户可选择编辑此付款方式。 但是,只能根据付款方式编辑特定值。 例如,如果用户已添加客户帐户来作为付款方式,那么用户仅可编辑要收取的金额。 不能修改付款类型和帐号。
getPaymentTypeList API 将检索当前组织允许的付款方式。 从此列表中,用户可以选择要添加到订单中的付款方式。
getCustomerPaymentMethodList API 将返回已为客户保存的付款方式。
capturePayment API 用于将付款方式保存到订单,处理任何外部付款类型,暂挂客户不再使用的付款方式,以及以收费顺序返回付款方式序列。 付款方式的处理顺序取决于每种付款方式中可用的资金。 某些付款方式分配有硬设置金额。 通常最先处理这类付款方式。 但是,该应用程序并未强制实现此顺序。 例如,可以先使用一张礼品卡上的所有可用金额,然后再使用另一张礼品卡。 此过程将阻止用户定义要对每张礼品卡收取的金额。 但是,用户可选择通过使用多种付款方式进行付款,并在信用卡、客户帐户等之间分配费用。
Sterling™ 商务中心配置的充电顺序优先。 如果序号中存在相等情况,那么将考虑 capturePayment API 中的顺序。 例如,如果您拥有属于同一类型的多种付款方式,或者如果多种付款方式具有相同序号。
capturePayment API 将考虑 fundsAvailable、RemainingAmountToAuth 和其他变量以计算付款方式的最大费用限制。 如果用户更改针对现有付款方式收取的金额,那么将自动更新 RequestedAmount 属性。 将调用 capturePayment API 来考虑进行纠正并相应地更新 MaxChargeLimits 和 RemainingAmountToAuth 属性。
除了实际付款方式之外,用户还可向订单应用促销代码或优惠券代码。 根据所选的优惠券,changeOrder API 将对订单重新定价,并应用或拒绝调整。 如果优惠券有效,那么将向订单应用调整并在优惠券列表中显示总调整。 用户不能应用无效优惠券。
有时候,会暂挂付款方式。 可因各种原因暂挂付款方式。 例如,当要对付款方式收取的金额更新为 0 美元时,将暂挂此付款方式。 客户还可实施用户出口来处理付款方式并在必要时将其暂挂。 当用户移除付款方式时,会将 PaymentKey 属性以及值为 Suspend 的 Operation 属性传递给 capturePayment API。 当用户恢复订单上的暂挂付款方式时,会将 PaymentKey 属性和值为 Manage 的 Operation 属性传递给 capturePayment API。
客户还可实施用户出口以在日期为过去日期的情况下暂挂付款方式。 例如,如果信用卡的到期日期已过,那么可调用 YFSCollectionCreditCardUE 用户出口以暂挂此付款方式。
processOrderPayments API
将处理所有授权并计算在处理订单的任何时候所要收取的实际金额。 将立即为付款考虑所有已成功授权的所有付款方式。 如果付款方式未通过授权,那么将提示用户修正此付款方式,或使用其他付款方式。 即使付款验证系统已关闭,也仍会考虑付款方式。 但是,将在稍后通过付款处理代理程序进行授权。
根据 processOrderPayments API 的结果,如果成功处理所有支付方法,那么 PaymentTransactionSuccessful 属性的值为 "Y",订单会确认,并且用户会转至相应屏幕。
如果有任何付款方式不成功,那么 PaymentTransactionSuccessful 属性的值都将为 "N"。 将显示相应消息以指示未成功处理付款。 将向用户显示 PaymentTransactionError 元素中返回的消息以指示撤销了付款方式的原因。 根据此原因,可修改一些信息(到期日期、帐单地址和付款参考)。 不能修改唯一标识,因此如果未正确输入信用卡卡号,那么将移除或暂挂此付款方式,并且必须添加新的付款方式。
executeCollection API 将针对订单上的每种付款方式调用以下用户出口之一(取决于付款方式的 PaymentTypeGroup 属性)。 这些用户出口提供了相应的选项来供您选择是否插入用于授权和收款的定制逻辑。YFSCollectionCreditCardUEYFSCollectionCustomerAccountUEYFSCollectionOthersUEYFSCollectionStoredValueCardUE
有关用户出口的更多信息,请参阅 Javadoc。
调用 changeOrder API 可更新订单的付款方式,而调用 confirmDraftOrder API 可确认订单。
当用户通过执行相关任务(例如,添加订单行,修改订单数量,或修改费用)修改订单时,将提示用户相应地捕获付款。 当用户修改订单时,订单总额可能会降低或提高。 因此,将指导用户完成付款确认过程以确认付款变化,并支付适当的金额来履行订单。
根据订单总额的变化,将显示先前订单总额、增加或减少的金额以及调整后的总额。 如果订单总额提高,那么将在 capturePayment API 的 RemainingAmountToAuth 属性中返回客户履行订单所必须支付的剩余金额。 当用户必须支付更多金额时,将显示“添加付款方式”按钮以允许用户捕获增加的金额。 在收取了足够的金额之前,用户无法确认订单。
仅当需要执行实时授权时,才会公开信用卡的 CVV 字段。 当用户首次确认对订单的付款时,processOrderPayments API
将处理所有授权并计算在处理订单的任何时候所要收取的实际金额。 此 API 进而会调用用于验证付款方式的用户出口,并在付款未通过验证的情况下返回错误。 此 API 的输出中的 PaymentTransactionError 元素将包含错误。 将立即为付款考虑所有已成功授权的所有付款方式。 如果付款方式未通过授权,那么将提示用户修正此付款方式,或使用其他付款方式。 即使付款验证系统已关闭,也仍会考虑付款方式。 但是,将在稍后通过付款处理代理程序进行授权。 再次装入“支付确认”屏幕时,会基于为每种支付方法设置的状态检索在上次交易中返回错误的支付方法。 不会再次调用 processOrderPayments API
来验证订单上存在的付款方式。 但是,当用户修正错误的付款方式并应用更改时,将调用 processOrderPayments API 以验证付款。
BuyerUserId 属性。 changeOrder 和 getCompleteOrderDetails API 处理此情况,而不用输入任何其他内容。实现
以下部分描述了必须配置的规则。
- 在用户界面中使用单个字段以输入信用卡上的姓名:此规则允许在捕获付款信息时,在用户界面上将单个或多个字段用于信用卡姓名。 您可以在企业级别配置该规则。 当用户捕获信用卡详细信息时,屏幕会根据销售方组织此规则的配置运行。
- 对草稿订单实时授权信用卡:该规则允许用户对订单实时授权付款
- 付款类型和支付卡类型。
“添加付款方式”和“编辑付款方式”窗口中的“针对客户保存”复选框受许可权控制。 仅当用户属于分配了必要许可权的组时才会启用此复选框。 有关管理用户组权限的信息,请参阅 Sterling Business Center System Configuration。
有关 API 和用户出口的更多信息,请参阅 Javadoc。
最终用户影响
用户可以了解必须支付多少金额才能履行订单并相应地通知客户。 用户还可向订单添加付款方式,为订单授权,以及确认订单。