实战OFBiz中的在线支付之CyberSource

 

配置CyberSource

1.       进入到applications\accounting,打开build.xml

默认情况下,cybersource的支付代码是被排除出build任务的,我们需要将下面这句话注释掉:

<exclude name="org/ofbiz/accounting/thirdparty/cybersource/**"/>

       

2.       CyberSource的网站上下载Simple Order Api。将得到包,放到accountinglib下。

其实只要两个包就行了:cybsclients15.jarcybssecurity.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.处理以上ServiceJAVA类为: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都变成虚拟的了。这就相当于PaypalSandbox

 

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]

Authorize(按钮) Capture (按钮)

这显示出,这显示出我们已经得到了信用卡支付的授权。

 

5.       点击“Capture”按钮,就可以向信用卡拿钱啦。

最后,信用卡的状态显示为“已结清”:

Visa 4111111111111111 03/2012  [Settled]

 

 

好了,到此结束 -v-。

 

 

附录:

1. CyberSource的客服Mail是:[email protected]。有问题可以直接去问,客服人员很友善 ^_^

 

 

另外,感谢JE的加速度的博客,里面OFBiz相关的文章,给了我很大的帮助 -___,-

你可能感兴趣的:(xml,脚本,Security,groovy)