1

我是 Authorize.NET 的新手。在 authorize.net 中是否可以参考交易。例如:用户A第一次来并输入信用卡详细信息,他进行付款。现在第二次开始付款时,必须使用上一次交易的详细信息(即他不会再次输入详细信息,默认情况下必须使用第一次付款详细信息)并且必须完成付款。Authorize.NET CIM 服务中是否有任何此类选项可用。

我正在使用来自https://github.com/AuthorizeNet/sdk-dotnet的 Authorize.NET SDK 这为我提供了 CIM 的功能,但不确定如何使用上述场景。使用 PayFlow Pro 我们可以成功地做到这一点(参考交易概念),authorize.NET 的 CIM 是否使用 CIM 提供了此功能。

我能够授权信用卡并根据我捕获的响应(“AuthorizationCode”)。现在,从捕获响应参数中,我尝试进行另一项事务。但失败并收到错误消息:此交易已提交。

4

2 回答 2

2

您所要求的正是CIM 所做的。CIM 允许您创建一个客户付款配置文件,该配置文件将客户的信用卡详细信息存储在 Authorize.Net 服务器上,并返回一个 ID 以供您参考。每当该客户希望将来付款时,您只需参考该 ID 即可进行付款。客户无需向您提供任何额外信息。

您收到的错误消息表明您使用的不是CIM,而是 AIM(高级集成方法)。这与 CIM 不同且无关。要使用 CIM,您必须使用 CIM API。

于 2014-06-24T13:06:51.633 回答
0

此答案特定于 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 档案卡进行收费。祝你好运!

于 2014-06-25T05:29:32.620 回答