实际上,如果必须的话,这是可能的,但是如果可能的话,我仍然建议存储它,但是这种替代方法可能会有所帮助。
Authorize.Net 通过复合键(Merchant Customer Id、Email 和 Description)定义一个唯一的客户资料,因此您必须确保这是唯一的。如果您尝试再次创建相同的复合键,则 CreateCustomerProfile(..) API 方法将强制执行唯一性并返回错误,因为它应该这样做。但是,此响应中的消息将包含冲突的客户配置文件 id,并且由于您的复合键是唯一的,并且 Authorize.Net 强制此复合键的唯一性,因此这必须是您的客户的 Authorize.Net 客户配置文件 id。
C# 中的代码示例
private long customerProfileId = 0;
var customerProfile = new AuthorizeNet.CustomerProfileType()
{
merchantCustomerId = "123456789",
email = "user@domain.com",
description = "John Smith",
};
var cpResponse = authorize.CreateCustomerProfile(merchantAuthentication, customerProfile, ValidationModeEnum.none);
if (cpResponse.resultCode == MessageTypeEnum.Ok)
{
customerProfileId = cpResponse.customerProfileId;
}
else
{
var regex = new Regex("^A duplicate record with ID (?<profileId>[0-9]+) already exists.$", RegexOptions.ExplicitCapture);
Match match = regex.Match(cpResponse.messages[0].text);
if (match.Success)
customerProfileId = long.Parse(match.Groups["profileId"].Value);
else
//Raise error.
}