OFBiz + Opentaps 目录管理 四. 产品(四)礼券

四.   产品

(四)  礼券

1.        概述

客户可能会购买礼券然后在之后的购买中兑换其他商品。礼券是一种特殊类型的数字产品。他们可以被设置为产品然后可以在商店中购买到。当订单来了之后,他们会通过创建记算余额的财务科目来完成。

之后,当他们被兑换的时候,客户只要输入一个礼券代码,这个礼券可以是一个内部礼券也可以是外部有价值链接的礼券。如果商店被配置为使用内部礼券,那么礼券就可以被用于为订单付款,过程就像其他付款处理一样,有认证、捕获、释放、退款。

2.        设置礼券

在目录管理中,设置礼券为一个类型为数字商品的产品。然后使用产品的[内容]页面添加类型为“外部异步执行”的产品内容,这是一个指向服务名为ofbGcPurchase的内容。你可以创建礼券这个虚拟产品的变体,这只需要将产品内容与虚拟产品的父级项相关联即可。

当前,礼券金额是基于礼券价格的。未来,我们可能使用固定金额字段来将价格与面额区分。

在采购时收集的信息,比如接收电子邮件或礼券信息,是基于一个调查的。调查可以在目录管理中设置。调查必须被设置为允许匿名回馈和多次回馈,这样一个新的用户能够订购一个礼券,而且同一个用户也可以多次订购礼券。

通常,针对礼券定义的参数是被设置在ProductStoreFInActSetting实体中的,这些配置定义了是否需要PIN码,礼券号以及PIN码的长度,以及用于采购信息的调查。字段validateGCFinAcct用于告诉付账流程当用户付款时是否针对财务科目验证礼券代码。(如果保留为空则不验证)当前验证只是在不需要PIN码的情况下才会做。注意ProductStoreFinActSetting必须在一个XML文件中创建然后被加载,没有用户界面用于维护它。

3.        订购礼券

每个在系统中运行的订单都是从一个名叫checkDigitalFulfillment的服务开始的。如果是一个数字产品,那么执行的服务叫fulfillDigitalItems。在上面提到的礼券例子中,还会调用ofbGcPurchase。这将使得礼券和其他数字产品被立即执行,无论在同一订单中的实体产品是否在仓库中存在。礼券很实体产品将会独立生成发.票。

OfbGcPurchase会查看商店礼券的设置,然后根据一个惟一的随机数创建一个新的财务科目。然后添加采购金额作为一个FinAccountTrans交易。然后利用调查生成一封电子邮件,接着查看在产品商店电子邮件设置中定义的邮件地址发送邮件通知礼券的接收者。

4.        执行礼券

为追踪礼券的执行,需要在你商店的电子邮件设置中定义一个BCC(隐藏抄送),这样就可以对电子邮件做记录。同样,对于接收返回邮件的邮件地址设置发送方邮件地址,这样就可以追踪返回邮件了。

非常重要的事情是确保礼券调查中的描述字段与确认邮件FTL文件(FreeMaker文件)中的字段要严格一致,否则邮件就会出错。比如,如果你的调查中的描述字段是“Message”,你的FTL就必须是${Message}

5.        查看已执行的礼券

当前在订单管理模块的订单查看页面上没有相关页面可用于查看客户以及购买的礼券。这个功能在将来会被添加。

6.        使用礼券付款

系统接受礼券来付款,可以使用内部礼券或系统外的礼券,这个是基于商店付款的设置的。配置内部礼券,需要设置礼券的认证、捕获、释放、再认证、退款等付款处理服务。请参考文件applications/ecommerce/data/DemoProduct.xml中关于信用卡和礼券的ProductStorePaymentSetting实体设置。

在付款时,用户可以输入一个礼券号,根据礼券号,系统会查看礼券的财务科目,然后添加其为一种付款方式。但用户付款时,系统将使用礼券付款处理器来处理付款。

如果有多种付款方式(如礼券和信用卡),系统当前捕获的付款方式是基于他们被加入到购物车的顺序的。

7.        订单取消

付款释放处理器将使得针对礼券的认证失效。

8.        退货

退款处理器将导致款项退回给原先的礼券。

9.        有关记录礼券认证的注意事项

明确记录认证而不是依赖当前余额是很重要的,因为订单通常会为客户预留库存。这样,当交易实际上不能够继续的时候,不至于会引起库存大量的累积。

你可能感兴趣的:(ofbiz,目录,产品,opentaps,礼券)