Nodejs Авторизация. net Дубликат ошибки профиля оплаты клиента - PullRequest
2 голосов
/ 17 марта 2020

Я пытался сохранить несколько карт клиента, создав профиль оплаты для каждой карты, используя идентификатор профиля клиента. Код работает нормально, так как сначала он создает профиль, а затем возвращает повторяющуюся ошибку, как указано ниже.

Ответ

 {
    "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');

Как добавить несколько карт для авторизации. net? Есть ли объект настроек, позволяющий дублировать платежный профиль.

...