2010-11-22 14 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コンプライアンスの問題はないので、これを自分で行うのは現実的です。基本的に、これはプロジェクトの設計段階で流出する必要のあるものです。

この機能を提供する新しいreporting APIがあります。 Authnetが現在多くの新機能を自社のAPIに積極的に導入しているので、それは可能ではないが、近い将来提供される可能性がある。

1

これは非常に遅く、非効率的である可能性があります。しかし、ここに一つの方法があります。私の場合、私はPHPで検索・バイ・メール機能を望んでいた...すべての顧客IDの配列を要求し、その後、あなたがしたいフィールドの各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; 
     } 
    } 

//紅茶ことクリーム、砂糖、ビスケット、あなたの検索結果があるかもしれません!

+0

ええ、私はこのアプローチをサミュエルと考えました。それは醜いですが、うまくいくでしょう。あまりにも多くのトラブルと時間。うまくいけば、Authorize.netはちょうど私たちのためにこれを近い将来提供します。その間、私はローカルで顧客情報を保存する以外に選択肢がありません(名前、zipなど) – Axeva

+0

これはうまくいきます。私は誤って関連付けられたデータを修正しなければならず、すべてのCIMプロファイルを照会する必要がありました。私は単にいくつかのdbテーブルを作成し、CIMプロファイルを実行し、必要なデータを取得してから間違ったデータを修正し、ローカルテーブルを削除しました。あなたがローカルに保存するFROM CIMから得ることができるものは、PCIコンプライアンスを無効にするものなので、削除する必要はありません。 – Ricky

関連する問題