Using other payment protocol data to find orders
As provided, WebSphere Commerce enables you to do an advanced search for orders using the payment account information as the search criteria. For example, on the Find Orders page in the WebSphere Commerce Accelerator, you can search orders and include the cardholder account number as part of the search criteria.
To search on other types of payment protocol data, or to include other payment protocol data with the account number as part of the search criteria, modify the order search JSP file used to perform order searches. The following examples describe how to substitute some other field for account, and how to add a second field to be used in addition to the account field.
The following examples show how to modify the CSROrderSearchB2C.jsp file. You can extend the examples to make modifications to order search JSP files, such as CSROrderSearchB2B.jsp.
The JSP files reside in the following directory:
- WC_eardir/Stores.war/
- WCDE_installdir\workspace\Stores\Web Content
Changing the payment protocol criteria field
- Locate and modify the CSROrderSearchB2C.jsp file to change the order label for account to the new field. This example shows the check routing number being substituted for account. Because the entire check routing number is entered rather than the last 5 digits of the account, the INPUT element also changes.
Before: <TR> <TD> <label for="protocolDataName1"></label> <label for="protocolDataValue1"><%=orderLabels.get("account")%></label> </TD> </TR> <TR> <TD> <INPUT type="hidden" name="protocolDataName1" value="account" id="protocolDataName1"/> <INPUT size="5" type="text" maxlength="5" id="protocolDataValue1" name="protocolDataValue1"/> </TD> </TR>After: <TR> <TD> <label for="protocolDataName1"></label> <label for="protocolDataValue1"><%=orderLabels.get("check_routing_number")%></label> </TD> </TR> <TR> <TD> <INPUT type="hidden" name="protocolDataName1" value="check_routing_number" id="protocolDataName1"/> <INPUT type="text" id="protocolDataValue1" name="protocolDataValue1"/> </TD> </TR>- Locate and modify the OrderLabels*.properties file to add a line for the new field. Add the following line:
check_routing_number=The check routing number- Ensure that the PaymentSystemPluginMapping.xml file is updated to use the substituted data.
<Keyword name="check_routing_number" searchable="true"/>No other files require modification.
Add another field in addition to account
- Locate and modify the CSROrderSearchB2C.jsp file to add the second protocol data to the existing file. This example shows the addition of the credit card brand in addition to the account, so that both fields can be used to find orders.
<TR> <TD> <label for="protocolDataName2"></label> <label for="protocolDataValue2"><%=orderLabels.get("cc_brand")%></label> </TD> <TD> <label for="protocolDataName1"></label> <label for="protocolDataValue1"><%=orderLabels.get("account")%></label> </TD> </TR> <TR> <TD> <INPUT type="hidden" name="protocolDataName2" value="cc_brand" id="protocolDataName2"/> <SELECT id="protocolDataValue2" name="protocolDataValue2"/> <OPTION value="VisaNet" SELECTED>VisaNet</OPTION> <OPTION value="Master Card">Master Card</OPTION> <OPTION value="AMEX">American Express</OPTION> </SELECT> </TD> <TD> <INPUT type="hidden" name="protocolDataName1" value="account" id="protocolDataName1"/> <INPUT size="5" type="text" maxlength="5" id="protocolDataValue1" name="protocolDataValue1"/> </TD> </TR>The SELECTED attribute is used to indicate what the default credit card brand should be when the page is first displayed. Because only one default exists, the lines for the other two card brands do not contain the attribute.
- Modify the function findAction() in the CSROrderSearchB2C.jsp file to include the additional data:
Before: if( !isEmpty(document.orderFindForm.protocolDataValue1.value) ) { urlPara.paymentDataSize=1; urlPara.paymentData_name_1=document.orderFindForm.protocolDataName1.value; urlPara.paymentData_value_1=document.orderFindForm.protocolDataValue1.value; } else { urlPara.paymentDataSize=0; }After: if( !isEmpty(document.orderFindForm.protocolDataValue1.value) && !isEmpty(document.orderFindForm.protocolDataValue2.value) ) { urlPara.paymentDataSize=2; urlPara.paymentData_name_1=document.orderFindForm.protocolDataName1.value; urlPara.paymentData_value_1=document.orderFindForm.protocolDataValue1.value; urlPara.paymentData_name_2=document.orderFindForm.protocolDataName2.value; urlPara.paymentData_value_2=document.orderFindForm.protocolDataValue2.value; } else { urlPara.paymentDataSize=0; }- Locate and modify the OrderLabels*.properties file to add a line for the new field. Add the following line:
cc_brand=The brand of the credit card- Ensure that the PaymentSystemPluginMapping.xml file is updated to use the additional data.
<Keyword name="account" mask="*" plain="-5" searchable="true"/> <Keyword name="cc_brand" searchable="true"/>(C) Copyright IBM Corporation 1996, 2006. All Rights Reserved.