9

나는 CIM (Customer Information Manager) API를 사용하여 작업하고 있습니다. 내 테스트 케이스는 체크 아웃 중에 잘못된 주소를 제공하는 사용자를 중심으로 이루어집니다.Authorize.net CIM Duplicate Transaction Window

고객 프로파일을 사용자가 양식 제출 때마다 만들려고 할 것입니다 내 응용 프로그램 : 나는 당신이 위의 볼 수 x_duplicate_window을 통과 설정을 시도했습니다

$txrq = new AuthorizeNetCIM; 
$txrsp = $txrq->createCustomerProfileTransaction("AuthCapture", $transaction, 'x_duplicate_window=0'); 

"추가 옵션"어떤의에 SDK는 요청의 다음 부분입니다 : 기본 시간이 경과 할 때까지 아무리 x_duplicate_window에 사용하는 어떤 값을

<extraOptions><![CDATA[' . $this->_extraOptions . ']]></extraOptions> 

, authorize.net는 항상 오류를 반환합니다.

AuthorizeNet Error: Response Code: 3 Response Subcode: 1 Response Reason Code: 11 Response Reason Text: A duplicate transaction has been submitted. 

나는 우리의 (잠재적) 사용자 중 하나가 잘못된 주소를 제출하려고하면, 트랜잭션 타임 아웃이 발생하면서 오류의 3 이상의 추가 분 인사 도착 후 자신의 오류를 실현하고 우려하고있다.

Authorize.net SDK 코드에 오류가

답변

9

: <extraOptions/>

다음 않는 str_replace 호출 일치하지 않는 노드 CIM.php's method _setPostString()

if ($this->_extraOptions) { 
    $this->_xml->addChild("extraOptions"); 
    $this->_post_string = str_replace("<extraOptions></extraOptions>",'<extraOptions><![CDATA[' . $this->_extraOptions . ']]></extraOptions>', $this->_xml->asXML()); 
    $this->_extraOptions = false; 
} 

$this->_xml->addChild("extraOptions"); 결과에

~ 라인 360-364은

str_replace를 수정하면 x_duplicate_window 매개 변수가 잘 전달됩니다 :

if ($this->_extraOptions) { 
    $this->_xml->addChild("extraOptions"); 
    $this->_post_string = str_replace("<extraOptions/>",'<extraOptions><![CDATA[' . $this->_extraOptions . ']]></extraOptions>', $this->_xml->asXML()); 
    $this->_extraOptions = false; 
} 
+8

Authorize.net의 API는 끔찍한데, 나는 비참한 경험이 있습니다. – Acyra

+2

Stripe은 내가 사용한 적이있는 최고의 지불 처리 API였습니다. – Nick

관련 문제