配置CyberSource
1. 进入到applications\accounting,打开build.xml
默认情况下,cybersource的支付代码是被排除出build任务的,我们需要将下面这句话注释掉:
<exclude name="org/ofbiz/accounting/thirdparty/cybersource/**"/>
2. 去CyberSource的网站上下载Simple Order Api。将得到包,放到accounting的lib下。
其实只要两个包就行了:cybsclients15.jar和cybssecurity.jar
下载地址为:
http://www.cybersource.com/support_center/implementation/downloads/simple_order
或者,也可以在lib目录下新建个cybersource目录,将类库放到其下。这时,我们需要将build.xml中的<fileset dir="lib/cybersource" includes="*.jar"/>的注释解开。
3. 修改config目录下的payment.properties文件:
payment.cybersource.merchantID=[在CyberSource注册的ID]
其实的,可以根据自己的需要进行修改
BTW: 在配置Service时可以另外指定别的配置文件
4. 配置商店和支付方式:
在种子数据文件中,加入以下XML:
<ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="CREDIT_CARD" paymentServiceTypeEnumId="PRDS_PAY_AUTH" paymentService="cyberSourceCCAuth" paymentPropertiesPath="xxx-payment.properties" /> <ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="CREDIT_CARD" paymentServiceTypeEnumId="PRDS_PAY_RELEASE" paymentService="cyberSourceCCRelease" paymentPropertiesPath="xxx-payment.properties" /> <ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="CREDIT_CARD" paymentServiceTypeEnumId="PRDS_PAY_CAPTURE" paymentService="cyberSourceCCCapture" paymentPropertiesPath="xxx-payment.properties" /> <ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="CREDIT_CARD" paymentServiceTypeEnumId="PRDS_PAY_REAUTH" paymentService="cyberSourceCCAuth" paymentPropertiesPath="xxx-payment.properties" /> <ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="CREDIT_CARD" paymentServiceTypeEnumId="PRDS_PAY_REFUND" paymentService="cyberSourceCCRefund" paymentPropertiesPath="xxxt-payment.properties" />
属性:productStoreId: 商店ID
属性:paymentPropertiesPath: 定义配置文件的名称(可选,默认为 payment.properties)
PS.处理以上Service的JAVA类为:IcsPaymentServices
或者,也可以通过页面进行配置,加入以下5个服务配置(最下面是Paypal的,请先无视掉)
Catalog à Stores à [选择Store] à Payments
5. 取得对应的.p12文件。
我感觉,这个文件就相当于一个身份证。在和CyberSource做通讯时,需要用到这个文件。
登录到businesscenter.cybersource.com或者测试用的businesscenterttest.cybersource.com,
左侧菜单 à Account Management à Transaction Security Keys
然后,点击’Security Keys for the Simple Order API’,就可以生成并取得一个.p12文件。文件的名称,与你账号的商家名称是一样的,即:merchant.p12
PS.需要机器上装有JRE
6. 放置.p12文件
.p12文件的存放位置是在payment.properties文件(或指定的文件)中配置的:
payment.cybersource.keysDir=${env.ofbiz.home}/*****/*****/icskeys
修正OFBiz在支付方面的BUG
上午,老大改了支付的两个BUG。呃,老大说了,开源的,有BUG,没办法 Orz
1. CaptureTransaction.groovy
这个脚本的import不全,加下列声明加进去替换掉
import org.ofbiz.order.order.OrderReadHelper;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilDateTime;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.entity.GenericDelegator;
import org.ofbiz.entity.GenericEntityException;
import org.ofbiz.entity.GenericValue;
import org.ofbiz.entity.condition.EntityCondition;
import org.ofbiz.entity.condition.EntityOperator;
import org.ofbiz.entity.util.EntityUtil;
2. 这个文件里还有个笔误。尝试搜索一下‘orderPaymentPrefrence’,将其替换为‘orderPaymentPreference’。发现是哪里有问题了吗?脚本语言啊。
3. ViewGatewayResponse.groovy
同样,替换掉上方的import声明:
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.entity.GenericDelegator;
import org.ofbiz.entity.GenericEntityException;
import org.ofbiz.entity.GenericValue;
import org.ofbiz.entity.condition.EntityCondition;
import org.ofbiz.entity.condition.EntityOperator;
import org.ofbiz.entity.util.EntityUtil;
模拟实战测试
1. 在做测试之前,请先登录businesscentertest.cybersource.com。登录进去后,所有的transaction都变成虚拟的了。这就相当于Paypal的Sandbox。
2. 做一张单子,将地址呀,MAIL呀,信用卡卡号呀,都填写好,一路的next过去。
可用的信用卡号如下
Visa 4111 1111 1111 1111
MasterCard 5555 5555 5555 4444
American Express 3782 8224 6310 005
Discover 6011 1111 1111 1117
JCB 3566 1111 1111 1113
Diners Club 3800 000000 0006
3. 最后点击“Submit Order”,成功后将转入到《Order Confirm》页面。左上方会显示出这张订单了号码,记住它。
4. 进入到后台,找到这个订单。在Payment Information中,你将能看到下面这些信息:
Credit Card
Max Amount: £31.98
Foo Bar
Visa 4111111111111111 03/2012 [Authorized]
这显示出,这显示出我们已经得到了信用卡支付的授权。
5. 点击“Capture”按钮,就可以向信用卡拿钱啦。
最后,信用卡的状态显示为“已结清”:
Visa 4111111111111111 03/2012 [Settled]
好了,到此结束 -v-。
附录:
1. CyberSource的客服Mail是:ics_support@cybersource.com。有问题可以直接去问,客服人员很友善 ^_^。
另外,感谢JE的加速度的博客,里面OFBiz相关的文章,给了我很大的帮助 -___,-