Выполнение транзакции на основе предыдущих транзакций в авторизации.ЧИСТЫЙ CIM

#transactions #payment-gateway #payment #authorize.net #authorize.net-cim

#транзакции #платежный шлюз #оплата #authorize.net #авторизовать.net-cim

Вопрос:

Я новичок в Authorize.NET . Возможна ли ссылочная транзакция в authorize.net . Например: пользователь A приходит и впервые вводит данные кредитной карты, он производит платеж. Теперь во второй раз, когда он выполняет платеж, должны использоваться данные предыдущей транзакции (т. Е. Он не будет вводить данные снова, по умолчанию должны использоваться первые платежные данные), и платеж должен быть выполнен. Есть ли такая опция, доступная в Authorize.Сетевая служба CIM.

Я использую авторизацию.NET SDK от https://github.com/AuthorizeNet/sdk-dotnet Это предоставляет мне функции для CIM, но я не уверен, как использовать вышеупомянутый сценарий. Используя PayFlow Pro, мы можем успешно это сделать (концепция ссылочной транзакции), выполняет ли CIM авторизацию.NET предоставляет эту функцию с помощью CIM.

Я могу авторизовать кредитную карту и на основе ответа («Код авторизации») Я действительно захватил. Теперь после этого из параметров ответа захвата я попытался выполнить другую транзакцию. Но произошел сбой и появилось сообщение об ошибке: эта транзакция уже отправлена.

Ответ №1:

То, о чем вы просите, — это именно то, что делает CIM. CIM позволяет создать платежный профиль клиента, в котором хранятся данные кредитной карты клиента в Авторизации.Сетевой сервер и возвращает вам идентификатор для ссылки на него. Всякий раз, когда этот клиент желает произвести будущие платежи, вы просто ссылаетесь на этот идентификатор для совершения платежа. Клиенту не нужно предоставлять вам какую-либо дополнительную информацию.

Получаемое сообщение об ошибке указывает на то, что вы используете не CIM, а AIM (расширенный метод интеграции). Это другое и не связано с CIM. Чтобы использовать CIM, вы должны использовать CIM API.

Ответ №2:

Этот ответ специфичен для authorize.net .Net SDK, использующий C #.

Вы должны локально хранить CIM ProfileID (уникальный идентификатор для профиля клиента) и CIM paymentprofileID (ы) (уникальные идентификаторы для каждой платежной карты, добавленной в профиль клиента). Таким образом, в ваших записях клиентов / пользователей должен быть способ хранения этих двух целых чисел.

Документация из authorize.net для того, как использовать CIM в их .Net SDK, в лучшем случае это ужасно. Я пытался получить от них поддержку, но они постоянно говорили, что SDK не поддерживает CIM, что неверно, потому что все методы его использования существуют. Я приведу несколько строк кода, которые должны указать вам правильное направление для использования этого мощного инструмента.

Все предполагает, что вы пишете код в файле класса, который «использует AuthorizeNet», и что у вас есть последние библиотеки DLL из authorize.net .

Во-первых, класс AuthorizeNet имеет тип «Address». Здесь хранится адресная информация либо для профиля CIM, либо для профиля оплаты CIM. Вот простой метод, который я создал для создания объекта Address:

 private static Address getAddressObject(string fname, string lname, string address, string city, string state, string zip, string phone)
        {
            var a = new Address();
            a.First = fname;
            a.Last = lname;
            a.Street = address;
            a.City = city;
            a.State = state;
            a.Zip = zip;
            a.Phone = phone;
            return a;
        }
 

Используйте этот метод для создания одного или нескольких объектов адресов (для доставки, выставления счетов, для конкретной кредитной карты и т. Д.) И подготовьте их к взаимодействию со шлюзом.

Теперь создайте объект CustomerGateway

 CustomerGateway cg = new CustomerGateway(loginInfo[0], loginInfo[1], ServiceMode.Live);
 

Теперь создайте пустой объект Customer

 Customer cust;
 

На этом этапе у вас есть два варианта:

Посмотрите, существует ли профиль CIM, используя ваш локально сохраненный CIMprofileid:

 cust = cg.GetCustomer(rdr["CIMprofileID"].ToString());
 

-или-

Создайте новый CIMprofile

 cust = cg.CreateCustomer(email, description);
 

После того, как вы установили cust, вы можете получить CIM ProfileID из cust.ProfileID

Теперь для создания нового платежного профиля CIM с помощью cg.AddCreditCard() . Для этого существует 3 перегрузки, # 2 добавляет номер CVV, а # 3 имеет возможность добавлять объект Address для AVS. Если вы это сделаете string paymentprofileid = cg.AddCreditCard() , paymentprofileid станет номером, который вы должны сохранить для этой кредитной карты, чтобы вы могли снова списать его в будущем. Хотя вы можете просмотреть их, номер карты, который возвращает CIM, отформатирован как «XXXX1234», поэтому впоследствии может быть сложно сопоставить.

Получив эти значения, вы можете использовать документированные методы для списания средств с карты профиля CIM. Желаю удачи!

Комментарии:

1. Спасибо за замечательные объяснения, Спасибо !!.. Я понял, что вы пытаетесь донести.