Выполнение транзакции на основе предыдущих транзакций в Authorize.NET CIM
Я новичок в Authorize.NET. Возможна ли ссылочная сделка в authorize.net. Например: пользователь A приходит и вводит данные кредитной карты в первый раз, он делает платеж. Теперь, во второй раз, когда он выполняет платеж, необходимо использовать детали предыдущей транзакции (т.е. он не будет вводить данные снова, первые платежные реквизиты должны использоваться по умолчанию), и платеж должен быть выполнен. Есть ли такая опция в службе Authorize.NET CIM?
Я использую Authorize.NET SDK от https://github.com/AuthorizeNet/sdk-dotnet Это предоставляет мне функции для CIM, но я не уверен, как использовать вышеупомянутый сценарий. Используя PayFlow Pro, мы можем успешно это сделать (Концепция ссылочных транзакций). Предоставляет ли CIM авторизация.NET эту функцию с помощью CIM.
Я могу авторизовать кредитную карту и на основании полученного ответа ("Код авторизации"). Теперь после этого из параметров ответа захвата я попытался сделать еще одну транзакцию. Но не удалось и получил сообщение об ошибке: Эта транзакция уже отправлена.
2 ответа
Этот ответ специфичен для authorize.net .Net SDK с использованием C#.
Вам следует локально сохранить ID профиля CIM (уникальный идентификатор для профиля клиента) и идентификатор (и) CIM paymentprofileID (уникальный идентификатор для каждой платежной карты, добавленной в профиль клиента). Таким образом, ваши записи клиента / пользователя должны иметь возможность хранить эти два целых числа.
Документация от authorize.net о том, как использовать CIM в их.Net SDK, в лучшем случае ужасна. Я пытался получить от них поддержку, и они постоянно говорили, что SDK не поддерживает CIM, что неверно, потому что все методы для его использования есть. Я приведу несколько строк кода, которые должны указать вам правильное направление для использования этого мощного инструмента.
Все предполагает, что вы пишете код в файле класса, который "использует AuthorizeNet", и что у вас есть последние библиотеки DLL от authorize.net.
Во-первых, класс AuthorizeNet имеет тип "Адрес". Здесь хранится информация об адресе для профиля 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 с помощью локально сохраненного CIM profileid:
cust = cg.GetCustomer(rdr["CIMprofileID"].ToString());
-или же-
Создать новый CIM profile
cust = cg.CreateCustomer(email, description);
После установки Cust вы можете получить ID профиля CIM из cust.ProfileID
Теперь, чтобы создать новый профиль оплаты CIM, используя cg.AddCreditCard()
, Для этого существует 3 перегрузки, #2 добавляет номер CVV, а #3 имеет возможность добавить объект Address для AVS. Если вы делаете string paymentprofileid = cg.AddCreditCard()
paymentprofileid становится номером, который вы должны хранить для этой кредитной карты, чтобы в будущем вы могли снова ее списать. Несмотря на то, что вы можете искать их, номер карты, который возвращает CIM, отформатирован как "XXXX1234", так что это может стать затруднительным для сопоставления позднее.
Когда у вас есть эти значения, вы можете использовать документированные методы для зарядки карты профиля CIM. Удачи!
То, что вы просите, это именно то , что делает CIM. CIM позволяет вам создать профиль оплаты клиента, который хранит данные кредитной карты клиента на сервере Authorize.Net и возвращает вам идентификатор для ссылки на него. Всякий раз, когда этот клиент желает произвести будущие платежи, вы просто указываете этот идентификатор для осуществления платежа. Клиент не должен предоставлять вам дополнительную информацию.
Полученное сообщение об ошибке указывает на то, что вы используете не CIM, а AIM (расширенный метод интеграции). Это отличается и не связано с CIM. Чтобы использовать CIM, вы должны использовать CIM API.