DBA Data[Home] [Help]

PACKAGE: APPS.IBY_CREDITCARD_PKG

Source


1 PACKAGE iby_creditcard_pkg AUTHID CURRENT_USER AS
2 /*$Header: ibyccs.pls 120.33 2011/10/31 06:16:09 gmamidip ship $*/
3 
4   -- Constant for credit card types
5   C_INSTRTYPE_CCARD CONSTANT VARCHAR2(20) := 'CREDITCARD';
6 
7   -- Constant for purchase card types
8   C_INSTRTYPE_PCARD CONSTANT VARCHAR2(20) := 'PURCHASECARD';
9 
10   -- Number masking options
11   G_MASK_CHARACTER CONSTANT VARCHAR2(1) := 'X';
12   G_DEF_UNMASK_LENGTH CONSTANT NUMBER := 4;
13 
14 
15   G_LKUP_PCARD_TYPE CONSTANT VARCHAR2(30) := 'IBY_PURCHASECARD_SUBTYPE';
16 
17   -- Card validation errors
18   G_RC_INVALID_CCNUMBER CONSTANT VARCHAR2(30) := 'INVALID_CARD_NUMBER';
19   G_RC_INVALID_CCEXPIRY CONSTANT VARCHAR2(30) := 'INVALID_CARD_EXPIRY';
20   G_RC_INVALID_INSTR_TYPE CONSTANT VARCHAR2(30) := 'INVALID_INSTRUMENT_TYPE';
21   G_RC_INVALID_PCARD_TYPE CONSTANT VARCHAR2(30) := 'INVALID_PCARD_TYPE';
22   G_RC_INVALID_CARD_ISSUER CONSTANT VARCHAR2(30) := 'INVALID_CARD_ISSUER';
23   G_RC_INVALID_CARD_ID CONSTANT VARCHAR2(30) := 'INVALID_INSTRUMENT';
24   G_RC_INVALID_PARTY CONSTANT VARCHAR2(30) := 'INVALID_PARTY';
25   G_RC_INVALID_ADDRESS CONSTANT VARCHAR2(30) := 'INVALID_ADDRESS';
26 
27   G_LKUP_INSTR_TYPE_CC CONSTANT VARCHAR2(30) := 'CREDITCARD';
28   G_LKUP_INSTR_TYPE_DC CONSTANT VARCHAR2(30) := 'DEBITCARD';
29   G_LKUP_INSTR_TYPE_PC CONSTANT VARCHAR2(30) := 'PAYMENTCARD';
30 
31   -- Pad character used when encrypting credit card numbers
32   G_CCNUM_PAD CONSTANT VARCHAR2(1) := ' ';
33 
34   -- Credit card billing site usage
35   G_CC_BILLING_SITE_USE CONSTANT VARCHAR2(30) := 'CC_BILLING';
36 
37   -- Address Type Flags
38   G_PARTY_SITE_ID CONSTANT VARCHAR2(1) := 'S';
39   G_PARTY_SITE_USE_ID CONSTANT VARCHAR2(1) := 'U';
40 
41 
42 
43   --
44   -- USE
45   --   Gets credit card mask settings
46   --
47   PROCEDURE Get_Mask_Settings
48   (x_mask_setting OUT NOCOPY iby_sys_security_options.credit_card_mask_setting%TYPE,
49    x_unmask_len OUT NOCOPY iby_sys_security_options.credit_card_unmask_len%TYPE
50   );
51 
52   --
53   -- USE
54   --   Generates a masked credit card number based upon system mask
55   --   settings
56   --
57   FUNCTION Mask_Card_Number(p_cc_number IN iby_creditcard.ccnumber%TYPE)
58   RETURN iby_creditcard.masked_cc_number%TYPE;
59 
60   FUNCTION Mask_Card_Number
61   (p_cc_number       IN   iby_creditcard.ccnumber%TYPE,
62    p_mask_option     IN   iby_creditcard.card_mask_setting%TYPE,
63    p_unmask_len      IN   iby_creditcard.card_unmask_length%TYPE
64   )
65   RETURN iby_creditcard.masked_cc_number%TYPE;
66 
67   --
68   -- USE: Gets the credit card encryption mode setting
69   --
70   FUNCTION Get_CC_Encrypt_Mode
71   RETURN iby_sys_security_options.cc_encryption_mode%TYPE;
72 
73   --
74   -- USE: Returns Y or N if the supplemental cardholder data
75   --      e.g., chname and expirydate, are encrypted.
76   --
77   FUNCTION Other_CC_Attribs_Encrypted
78   RETURN VARCHAR2;
79 
80   --
81   -- USE: returns the site_use_id for the site. Creates
82   --      one if one doesn't exist.
83   --
84   FUNCTION Get_Billing_Site
85   (p_party_site_id IN hz_party_sites.party_site_id%TYPE,
86    p_party_id      IN hz_parties.party_id%TYPE
87   )
88   RETURN hz_party_site_uses.party_site_use_id%TYPE;
89 
90 
91   PROCEDURE encrypt_chname
92   (p_sec_key IN iby_security_pkg.DES3_KEY_TYPE,
93    p_chname  IN iby_creditcard.chname%TYPE,
94    p_segment_id IN NUMBER,
95    x_segment_id OUT NOCOPY NUMBER,
96    x_masked_chname OUT NOCOPY iby_creditcard.chname%TYPE,
97    x_mask_setting OUT NOCOPY iby_sys_security_options.credit_card_mask_setting%TYPE,
98    x_unmask_len   OUT NOCOPY iby_sys_security_options.credit_card_unmask_len%TYPE
99    );
100 
101   FUNCTION decrypt_chname
102   (p_sec_key IN iby_security_pkg.DES3_KEY_TYPE,
103    p_instrid  IN iby_creditcard.instrid%TYPE
104   ) RETURN iby_creditcard.chname%TYPE;
105 
106   PROCEDURE Create_Card
107   (p_commit           IN   VARCHAR2,
108    p_owner_id         IN   iby_creditcard.card_owner_id%TYPE,
109    p_holder_name      IN   iby_creditcard.chname%TYPE,
110    p_billing_address_id IN iby_creditcard.addressid%TYPE,
111    p_address_type     IN   VARCHAR2 := G_PARTY_SITE_ID,
112    p_billing_zip      IN   iby_creditcard.billing_addr_postal_code%TYPE,
113    p_billing_country  IN   iby_creditcard.bill_addr_territory_code%TYPE,
114    p_card_number      IN   iby_creditcard.ccnumber%TYPE,
115    p_expiry_date      IN   iby_creditcard.expirydate%TYPE,
116    p_instr_type       IN   iby_creditcard.instrument_type%TYPE,
117    p_pcard_flag       IN   iby_creditcard.purchasecard_flag%TYPE,
118    p_pcard_type       IN   iby_creditcard.purchasecard_subtype%TYPE,
119    p_issuer           IN   iby_creditcard.card_issuer_code%TYPE,
120    p_fi_name          IN   iby_creditcard.finame%TYPE,
121    p_single_use       IN   iby_creditcard.single_use_flag%TYPE,
122    p_info_only        IN   iby_creditcard.information_only_flag%TYPE,
123    p_purpose          IN   iby_creditcard.card_purpose%TYPE,
124    p_desc             IN   iby_creditcard.description%TYPE,
125    p_active_flag      IN   iby_creditcard.active_flag%TYPE,
126    p_inactive_date    IN   iby_creditcard.inactive_date%TYPE,
127    p_sys_sec_key      IN   iby_security_pkg.DES3_KEY_TYPE,
128 	   p_attribute_category IN iby_creditcard.attribute_category%TYPE,
129 	   p_attribute1	IN 	iby_creditcard.attribute1%TYPE,
130 	   p_attribute2	IN 	iby_creditcard.attribute2%TYPE,
134 	   p_attribute6	IN 	iby_creditcard.attribute6%TYPE,
131 	   p_attribute3	IN 	iby_creditcard.attribute3%TYPE,
132 	   p_attribute4	IN 	iby_creditcard.attribute4%TYPE,
133 	   p_attribute5	IN 	iby_creditcard.attribute5%TYPE,
135 	   p_attribute7	IN 	iby_creditcard.attribute7%TYPE,
136 	   p_attribute8	IN 	iby_creditcard.attribute8%TYPE,
137 	   p_attribute9	IN 	iby_creditcard.attribute9%TYPE,
138 	   p_attribute10	IN 	iby_creditcard.attribute10%TYPE,
139 	   p_attribute11	IN 	iby_creditcard.attribute11%TYPE,
140 	   p_attribute12	IN 	iby_creditcard.attribute12%TYPE,
141 	   p_attribute13	IN 	iby_creditcard.attribute13%TYPE,
142 	   p_attribute14	IN 	iby_creditcard.attribute14%TYPE,
143 	   p_attribute15	IN 	iby_creditcard.attribute15%TYPE,
144 	   p_attribute16	IN 	iby_creditcard.attribute16%TYPE,
145 	   p_attribute17	IN 	iby_creditcard.attribute17%TYPE,
146 	   p_attribute18	IN 	iby_creditcard.attribute18%TYPE,
147 	   p_attribute19	IN 	iby_creditcard.attribute19%TYPE,
148 	   p_attribute20	IN 	iby_creditcard.attribute20%TYPE,
149 	   p_attribute21	IN 	iby_creditcard.attribute21%TYPE,
150 	   p_attribute22	IN 	iby_creditcard.attribute22%TYPE,
151 	   p_attribute23	IN 	iby_creditcard.attribute23%TYPE,
152 	   p_attribute24	IN 	iby_creditcard.attribute24%TYPE,
153 	   p_attribute25	IN 	iby_creditcard.attribute25%TYPE,
154 	   p_attribute26	IN 	iby_creditcard.attribute26%TYPE,
155 	   p_attribute27	IN 	iby_creditcard.attribute27%TYPE,
156 	   p_attribute28	IN 	iby_creditcard.attribute28%TYPE,
157 	   p_attribute29	IN 	iby_creditcard.attribute29%TYPE,
158 	   p_attribute30	IN 	iby_creditcard.attribute30%TYPE,
159    x_result_code      OUT  NOCOPY VARCHAR2,
160    x_instr_id         OUT  NOCOPY iby_creditcard.instrid%TYPE,
161    p_allow_invalid_card      IN      VARCHAR2,
162    p_user_id                 IN      NUMBER,
163    p_login_id                IN      NUMBER
164   );
165 
166   PROCEDURE Update_Card
167   (p_commit           IN   VARCHAR2,
168    p_instr_id         IN   iby_creditcard.instrid%TYPE,
169    p_owner_id         IN   iby_creditcard.card_owner_id%TYPE,
170    p_holder_name      IN   iby_creditcard.chname%TYPE,
171    p_billing_address_id IN iby_creditcard.addressid%TYPE,
172    p_address_type     IN   VARCHAR2 := G_PARTY_SITE_ID,
173    p_billing_zip      IN   iby_creditcard.billing_addr_postal_code%TYPE,
174    p_billing_country  IN   iby_creditcard.bill_addr_territory_code%TYPE,
175    p_expiry_date      IN   iby_creditcard.expirydate%TYPE,
176    p_instr_type       IN   iby_creditcard.instrument_type%TYPE,
177    p_pcard_flag       IN   iby_creditcard.purchasecard_flag%TYPE,
178    p_pcard_type       IN   iby_creditcard.purchasecard_subtype%TYPE,
179    p_fi_name          IN   iby_creditcard.finame%TYPE,
180    p_single_use       IN   iby_creditcard.single_use_flag%TYPE,
181    p_info_only        IN   iby_creditcard.information_only_flag%TYPE,
182    p_purpose          IN   iby_creditcard.card_purpose%TYPE,
183    p_desc             IN   iby_creditcard.description%TYPE,
184    p_active_flag      IN   iby_creditcard.active_flag%TYPE,
185    p_inactive_date    IN   iby_creditcard.inactive_date%TYPE,
186 	   p_attribute_category IN iby_creditcard.attribute_category%TYPE,
187 	   p_attribute1	IN 	iby_creditcard.attribute1%TYPE,
188 	   p_attribute2	IN 	iby_creditcard.attribute2%TYPE,
189 	   p_attribute3	IN 	iby_creditcard.attribute3%TYPE,
190 	   p_attribute4	IN 	iby_creditcard.attribute4%TYPE,
191 	   p_attribute5	IN 	iby_creditcard.attribute5%TYPE,
192 	   p_attribute6	IN 	iby_creditcard.attribute6%TYPE,
193 	   p_attribute7	IN 	iby_creditcard.attribute7%TYPE,
194 	   p_attribute8	IN 	iby_creditcard.attribute8%TYPE,
195 	   p_attribute9	IN 	iby_creditcard.attribute9%TYPE,
196 	   p_attribute10	IN 	iby_creditcard.attribute10%TYPE,
197 	   p_attribute11	IN 	iby_creditcard.attribute11%TYPE,
198 	   p_attribute12	IN 	iby_creditcard.attribute12%TYPE,
199 	   p_attribute13	IN 	iby_creditcard.attribute13%TYPE,
200 	   p_attribute14	IN 	iby_creditcard.attribute14%TYPE,
201 	   p_attribute15	IN 	iby_creditcard.attribute15%TYPE,
202 	   p_attribute16	IN 	iby_creditcard.attribute16%TYPE,
203 	   p_attribute17	IN 	iby_creditcard.attribute17%TYPE,
204 	   p_attribute18	IN 	iby_creditcard.attribute18%TYPE,
205 	   p_attribute19	IN 	iby_creditcard.attribute19%TYPE,
206 	   p_attribute20	IN 	iby_creditcard.attribute20%TYPE,
207 	   p_attribute21	IN 	iby_creditcard.attribute21%TYPE,
208 	   p_attribute22	IN 	iby_creditcard.attribute22%TYPE,
209 	   p_attribute23	IN 	iby_creditcard.attribute23%TYPE,
210 	   p_attribute24	IN 	iby_creditcard.attribute24%TYPE,
211 	   p_attribute25	IN 	iby_creditcard.attribute25%TYPE,
212 	   p_attribute26	IN 	iby_creditcard.attribute26%TYPE,
213 	   p_attribute27	IN 	iby_creditcard.attribute27%TYPE,
214 	   p_attribute28	IN 	iby_creditcard.attribute28%TYPE,
215 	   p_attribute29	IN 	iby_creditcard.attribute29%TYPE,
216 	   p_attribute30	IN 	iby_creditcard.attribute30%TYPE,
217            x_result_code      OUT NOCOPY VARCHAR2,
218    p_allow_invalid_card      IN      VARCHAR2,
219    p_issuer           IN   iby_creditcard.card_issuer_code%TYPE
220   );
221 
222   PROCEDURE check_card_validity
223   (
224     p_instr_id            IN iby_creditcard.instrid%TYPE,
225     x_issuer              IN OUT NOCOPY iby_creditcard.card_issuer_code%TYPE,
226     x_invalid_flag        OUT NOCOPY iby_creditcard.invalid_flag%TYPE,
227     x_invalidation_reason OUT NOCOPY iby_creditcard.invalidation_reason%TYPE
228   );
229 
230 
231   PROCEDURE Query_Card
232   (p_card_id          IN   iby_creditcard.instrid%TYPE,
233    p_sys_sec_key      IN   iby_security_pkg.DES3_KEY_TYPE,
234    x_owner_id         OUT NOCOPY iby_creditcard.card_owner_id%TYPE,
235    x_holder_name      OUT NOCOPY iby_creditcard.chname%TYPE,
239    x_billing_address3 OUT NOCOPY hz_locations.address3%TYPE,
236    x_billing_address_id OUT NOCOPY iby_creditcard.addressid%TYPE,
237    x_billing_address1 OUT NOCOPY hz_locations.address1%TYPE,
238    x_billing_address2 OUT NOCOPY hz_locations.address2%TYPE,
240    x_billing_city     OUT NOCOPY hz_locations.city%TYPE,
241    x_billing_county   OUT NOCOPY hz_locations.county%TYPE,
242    x_billing_state    OUT NOCOPY hz_locations.state%TYPE,
243    x_billing_zip      OUT NOCOPY hz_locations.postal_code%TYPE,
244    x_billing_country  OUT NOCOPY hz_locations.country%TYPE,
245    x_card_number      OUT NOCOPY iby_creditcard.ccnumber%TYPE,
246    x_expiry_date      OUT NOCOPY iby_creditcard.expirydate%TYPE,
247    x_instr_type       OUT NOCOPY iby_creditcard.instrument_type%TYPE,
248    x_pcard_flag       OUT NOCOPY iby_creditcard.purchasecard_flag%TYPE,
249    x_pcard_type       OUT NOCOPY iby_creditcard.purchasecard_subtype%TYPE,
250    x_issuer           OUT NOCOPY iby_creditcard.card_issuer_code%TYPE,
251    x_fi_name          OUT NOCOPY iby_creditcard.finame%TYPE,
252    x_single_use       OUT NOCOPY iby_creditcard.single_use_flag%TYPE,
253    x_info_only        OUT NOCOPY iby_creditcard.information_only_flag%TYPE,
254    x_purpose          OUT NOCOPY iby_creditcard.card_purpose%TYPE,
255    x_desc             OUT NOCOPY iby_creditcard.description%TYPE,
256    x_active_flag      OUT NOCOPY iby_creditcard.active_flag%TYPE,
257    x_inactive_date    OUT NOCOPY iby_creditcard.inactive_date%TYPE,
258    x_result_code      OUT  NOCOPY VARCHAR2
259   );
260 
261 
262   PROCEDURE Query_Card
263   (p_card_id          IN   iby_creditcard.instrid%TYPE,
264    p_sys_sec_key      IN   iby_security_pkg.DES3_KEY_TYPE,
265    x_owner_id         OUT NOCOPY iby_creditcard.card_owner_id%TYPE,
266    x_holder_name      OUT NOCOPY iby_creditcard.chname%TYPE,
267    x_billing_address_id OUT NOCOPY iby_creditcard.addressid%TYPE,
268    x_billing_address1 OUT NOCOPY hz_locations.address1%TYPE,
269    x_billing_address2 OUT NOCOPY hz_locations.address2%TYPE,
270    x_billing_address3 OUT NOCOPY hz_locations.address3%TYPE,
271    x_billing_city     OUT NOCOPY hz_locations.city%TYPE,
272    x_billing_county   OUT NOCOPY hz_locations.county%TYPE,
273    x_billing_state    OUT NOCOPY hz_locations.state%TYPE,
274    x_billing_zip      OUT NOCOPY hz_locations.postal_code%TYPE,
275    x_billing_country  OUT NOCOPY hz_locations.country%TYPE,
276    x_card_number      OUT NOCOPY iby_creditcard.ccnumber%TYPE,
277    x_expiry_date      OUT NOCOPY iby_creditcard.expirydate%TYPE,
278    x_instr_type       OUT NOCOPY iby_creditcard.instrument_type%TYPE,
279    x_pcard_flag       OUT NOCOPY iby_creditcard.purchasecard_flag%TYPE,
280    x_pcard_type       OUT NOCOPY iby_creditcard.purchasecard_subtype%TYPE,
281    x_issuer           OUT NOCOPY iby_creditcard.card_issuer_code%TYPE,
282    x_fi_name          OUT NOCOPY iby_creditcard.finame%TYPE,
283    x_single_use       OUT NOCOPY iby_creditcard.single_use_flag%TYPE,
284    x_info_only        OUT NOCOPY iby_creditcard.information_only_flag%TYPE,
285    x_purpose          OUT NOCOPY iby_creditcard.card_purpose%TYPE,
286    x_desc             OUT NOCOPY iby_creditcard.description%TYPE,
287    x_active_flag      OUT NOCOPY iby_creditcard.active_flag%TYPE,
288    x_inactive_date    OUT NOCOPY iby_creditcard.inactive_date%TYPE,
289    x_result_code      OUT  NOCOPY VARCHAR2,
290    x_province         OUT NOCOPY hz_locations.country%TYPE
291   );
292 
293 
294   --
295   -- USE: Unciphers a the credit card number of a stored credit card
296   --      instrument
297   -- ARGS: i_instrid => the instrument id
298   --       i_sys_sec_key => the system security key
299   --
300   FUNCTION uncipher_ccnumber
301   (p_instrid        IN iby_creditcard.instrid%TYPE,
302    p_sys_sec_key    IN iby_security_pkg.DES3_KEY_TYPE
303   )
304   RETURN iby_creditcard.ccnumber%TYPE;
305 
306   --
307   --
308   FUNCTION uncipher_ccnumber
309   (p_cc_number     IN     iby_creditcard.ccnumber%TYPE,
310    p_segment_cipher IN    iby_security_segments.segment_cipher_text%TYPE,
311    p_encrypted     IN     iby_creditcard.encrypted%TYPE,
312    p_sys_key       IN     iby_security_pkg.DES3_KEY_TYPE,
313    p_subkey_cipher IN     iby_sys_security_subkeys.subkey_cipher_text%TYPE,
314    p_card_len      IN     iby_cc_issuer_ranges.card_number_length%TYPE,
315    p_cc_prefix     IN     iby_cc_issuer_ranges.card_number_prefix%TYPE,
316    p_digit_check   IN     iby_creditcard_issuers_b.digit_check_flag%TYPE,
317    p_mask_setting  IN     iby_sys_security_options.credit_card_mask_setting%TYPE,
318    p_unmask_len    IN     iby_sys_security_options.credit_card_unmask_len%TYPE,
319    p_unmask_digits IN     iby_creditcard.masked_cc_number%TYPE
320   )
321   RETURN iby_creditcard.ccnumber%TYPE;
322 
323   --
324   -- USE: Wrapper of the above function for the UI.
325   -- In the UI the SQL is executed by the framework.
326   -- We can not catch the exception thrown from the function call.
327   -- It will cause unacceptable error in the UI.
328   -- In case of exceptions this wrapper function will
329   -- simply swallow it and return null.
330   -- The UI will display empty instrument number
331   -- for this case.
332   -- ARGS: i_instrid => the instrument id
333   --       i_sys_sec_key => the system security key
334   --
335   FUNCTION uncipher_ccnumber_ui_wrp
336   (i_instrid     IN iby_creditcard.instrid%TYPE,
337    i_sys_sec_key IN iby_security_pkg.DES3_KEY_TYPE)
338   RETURN iby_creditcard.ccnumber%TYPE;
339 
340   --
341   -- USE: Un-encrypts all registered credit card instruments, storing
342   --      data in obfuscated form
343   --
344   -- ARGS:  p_commit => whether to commit the changes
345   --        p_sys_key => system security key; used to decrypt instruments
346   --
347   PROCEDURE Decrypt_Instruments
348   (p_commit      IN     VARCHAR2 := FND_API.G_TRUE,
352   --
349    p_sys_key     IN     iby_security_pkg.DES3_KEY_TYPE
350   );
351 
353   -- USE: Encrypts all registered credit cards
354   --
355   -- ARGS:  p_commit => whether to commit the changes
356   --        p_sys_key => system security key; used to encrypt instruments
357   --
358   PROCEDURE Encrypt_Instruments
359   (p_commit      IN     VARCHAR2 := FND_API.G_TRUE,
360    p_sys_key     IN     iby_security_pkg.DES3_KEY_TYPE
361   );
362 
363   --
364   -- USE: Updates instrument masks according to new setting
365   --
366   -- ARGS:  p_commit => whether to commit the changes
367   --        p_sys_key => system security key; used to encrypt instruments
368   --
369   PROCEDURE Remask_Instruments
370   (p_commit      IN     VARCHAR2 := FND_API.G_TRUE,
371    p_sys_key     IN     iby_security_pkg.DES3_KEY_TYPE
372   );
373 
374   -- USE: Compresses a card number into the minimum clear text
375   --      representation
376   --
377   PROCEDURE Compress_CC_Number
378   (p_card_number IN iby_creditcard.ccnumber%TYPE,
379    p_prefix      IN iby_cc_issuer_ranges.card_number_prefix%TYPE,
380    p_digit_check IN iby_creditcard_issuers_b.digit_check_flag%TYPE,
381    p_mask_setting IN iby_sys_security_options.credit_card_mask_setting%TYPE,
382    p_unmask_len  IN iby_sys_security_options.credit_card_unmask_len%TYPE,
383    x_compress_num OUT NOCOPY iby_creditcard.ccnumber%TYPE,
384    x_unmask_digits OUT NOCOPY iby_creditcard.masked_cc_number%TYPE
385   );
386 
387   -- USE: Uncompresses the credit card number based upon its known digits
388   --      (range prefix, check digits, unmasked digits) and the clear text
389   --      of its comprssed digits
390   -- ARGS: p_card_number => clear text of the compressed card digits
391   --       p_card_length => actual length of the credit card (uncompressed)
392   --       p_prefix => issuer range prefix
393   --       p_digit_check => 'Y' if the card has a check digit
394   --       p_mask_setting => masking option of the card number
395   --       p_unmask_len => number of digits exposed in the mask
396   --       p_unmask_digits => unmasked digits
397   --
398   FUNCTION Uncompress_CC_Number
399   (p_card_number IN iby_creditcard.ccnumber%TYPE,
400    p_card_length IN iby_creditcard.cc_number_length%TYPE,
401    p_prefix      IN iby_cc_issuer_ranges.card_number_prefix%TYPE,
402    p_digit_check IN iby_creditcard_issuers_b.digit_check_flag%TYPE,
403    p_mask_setting IN iby_sys_security_options.credit_card_mask_setting%TYPE,
404    p_unmask_len  IN iby_sys_security_options.credit_card_unmask_len%TYPE,
405    p_unmask_digits IN iby_creditcard.masked_cc_number%TYPE
406   )
407   RETURN iby_creditcard.ccnumber%TYPE;
408 
409   --
410   -- USE: Gets the number of digits in a compressed credit card number
411   --
412   FUNCTION Get_Compressed_Len
413   (p_card_length IN iby_creditcard.cc_number_length%TYPE,
414    p_prefix      IN iby_cc_issuer_ranges.card_number_prefix%TYPE,
415    p_digit_check IN iby_creditcard_issuers_b.digit_check_flag%TYPE,
416    p_mask_setting IN iby_sys_security_options.credit_card_mask_setting%TYPE,
417    p_unmask_len  IN iby_sys_security_options.credit_card_unmask_len%TYPE
418   )
419   RETURN NUMBER;
420 
421   --
422   -- USE: Encrypts the other sensitive card info and returns the
423   --      corresponding security segment_IDs
424   --
425   PROCEDURE Encrypt_Card_Info
426   (p_commit            IN   VARCHAR2  := FND_API.G_TRUE,
427    p_sys_security_key  IN   iby_security_pkg.DES3_KEY_TYPE,
428    p_expiry_date       IN   DATE,
429    p_expSegmentId      IN   NUMBER,
430    p_chname            IN   VARCHAR2,
431    p_chnameSegmentId   IN   NUMBER,
432    p_chnameMaskSetting IN   VARCHAR2,
433    p_chnameUnmaskLen   IN   NUMBER,
434    x_exp_segment_id    OUT NOCOPY NUMBER,
435    x_masked_chname     OUT NOCOPY VARCHAR2,
436    x_chname_segment_id OUT NOCOPY NUMBER,
437    x_chnameMaskSetting OUT NOCOPY VARCHAR2,
438    x_chnameUnmaskLen   OUT NOCOPY NUMBER,
439    x_err_code          OUT NOCOPY VARCHAR2
440   );
441 
442   --
443   -- USE: Updates the EXPIRED_FLAG for all the active credit cards
444   --
445   --
446   PROCEDURE Mark_Expired_Cards
447   (p_commit       IN   VARCHAR2  := FND_API.G_TRUE,
448    p_sys_sec_key  IN   iby_security_pkg.DES3_KEY_TYPE
449   );
450 
451   --
452   -- USE: Upgrades the previously encrypted credit card records, by
453   --      encrypting the corresponding chname and expirydate
454   --
455   --
456   PROCEDURE Upgrade_Encrypted_Instruments
457   (p_commit       IN   VARCHAR2  := FND_API.G_TRUE,
458    p_sys_sec_key  IN   iby_security_pkg.DES3_KEY_TYPE
459   );
460 
461 
462   PROCEDURE Check_CC_Expiry
463   (p_instrid      IN   IBY_CREDITCARD.instrid%TYPE,
464    p_input_date   IN DATE,
465    p_sys_sec_key  IN   iby_security_pkg.DES3_KEY_TYPE,
466    x_expired      OUT NOCOPY VARCHAR2
467   );
468 
469   PROCEDURE Upgrade_Risky_Instruments
470   (
471     p_commit       IN   VARCHAR2
472   );
473 
474   --
475   -- Name: Purge_Sensitive_Data
476   -- Notes: This is the executable for the PA-DSS Purge Program(CP)
477   --        'Purge Redundant PA-DSS Incidental Data'.
478   --        Purges the data from across products to make
479   --        the application compliant with PADSS.
480   --
481   PROCEDURE Purge_Sensitive_Data
482   (x_errbuf      OUT NOCOPY VARCHAR2,
483    x_retcode     OUT NOCOPY VARCHAR2,
484    x_batch_size  IN NUMBER,
485    x_num_workers IN NUMBER
486   );
487 
488 END iby_creditcard_pkg;