Introduction
Have you ever encountered the below validation failure for credit card in EBS R12.- Validation failed for the field - Credit Card
- Unable to set up a Credit Card Bank Account for the Customer. Credit Card information on the order is not valid.
We will use standard Oracle Package and Lookup to validate them
- Package : iby_cc_validate
- Oe Lookup : Credit Card
Sample Block
SET serveroutput ON;
DECLARE
v_fill_chars VARCHAR (3) := '*-#';
v_cc_number VARCHAR (50) := '1234567812345678';
--'4111*1111 1111-1111#';
v_api_version NUMBER := 1.0;
v_init_msg_list VARCHAR2 (20000) := ' ';
v_return_status VARCHAR2 (20000);
v_msg_count NUMBER;
v_msg_data VARCHAR2 (20000);
v_clean_cc VARCHAR (50);
v_cc_type iby_cc_validate.cctype;
v_cc_valid BOOLEAN;
v_expr_date DATE := SYSDATE ();
v_error_flag VARCHAR2(1) := 'N';
BEGIN
-- Procedure Call to strip unwanted and special characters
-- checks that illegal characters were not found
iby_cc_validate.stripcc (v_api_version ,
v_init_msg_list,
v_cc_number,
v_fill_chars,
v_return_status,
v_msg_count,
v_msg_data,
v_clean_cc );
IF v_return_status = fnd_api.g_ret_sts_unexp_error THEN
v_error_flag := 'Y';
END IF;
-- Procedure Call to validate credit Card Type
iby_cc_validate.getcctype (v_api_version ,
v_init_msg_list ,
v_clean_cc ,
v_return_status ,
v_msg_count ,
v_msg_data ,
v_cc_type );
IF v_return_status = fnd_api.g_ret_sts_unexp_error AND v_cc_type = iby_cc_validate.c_invalidcc THEN
dbms_output.put_line ('Credit card number type is invalid');
v_error_flag := 'Y';
ELSE
dbms_output.put_line ('Credit card Type is Valid.');
END IF;
-- Procedure Call to validate credit card structure
iby_cc_validate.validatecc (v_api_version ,
v_init_msg_list ,
v_clean_cc ,
v_expr_date ,
v_return_status ,
v_msg_count ,
v_msg_data ,
v_cc_valid );
IF v_cc_valid AND v_return_status != fnd_api.g_ret_sts_unexp_error THEN
dbms_output.put_line ('Credit card structure is valid.');
ELSE
dbms_output.put_line ('Credit card structure is invalid or has expired.');
v_error_flag := 'Y';
END IF;
-- Functional Call to returns Credit Card Validation Results using Luhn Algorithm
IF iby_cc_validate.CheckCCDigits(v_clean_cc) = 0 THEN
dbms_output.put_line ('Credit card is valid.');
ELSE
dbms_output.put_line ('Credit card is invalid or has expired.');
v_error_flag := 'Y';
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END;
DECLARE
v_fill_chars VARCHAR (3) := '*-#';
v_cc_number VARCHAR (50) := '1234567812345678';
--'4111*1111 1111-1111#';
v_api_version NUMBER := 1.0;
v_init_msg_list VARCHAR2 (20000) := ' ';
v_return_status VARCHAR2 (20000);
v_msg_count NUMBER;
v_msg_data VARCHAR2 (20000);
v_clean_cc VARCHAR (50);
v_cc_type iby_cc_validate.cctype;
v_cc_valid BOOLEAN;
v_expr_date DATE := SYSDATE ();
v_error_flag VARCHAR2(1) := 'N';
BEGIN
-- Procedure Call to strip unwanted and special characters
-- checks that illegal characters were not found
iby_cc_validate.stripcc (v_api_version ,
v_init_msg_list,
v_cc_number,
v_fill_chars,
v_return_status,
v_msg_count,
v_msg_data,
v_clean_cc );
IF v_return_status = fnd_api.g_ret_sts_unexp_error THEN
v_error_flag := 'Y';
END IF;
-- Procedure Call to validate credit Card Type
iby_cc_validate.getcctype (v_api_version ,
v_init_msg_list ,
v_clean_cc ,
v_return_status ,
v_msg_count ,
v_msg_data ,
v_cc_type );
IF v_return_status = fnd_api.g_ret_sts_unexp_error AND v_cc_type = iby_cc_validate.c_invalidcc THEN
dbms_output.put_line ('Credit card number type is invalid');
v_error_flag := 'Y';
ELSE
dbms_output.put_line ('Credit card Type is Valid.');
END IF;
-- Procedure Call to validate credit card structure
iby_cc_validate.validatecc (v_api_version ,
v_init_msg_list ,
v_clean_cc ,
v_expr_date ,
v_return_status ,
v_msg_count ,
v_msg_data ,
v_cc_valid );
IF v_cc_valid AND v_return_status != fnd_api.g_ret_sts_unexp_error THEN
dbms_output.put_line ('Credit card structure is valid.');
ELSE
dbms_output.put_line ('Credit card structure is invalid or has expired.');
v_error_flag := 'Y';
END IF;
-- Functional Call to returns Credit Card Validation Results using Luhn Algorithm
IF iby_cc_validate.CheckCCDigits(v_clean_cc) = 0 THEN
dbms_output.put_line ('Credit card is valid.');
ELSE
dbms_output.put_line ('Credit card is invalid or has expired.');
v_error_flag := 'Y';
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END;