【问题标题】:Searching Authorize.net CIM Records搜索 Authorize.net CIM 记录
【发布时间】:2011-05-14 02:47:24
【问题描述】:

有没有人想出一种优雅的方法来搜索存储在 Authorize.net 的客户信息管理器 (CIM) 上的数据?

根据他们的 XML 指南,似乎根本没有任何搜索功能。这是一个巨大的缺点。

据我了解,CIM 的卖点是商家不需要存储任何客户信息。他们只是为每个人存储一个唯一的标识符,并根据需要检索数据。从 PCI 合规性的角度来看,这可能很棒,但从灵活性的角度来看,这很糟糕。

像“显示来自德克萨斯的所有订单”这样的简单搜索突然变得非常复杂。

你们其他人是如何处理这个问题的?

【问题讨论】:

    标签: e-commerce authorize.net


    【解决方案1】:

    简短的回答是,您是对的:没有用于搜索 CIM 记录的 API 支持。而且由于其结构方式,单独使用 CIM 搜索所有记录并不容易。

    按照您描述的方式搜索它们:

    1. 使用 getCustomerProfileIdsRequest 获取您存储的所有客户资料 ID。
    2. 对于该请求返回的每个 CustomerProfileId,使用 getCustomerProfileRequest 获取该客户端的特定记录。
    3. 检查当时的每条记录,寻找您想要的标准,将相关记录存储在其他结构中;一个类、一个多维数组、一个 ADO DataTable 等等。

    是的,这很繁重。但这实际上是唯一的方法。

    前面提到的报告 API 仅适用于交易,不适用于客户信息管理器。

    请注意,您可以在记录交易时收集您想要的数据类型,只要您不将其设为个人身份,您就可以将其存储在本地。

    例如,您可以对所有 CIM 客户资料记录运行请求,并将每个客户的状态存储在本地数据库中。

    如果您存储的只是状态,那么您可以使用这些记录,因为没有任何东西将状态与特定的客户记录联系起来。展望未来,您可以在创建/更新客户资料记录的同时编写更新本地状态记录存储的逻辑。

    我知道这可能不是你想听到的,但它们是休息时间。

    【讨论】:

      【解决方案2】:

      这可能非常缓慢且效率低下。但这里有一种方法。请求所有客户 ID 的数组,然后检查每个客户 ID 的字段...在我的情况下,我想要 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;
              }
          }
      

      // 现在茶已经准备好了,奶油、糖、饼干,你可能有你的搜索结果了!

      【讨论】:

      • 是的,我想到了 Samuel 的这种方法。这很丑陋,但它会起作用。不过太麻烦和时间了。希望 Authorize.net 将在不久的将来为我们提供这个。同时,我别无选择,只能在本地保存一些客户信息(姓名、邮编等)
      • 效果很好。我必须修复一堆关联错误的数据,并且需要查询所有 CIM 配置文件。我只是创建了几个 db 表,运行 CIM 配置文件并获得了我需要的数据,然后修复了不正确的数据并删除了本地表。当然,不需要删除任何表,因为从 CIM 中获取的任何内容都不会影响 PCI 合规性。
      【解决方案3】:

      CIM 的主要目的是让您将客户数据(包括信用卡)存储在他们的服务器上,然后仅使用唯一 ID 访问这些数据,从而解决 PCI 合规性问题。如果您想进行报告,您需要自己跟踪此类信息。由于存储客户地址等不存在 PCI 合规性问题,因此自己执行此操作是现实的。基本上,这是在项目的设计阶段需要清除的那种东西。

      他们确实有一个新的reporting API 可以为您提供此功能。如果没有,它很有可能会在不久的将来提供,因为 Authnet 目前正在积极为其 API 推出许多新功能。

      【讨论】:

        猜你喜欢
        • 2013-04-08
        • 1970-01-01
        • 2011-10-01
        • 2019-08-02
        • 1970-01-01
        • 2012-11-29
        • 2011-10-21
        • 2012-07-20
        • 2016-04-17
        相关资源
        最近更新 更多