根据Authorize.NET CIM中的先前事务执行事务

时间:2014-06-24 12:27:30

标签: transactions payment-gateway payment authorize.net authorize.net-cim

我是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")我确实捕获了。从那之后,我从捕获响应参数中尝试做另一个事务。但失败并收到错误消息:此事务已提交。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

此答案特定于authorize.net .Net SDK,使用C#。

您应在本地存储CIM profileID(客户配置文件的唯一标识符)和CIM paymentprofileID(添加到客户配置文件的每张支付卡的唯一标识符)。因此,您的客户/用户记录应该有一种方法来存储这两个整数。

authorize.net提供的关于如何在.Net SDK中使用CIM的文档充其量是极其糟糕的。我试图得到他们的支持,并且他们不断地说SDK不支持CIM,这是不正确的,因为所有使用它的方法都在那里。我将提供几行代码,这些代码应指向正确的方向来使用这个强大的工具。

一切都假设您正在使用“使用AuthorizeNet”的类文件中编写代码,并且您拥有来自authorize.net的最新DLL。

首先,AuthorizeNet类具有“地址”类型。这将存储CIM配置文件或CIM支付配置文件的地址信息。这是我为构建Address对象而构建的一个简单方法:

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对象

Customer cust;

此时,您有两种选择:

通过使用本地存储的CIMprofileid来查看CIM配置文件是否存在:

cust = cg.GetCustomer(rdr["CIMprofileID"].ToString());

-OR -

创建新的CIMprofile

cust = cg.CreateCustomer(email, description);

一旦设置了cust,就可以从cust.ProfileID

获取CIM profileID

现在,使用cg.AddCreditCard()创建新的CIM付款资料。这有3个重载,#2添加CVV编号,#3能够删除AVS的Address对象。如果您执行string paymentprofileid = cg.AddCreditCard(),则paymentprofileid将成为您应为该信用卡存储的号码,以便您以后可以再次收费。虽然您可以查看这些内容,但CIM返回的卡号被格式化为“XXXX1234”,因此以后可能难以匹配。

获得这些值后,您可以使用记录的方法为CIM配置文件卡收费。祝你好运!