C# 使用Authorize.Net中的客户id获取customerProfileId

C# 使用Authorize.Net中的客户id获取customerProfileId,c#,authorize.net,C#,Authorize.net,我需要从Authorize.Net检索customerProfileId 如何使用merchantCustomerId或email获取CustomerProfile ID,这是在Authorization.Net中为我的asp.Net mvc(C#)应用程序创建客户配置文件时使用的。除了CustomerProfile ID之外,不能直接查询API。最好使用getCustomerProfileIdsRequest检索您创建的所有配置文件,然后调用getCustomerProfileRequest获

我需要从Authorize.Net检索customerProfileId


如何使用
merchantCustomerId
email
获取
CustomerProfile ID
,这是在
Authorization.Net
中为我的asp.Net mvc(C#)应用程序创建客户配置文件时使用的。

除了CustomerProfile ID之外,不能直接查询API。最好使用
getCustomerProfileIdsRequest
检索您创建的所有配置文件,然后调用
getCustomerProfileRequest
获取配置文件信息。然后,您可以检查它是否与您档案中的电子邮件地址或merchantCustomerID匹配。如果您有很多配置文件,这可能需要一段时间,但是代码中的一个简单循环应该会使这项工作变得容易。

如果您尝试使用已在使用的商户客户ID创建新的客户配置文件,Authorize.NET将返回错误E00039-“ID为{0}的重复记录已经存在。”其中{0}是客户配置文件ID

因此,例如,如果您试图编写逻辑代码,仅在商户ID不存在的情况下创建新的客户配置文件,我发现最简单的方法是继续尝试创建,然后查找:

((ANetApiResponse)response).messages.resultCode == messageTypeEnum.Error
如果是,则可以通过对以下对象运行正则表达式来找到您的客户配置文件ID:

ErrorResponse.messages.message[0].text

您可以尝试从错误消息中解析出客户配置文件ID。这是我找到的唯一一种真正可以伸缩的方法。您不可能在每次尝试创建新记录时检索10万条客户记录并对其进行迭代以查找匹配项,但如果您的商户客户ID已在使用,您可以指望Authorize.NET business logic会抛出错误。当然,他们可以随时更改错误消息的格式,所以YMMV。

注意:我正是这样做的,它工作得很好,但请确保对该文本进行不区分大小写的匹配,因为我已经看到“ID”和“ID”都会导致区分大小写的匹配错误。这是目前处理重复客户配置文件的最佳选择。只需一行代码,就可以从错误消息字符串var originalProfileId=Regex.Match(response.messages.message[0].text,@“\d+”).Value;这种解决方案是有风险的,因为我们完全依赖于消息格式。