```function saveCreditCard(scriptContext, cpCache,...
# suitescript
n
Copy code
function saveCreditCard(scriptContext, cpCache, ccinfo) {
			try {
                var response = '';
                var paymentInstruments = runtime.isFeatureInEffect({'feature': 'PAYMENTINSTRUMENTS'});
				if (ccinfo) {
					var creditCardInfo = JSON.parse(ccinfo);
					var ccnumber = creditCardInfo.ccnumber;
					var cctype = creditCardInfo.cctype;
					var ccexpiremonth = creditCardInfo.ccexpiremonth;
					var ccexpireyear = creditCardInfo.ccexpireyear;
					var ccname = creditCardInfo.ccname;
					var expiredate = new Date(''+ccexpiremonth+'/1/'+ccexpireyear+'');
				} else {
					var ccnumber = scriptContext.request.parameters.ccnumber;
					var cctype = scriptContext.request.parameters.cctype;
					var ccexpiremonth = scriptContext.request.parameters.ccexpiremonth;
					var ccexpireyear = scriptContext.request.parameters.ccexpireyear;
					var ccname = scriptContext.request.parameters.ccname;
					var expiredate = new Date(''+ccexpiremonth+'/1/'+ccexpireyear+'');
                }
                
                switch (runtime.isFeatureInEffect({'feature': 'PAYMENTINSTRUMENTS'})) {
                    case true:
                            var paymentcard = record.create({
                                type: record.Type.PAYMENT_CARD,
                                isDynamic: true                       
                            });
                            paymentcard.setValue({'fieldId': 'paymentmethod', 'value': cctype});
                            paymentcard.setValue({'fieldId': 'entity', 'value': cpCache.companyid});
                            paymentcard.setValue({'fieldId': 'preserveonfile', 'value': true});
                            paymentcard.setValue({'fieldId': 'cardnumber', 'value': ccnumber});
                            paymentcard.setValue({'fieldId': 'expirationdate', 'value': expiredate});
                            paymentcard.setValue({'fieldId': 'nameoncard', 'value': ccname});
							paymentcard.setValue({'fieldId': 'cardbrand', 'value': cctype});
							paymentcard.setValue({'fieldId': 'memo', 'value': scriptContext.request.parameters.nickname});
                
                            var recordId = paymentcard.save({
                                enableSourcing: true,
                                ignoreMandatoryFields: true
                            });
                        break;
                
                    case false:
                            var objRecord = record.load({
                                type: 'customer', 
                                id: cpCache.companyid,
                                isDynamic: false,
                            });
                            var lineNum = objRecord.selectNewLine({
                                sublistId: 'creditcards'
                            });
                            objRecord.setCurrentSublistValue({
                                sublistId: 'creditcards',
                                fieldId: 'ccnumber',
                                value: ccnumber,
                                ignoreFieldChange: true
                            });
                            objRecord.setCurrentSublistValue({
                                sublistId: 'creditcards',
                                fieldId: 'paymentmethod',
                                value: cctype,
                                ignoreFieldChange: true
                            });
                            objRecord.setCurrentSublistValue({
                                sublistId: 'creditcards',
                                fieldId: 'ccname',
                                value: ccname,
                                ignoreFieldChange: true
                            });
                            objRecord.setCurrentSublistValue({
                                sublistId: 'creditcards',
                                fieldId: 'ccexpiredate',
                                value: expiredate,
                                ignoreFieldChange: true
							});
							objRecord.setCurrentSublistValue({
                                sublistId: 'creditcards',
                                fieldId: 'memo',
                                value: scriptContext.request.parameters.nickname,
                                ignoreFieldChange: true
                            });

                            objRecord.commitLine({
                                sublistId: 'creditcards'
                            });
                            var recordId = objRecord.save({
                                ignoreMandatoryFields: true
                            });
                        break;
                    }

				response = recordId;
				
			} catch (ex) {
				log.error({'title':'saveCreditCard', 'details': ex.message || ex});
			}
			return JSON.stringify(response);
		}