Поиск записей CIM Authorize.net - PullRequest
       20

Поиск записей CIM Authorize.net

1 голос
/ 23 ноября 2010

Кто-нибудь придумал элегантный способ поиска данных, хранящихся в Менеджере информации о клиентах (CIM) Authorize.net?

Судя по их XML-руководству, возможности поиска вообще отсутствуют. Это огромный недостаток.

Насколько я понимаю, смысл продажи CIM заключается в том, что продавцу не нужно хранить какую-либо информацию о клиентах. Они просто хранят уникальный идентификатор для каждого и извлекают данные по мере необходимости. Это может быть замечательно с точки зрения соответствия PCI, но ужасно с точки зрения гибкости.

Простой поиск типа «Показать все заказы из Техаса» внезапно становится очень сложным.

Как остальные решают эту проблему?

Ответы [ 3 ]

2 голосов
/ 28 ноября 2010

Краткий ответ: вы правы: API не поддерживает поиск записей CIM. И из-за того, как он структурирован, нет простого способа использовать только CIM для поиска всех записей.

Чтобы искать их описанным вами способом:

  1. Используйте getCustomerProfileIdsRequest, чтобы получить все сохраненные идентификаторы профиля клиента.
  2. Для каждого из CustomerProfileIds, возвращаемых этим запросом, используйте getCustomerProfileRequest, чтобы получить конкретную запись для этого клиента.
  3. Изучите каждую запись в то время, ищите критерий, который вы хотите, сохраняя соответствующие записи в некоторой другой структуре; класс, многомерный массив, таблица данных ADO, что угодно.

Да, это обременительно. Но это буквально единственный способ продолжить.

Ранее упомянутый API отчетности применяется только к транзакциям, а не к Менеджеру информации о клиентах.

Обратите внимание, что вы можете собирать данные, которые вам нужны, во время записи транзакции, и если вы не сделаете их личными, вы можете хранить их локально.

Например, вы можете выполнить запрос на все записи вашего профиля клиента CIM и сохранить состояние каждого клиента в локальной базе данных.

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

Я понимаю, что это, вероятно, не то, что вы хотели услышать, а их перерывы.

1 голос
/ 18 февраля 2011

Это, вероятно, будет ОЧЕНЬ медленным и неэффективным. Но вот один из методов. Запросите массив всех идентификаторов клиентов, а затем проверьте каждый из них на наличие нужного вам поля ... в моем случае мне нужна функция поиска по электронной почте в PHP:

$cimData = new AuthorizeNetCIM;
$profileIds = $cimData->getCustomerProfileIds();

$profileIds = $cimData->getCustomerProfileIds();
$array = $profileIds->xpath('ids');
$authnet_cid = null;

/*
this seems ridiculously inefficient... 
gotta be a better way to lookup a customer based on email
*/

    foreach ( $array[0]->numericString as $ids ) { // put all the id's into an array
       $response = $cimData->getCustomerProfile($ids); //search an individual id for a match
    //put the kettle on

        if ($response->xml->profile->email == $email) {
            $authnet_cid = $ids;
            $oldCustomerProfile = $response->xml->profile;
        }
    }

// теперь, когда чай готов, сливки, сахар, печенье, у вас может быть результат поиска!

0 голосов
/ 24 ноября 2010

Основная цель CIM состоит в том, чтобы выкинуть проблемы с соответствием PCI, позволяя хранить данные клиентов, включая кредитные карты, на их сервере, а затем получать к ним доступ, используя только уникальный идентификатор.Если вы хотите делать отчеты, вам нужно будет самостоятельно отслеживать такую ​​информацию.Поскольку при хранении адресов клиентов и т. Д. Проблем с соблюдением PCI нет, реально сделать это самостоятельно.По сути, это тот тип вещей, который необходимо очистить на этапе разработки проекта.

У них действительно есть новый отчетный API , который может предложить вам эту функциональность.Если этого не произойдет, это будет очень возможно, так как он будет предложен в ближайшем будущем, так как в настоящее время Authnet активно внедряет множество новых функций в свои API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...