0

저는 Authorize.NET을 처음 사용했습니다. authorize.net에서 참조 트랜잭션을 사용할 수 있습니까? 예 : 사용자 A가 와서 처음으로 신용 카드 정보를 입력하면 그는 지불합니다. 두 번째 이후에 그가 지불을 할 때 이전 거래의 세부 정보가 사용되어야합니다 (즉, 그는 세부 사항을 다시 입력하지 않을 것이며, 첫 번째 지불 세부 사항이 기본적으로 사용되어야합니다). 그리고 지불이 완료되어야합니다. Authorize.NET CIM 서비스에서 이러한 옵션을 사용할 수 있습니까?Authorize.NET의 이전 트랜잭션을 기반으로 트랜잭션 수행 CIM

https://github.com/AuthorizeNet/sdk-dotnet 에서 Authorize.NET SDK를 사용하고 있습니다. 위의 시나리오를 사용하는 방법을 잘 모르겠지만 CIM 용 함수를 제공합니다. PayFlow Pro를 사용하여 성공적으로 수행 할 수 있습니다 (참조 거래 개념). authorize.NET의 CIM은 CIM을 사용하여이 기능을 제공합니까?

신용 카드를 승인 할 수 있으며 응답 ("AuthorizationCode")에 따라 캡처했습니다. 이제 캡처 응답 매개 변수에서 다른 트랜잭션을 수행하려고했습니다. 하지만 실패하고 오류 메시지가 나타납니다.이 거래는 이미 제출되었습니다.

답변

0

이 답변은 C#을 사용하여 authorize.net .Net SDK에만 해당됩니다.

CIM 프로필 ID (고객 프로필에 고유 식별자) 및 CIM paymentprofileID (고객 프로필에 추가 된 각 지불 카드의 고유 식별자)를 로컬에 저장해야합니다. 따라서 고객/사용자 레코드에는이 두 정수를 저장하는 방법이 있어야합니다.

.Net SDK에서 CIM을 사용하는 방법에 대한 authorize.net의 설명서는 최상의 상태입니다. 나는 그 (것)들에게서 지원을 얻는 것을 시도하고 SDK가 CIM을 지원하지 않는다는 것을 끊임없이 말했다. 그것은 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; 
     } 

은 하나 또는 여러 개의 주소 객체 (특정 배송, 결제, 신용 카드 등)를 구축하는 방법을 사용하고 당신이 상호 작용하는 경우에 대한 그들을 준비 : 여기가 주소 객체를 구축하도록 제작하는 간단한 방법입니다 게이트웨이.

봐 CIM 프로파일 여부를 확인하려면 : 이제

,

CustomerGateway cg = new CustomerGateway(loginInfo[0], loginInfo[1], ServiceMode.Live); 

지금이 시점에서 빈 Customer 객체

Customer cust; 

을 만들 CustomerGateway 객체를 생성, 당신은 두 가지 선택이 로컬에 저장된 CIMprofileid를 사용하여 존재합니다.

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

- 또는

새로운 CIMprofile 만들기

cust = cg.CreateCustomer(email, description); 

당신이 CUST 설정 한 후에는 cg.AddCreditCard()을 사용하여 새 CIM 지불 프로필을 만들려면 지금

cust.ProfileID에서 CIM profileID가를 얻을 수 있습니다 . 이것에 3 가지 오버로드가 있으며, # 2는 CVV 번호를 추가하고, # 3은 AVS에 대한 Address 개체를 삭제할 수 있습니다. string paymentprofileid = cg.AddCreditCard()을 수행하면 paymentprofileid가 해당 신용 카드에 저장해야하는 번호가되어 나중에 다시 청구 할 수 있습니다. CIM이 반환하는 카드 번호는 'XXXX1234'형식으로되어 있으므로 나중에 일치시키기가 어려울 수 있습니다.

일단 이러한 값이 있으면 문서화 된 방법을 사용하여 CIM 프로필 카드를 충전 할 수 있습니다. 행운을 빌어 요!

+0

멋진 설명을 주셔서 감사합니다 !! !! 나는 당신이 전달하려고하는 요점을 가지고 있습니다. – user3593455

2

정확히 CIM의 기능은 무엇입니까? CIM을 사용하면 Authorize.Net 서버에 고객의 신용 카드 세부 사항을 저장하고 참조 할 ID를 반환하는 고객 지불 프로파일을 작성할 수 있습니다. 해당 고객이 이후 지불을 원할 때마다 지불하기 위해 해당 ID를 참조하기 만하면됩니다. 고객은 추가 정보를 제공 할 필요가 없습니다.

받은 오류 메시지는 이 아니며이 아니라 CIM이지만 AIM (고급 통합 방법)을 사용하고 있음을 나타냅니다. 이것은 CIM과는 ​​다르며 관련이 없습니다. CIM을 사용하려면 CIM API를 사용해야합니다.

관련 문제