2010-11-22 3 views
1

누구나 Authorize.net의 Customer Information Manager (CIM)에 저장된 데이터를 검색하는 우아한 방법을 생각해 냈습니까?Authorize.net CIM 레코드 검색

XML 가이드에 따르면 검색 기능이 전혀없는 것 같습니다. 그것은 엄청난 일입니다.

제가 알고 있듯이 CIM의 판매 시점은 판매자가 고객 정보를 저장할 필요가 없다는 것입니다. 그들은 각각에 대해 유일한 식별자를 저장하고 필요에 따라 데이터를 검색합니다. 이것은 PCI 컴플라이언스의 관점에서 보면 좋지만 유연성 측면에서는 끔찍합니다.

"텍사스의 모든 주문보기"와 같은 간단한 검색은 갑자기 매우 복잡해집니다.

이 문제를 어떻게 처리합니까?

답변

2

간단한 답은 정확합니다. CIM 레코드 검색을위한 API 지원이 없습니다. 또한 구조화 된 방식으로 인해 모든 레코드를 검색하는 데 CIM 만 사용하는 쉬운 방법은 없습니다. 방식으로 그들을 검색하려면

당신은 설명 :

  1. 사용 getCustomerProfileIdsRequest 사용자가 저장 한 모든 고객 프로파일 ID를 얻을 수 있습니다.
  2. 해당 요청에 의해 리턴 된 각 CustomerProfileIds에 대해 getCustomerProfileRequest를 사용하여 해당 클라이언트에 대한 특정 레코드를 확보하십시오.
  3. 그 때 각 레코드를 검사하여 원하는 기준을 찾고 다른 레코드에 해당 레코드를 저장하십시오. 클래스, 다차원 배열, ADO DataTable 등이 있습니다.

예, 번거 롭습니다. 그러나 말 그대로 문자 그대로 진행하는 유일한 방법입니다.

위에서 언급 한보고 API는 고객 정보 관리자가 아닌 트랜잭션에만 적용됩니다.

트랜잭션 기록시 원하는 데이터 종류를 수집 할 수 있으며 개인 식별이 가능하지 않은 한 로컬로 저장할 수 있습니다.

예를 들어 모든 CIM 고객 프로필 레코드에 대한 요청을 실행하고 각 고객이있는 상태를 로컬 데이터베이스에 저장할 수 있습니다.

모든 상점이 주인 경우 특정 고객 레코드에 상태를 연결시키지 않으므로 해당 레코드로 작업 할 수 있습니다. 앞으로는 고객 프로필 레코드가 생성/업데이트되는 동시에 로컬 상태 레코드 저장소를 업데이트하는 논리를 작성할 수 있습니다.

나는 이것이 아마도 당신이 듣고 싶지 않은 것이지만 깨달음이 있다는 것을 알고 있습니다.

0

CIM의 주요 목적은 신용 카드를 비롯한 고객 데이터를 서버에 저장 한 다음 고유 한 ID 만 사용하여 PCI 준수 문제를 해결하는 것입니다. 보고를 원하면 해당 정보를 직접 추적해야합니다. 고객 주소 저장과 같은 PCI 컴플라이언스 문제가 없으므로 직접 해결하는 것이 현실적입니다. 기본적으로 이것은 프로젝트의 설계 단계에서 플러시 (flush out)해야 할 일들입니다.

새로운 기능이 제공되는 reporting API이 있습니다. Authnet이 현재 많은 새로운 기능을 API에 적극적으로 적용하고 있기 때문에 가능한 것은 아닙니다.

1

매우 느리고 비효율적 일 수 있습니다. 그러나 여기에는 하나의 방법이 있습니다.

$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; 
     } 
    } 

// 이제 차이 : 나는 PHP에서 검색 - 이메일 - 메일 기능을 원하는 내 경우 ... 모든 고객 ID의 배열을 요청하고 원하는 필드의 각각을 확인 크림, 설탕, 비스킷, 당신은 당신의 검색 결과를 가질 수 있습니다!

+0

그래, 나는이 접근 방식을 사무엘이라고 생각했다. 못 생겼지 만 효과가있다. 너무 많은 문제와 시간. 희망적으로 Authorize.net은 가까운 미래에 우리에게 이것을 제공 할 것입니다. 그 동안, 나는 선택의 여지가 있지만 일부 고객 정보를 로컬로 저장 (이름, 우편 번호 등) – Axeva

+0

이것은 잘 작동합니다. 여러 가지 잘못된 데이터를 수정해야하고 모든 CIM 프로필을 쿼리해야했습니다. 간단히 몇 가지 db 테이블을 만들고 CIM 프로필을 실행하여 필요한 데이터를 얻은 다음 잘못된 데이터를 수정하고 로컬 테이블을 삭제했습니다. 물론, CIM에서 FROM으로 가져올 수있는 것이 없기 때문에 로컬로 저장하는 것이 PCI 준수를 무효화 할 수 있으므로 테이블을 삭제할 필요가 없습니다. – Ricky