此答案特定于 authorize.net .Net SDK,使用 C#。
您应该在本地存储 CIM profileID(客户资料的唯一标识符)和 CIM paymentprofileID(s)(添加到客户资料中的每张支付卡的唯一标识符)。所以你的客户/用户记录应该有办法存储这两个整数。
authorize.net 关于如何在他们的 .Net SDK 中使用 CIM 的文档充其量是糟糕透顶。我试图从他们那里获得支持,他们一直说 SDK 不支持 CIM,这不是真的,因为使用它的所有方法都在那里。我将提供几行代码,它们应该为您指明使用这个强大工具的正确方向。
一切都假设您正在“使用 AuthorizeNet”的类文件中编写代码,并且您拥有来自 authorize.net 的最新 DLL。
首先,AuthorizeNet 类有一个“地址”类型。这存储了 CIM 配置文件或 CIM 付款配置文件的地址信息。这是我为构建地址对象而构建的一个简单方法:
private static Address getAddressObject(string fname, string lname, string address, string city, string state, string zip, string phone)
{
var a = new Address();
a.First = fname;
a.Last = lname;
a.Street = address;
a.City = city;
a.State = state;
a.Zip = zip;
a.Phone = phone;
return a;
}
使用该方法构建一个或多个地址对象(运输、账单、信用卡特定等),并在您与网关交互时准备好它们。
现在,创建一个 CustomerGateway 对象
CustomerGateway cg = new CustomerGateway(loginInfo[0], loginInfo[1], ServiceMode.Live);
现在创建一个空的客户对象
Customer cust;
此时,您有两个选择:
使用本地存储的 CIMprofileid 查看 CIM 配置文件是否存在:
cust = cg.GetCustomer(rdr["CIMprofileID"].ToString());
-或者-
创建新的 CIM 配置文件
cust = cg.CreateCustomer(email, description);
设置 cust 后,您可以从以下位置获取 CIM profileIDcust.ProfileID
现在,使用cg.AddCreditCard()
. 对此有 3 个重载,#2 添加 CVV 编号,#3 能够放入 AVS 的 Address 对象。如果您这样做string paymentprofileid = cg.AddCreditCard()
,paymentprofileid 将成为您应该为该信用卡存储的号码,以便您以后可以再次收费。虽然您可以查找这些,但 CIM 返回的卡号格式为“XXXX1234”,因此以后可能很难匹配。
获得这些值后,您可以使用记录在案的方法对 CIM 档案卡进行收费。祝你好运!