Nodejs Authorize.net重复客户付款配置文件错误



我试图通过使用客户配置文件id为每张卡创建客户付款配置文件来保存一张客户的多张卡。代码运行良好,因为它首先创建了一个配置文件,然后返回了一个重复的错误,如下所示。

响应

{
"success": false,
"message": "A duplicate customer payment profile already exists.",
"error": {
"status": false,
"message": "A duplicate customer payment profile already exists.",
"data": ""
}
}

https://developer.authorize.net/api/reference/features/customer_profiles.html

代码

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?是否有允许重复付款配置文件的设置对象?

我在开发过程中遇到了这个错误,因为我发送的卡号和截止日期相同。如果你在开发过程中每次都切换到期日期,你应该会得到保存的

最新更新