Javascript Nodejs Authorize.net重复客户付款配置文件错误
我试图通过使用客户配置文件id为每张卡创建客户付款配置文件来保存客户的多张卡。代码工作正常,因为它首先创建配置文件,然后返回重复错误,如下所示Javascript Nodejs Authorize.net重复客户付款配置文件错误,javascript,node.js,payment-gateway,authorize.net,Javascript,Node.js,Payment Gateway,Authorize.net,我试图通过使用客户配置文件id为每张卡创建客户付款配置文件来保存客户的多张卡。代码工作正常,因为它首先创建配置文件,然后返回重复错误,如下所示 const transactionSetting1 = new ApiContracts.SettingType(); transactionSetting1.setSettingName('duplicateWindow'); transactionSetting1.setSettingValue('0'); 响应 {
const transactionSetting1 = new ApiContracts.SettingType();
transactionSetting1.setSettingName('duplicateWindow');
transactionSetting1.setSettingValue('0');
响应
{
"success": false,
"message": "A duplicate customer payment profile already exists.",
"error": {
"status": false,
"message": "A duplicate customer payment profile already exists.",
"data": ""
}
}
createCustomerPaymentProfile: async payload => {
const {
businessData,
customerProfileId,
customerDetails,
creditCardDetails,
} = payload;
const merchantAuthenticationType = new ApiContracts.MerchantAuthenticationType();
merchantAuthenticationType.setName(businessData.apiLoginKey);
merchantAuthenticationType.setTransactionKey(businessData.transactionKey);
const creditCard = new ApiContracts.CreditCardType();
creditCard.setCardNumber(creditCardDetails.CardNumber);
creditCard.setExpirationDate(creditCardDetails.ExpirationDate);
const paymentType = new ApiContracts.PaymentType();
paymentType.setCreditCard(creditCard);
const customerAddress = new ApiContracts.CustomerAddressType();
customerAddress.setFirstName(customerDetails.FirstName);
customerAddress.setLastName(customerDetails.LastName);
customerAddress.setAddress(customerDetails.Address);
customerAddress.setCity(customerDetails.FirstName);
customerAddress.setState(customerDetails.FirstName);
customerAddress.setZip(customerDetails.FirstName);
customerAddress.setCountry(customerDetails.FirstName);
customerAddress.setPhoneNumber(customerDetails.FirstName);
const profile = new ApiContracts.CustomerPaymentProfileType();
profile.setBillTo(customerAddress);
profile.setPayment(paymentType);
const createRequest = new ApiContracts.CreateCustomerPaymentProfileRequest();
createRequest.setMerchantAuthentication(merchantAuthenticationType);
createRequest.setCustomerProfileId(customerProfileId);
createRequest.setPaymentProfile(profile);
const ctrl = new ApiControllers.CreateCustomerPaymentProfileController(
createRequest.getJSON(),
);
const result = await new Promise((resolve, reject) => {
ctrl.execute(function() {
const apiResponse = ctrl.getResponse();
const response = new ApiContracts.CreateCustomerPaymentProfileResponse(
apiResponse,
);
console.log('Response of Pyament Profile');
console.log(JSON.stringify(response, null, 2));
if (response != null) {
if (
response.getMessages().getResultCode() ==
ApiContracts.MessageTypeEnum.OK
) {
return resolve({
status: true,
message: 'Customer paymentProfileId,customerProfileId ',
data: {
paymentProfileId: response.getCustomerPaymentProfileId(),
customerProfileId: response.getCustomerProfileId(),
},
});
}
return reject({
status: false,
message: `${response
.getMessages()
.getMessage()[0]
.getText()}`,
data: '',
});
}
return reject({
status: false,
message: `Null response returned`,
data: '',
});
});
});
return result;
代码
{
"success": false,
"message": "A duplicate customer payment profile already exists.",
"error": {
"status": false,
"message": "A duplicate customer payment profile already exists.",
"data": ""
}
}
createCustomerPaymentProfile: async payload => {
const {
businessData,
customerProfileId,
customerDetails,
creditCardDetails,
} = payload;
const merchantAuthenticationType = new ApiContracts.MerchantAuthenticationType();
merchantAuthenticationType.setName(businessData.apiLoginKey);
merchantAuthenticationType.setTransactionKey(businessData.transactionKey);
const creditCard = new ApiContracts.CreditCardType();
creditCard.setCardNumber(creditCardDetails.CardNumber);
creditCard.setExpirationDate(creditCardDetails.ExpirationDate);
const paymentType = new ApiContracts.PaymentType();
paymentType.setCreditCard(creditCard);
const customerAddress = new ApiContracts.CustomerAddressType();
customerAddress.setFirstName(customerDetails.FirstName);
customerAddress.setLastName(customerDetails.LastName);
customerAddress.setAddress(customerDetails.Address);
customerAddress.setCity(customerDetails.FirstName);
customerAddress.setState(customerDetails.FirstName);
customerAddress.setZip(customerDetails.FirstName);
customerAddress.setCountry(customerDetails.FirstName);
customerAddress.setPhoneNumber(customerDetails.FirstName);
const profile = new ApiContracts.CustomerPaymentProfileType();
profile.setBillTo(customerAddress);
profile.setPayment(paymentType);
const createRequest = new ApiContracts.CreateCustomerPaymentProfileRequest();
createRequest.setMerchantAuthentication(merchantAuthenticationType);
createRequest.setCustomerProfileId(customerProfileId);
createRequest.setPaymentProfile(profile);
const ctrl = new ApiControllers.CreateCustomerPaymentProfileController(
createRequest.getJSON(),
);
const result = await new Promise((resolve, reject) => {
ctrl.execute(function() {
const apiResponse = ctrl.getResponse();
const response = new ApiContracts.CreateCustomerPaymentProfileResponse(
apiResponse,
);
console.log('Response of Pyament Profile');
console.log(JSON.stringify(response, null, 2));
if (response != null) {
if (
response.getMessages().getResultCode() ==
ApiContracts.MessageTypeEnum.OK
) {
return resolve({
status: true,
message: 'Customer paymentProfileId,customerProfileId ',
data: {
paymentProfileId: response.getCustomerPaymentProfileId(),
customerProfileId: response.getCustomerProfileId(),
},
});
}
return reject({
status: false,
message: `${response
.getMessages()
.getMessage()[0]
.getText()}`,
data: '',
});
}
return reject({
status: false,
message: `Null response returned`,
data: '',
});
});
});
return result;
}
我在事务和订阅API中有这个错误,但是通过添加下面给出的代码,这些错误被修复了
const transactionSetting1 = new ApiContracts.SettingType();
transactionSetting1.setSettingName('duplicateWindow');
transactionSetting1.setSettingValue('0');
如何将多张卡添加到authorize.net?
是否存在允许重复付款配置文件的设置对象