9

私はAuthorize.netのCustomer Information Manager API(CIM)を使用しています。私のテストケースは、チェックアウト中に間違ったアドレスを与えるユーザの周りに集中しています。Authorize.net CIM Duplicate Transaction Window

私のアプリケーションは、顧客プロファイルにユーザーがフォームを送信するたびに作成しようとします:

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

あなたが上記を参照できるように私はx_duplicate_windowを渡して設定しようとした「エクストラオプション」、中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以上の追加分で迎えますその後、彼または彼女の誤差を実現し、そして心配します。

答えて

9

Authorize.net SDKコードにエラーがあります:<extraOptions/>

〜ライン360-364は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");結果に

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

私は今まで使ったことのある最高の支払い処理APIとしてStripeを使っています。 – Nick