2012-11-26 55 views
0

我正在使用JoomlaPHP,有一个组件(payplans)可用于Joomla。在那个组件中,他们配置了很多支付方式,包括Authorize.net。我们可以在Joomla后端选择支付方式,我们的客户使用Authorize.net,所以我们选择了Authorize.net。我没有改变代码中的任何东西,它在我们当地的m/c中工作。即使我已将实时帐户详细信息设置为非测试帐户,我也只会在实时服务器中收到错误消息。连接到AuthorizeNet的错误:仅在生产服务器

protected function _processNonRecurringRequest(PayplansPayment $payment, $data) 
{ 

    $transactionData = array(
     'amount' => $payment->getAmount(), 
     'card_num' => $data['x_card_num'], 
     'exp_date' => $data['x_exp_date'], 
     'first_name' => $data['x_first_name'], 
     'last_name' => $data['x_last_name'], 
     'address' => $data['x_address'], 
     'city' => $data['x_city'], 
     'state' => $data['x_state'], 
     'country' => $data['x_country'], 
     'zip' => $data['x_zip'], 
     'email' => $data['x_email'], 
     'card_code' => $data['x_card_code'], 
    'ship_to_first_name' => $data['x_ship_to_first_name'], 
    'ship_to_last_name' => $data['x_ship_to_last_name'], 
    'ship_to_address' => $data['x_ship_to_address'], 
    'ship_to_city' => $data['x_ship_to_city'], 
    'ship_to_state' => $data['x_ship_to_state'], 
    'ship_to_zip' => $data['x_ship_to_zip'], 
    'ship_to_country' => $data['x_ship_to_country'] 
     ); 
    // echo "Data \n"; 

    $transaction = new AuthorizeNetAIM(); 

    $transaction->setSandbox(true); 
    $transaction->setFields($transactionData); 
    // print_r($transaction); exit(); 
    // echo "response"; 
    $response = $transaction->authorizeAndCapture(); 
    // print_r($response);exit(); 
    $transactionArray = $response->toArray(); 
    // to identify it sis testing mode or not 
    $transactionArray['testmode'] = $this->getAppParam('sandbox', 0); 

    // save transaction notification and transaction id 
    if(isset($transactionArray['transaction_id'])){ 
     $payment->set('txn_id', $this->getId().'_'.$transactionArray['transaction_id']); 
    } 

    $payment->set('transaction',PayplansHelperParam::arrayToIni($transactionArray)); 

    $errors = array(); 
    if($response->approved){ 
     $payment->set('status',XiStatus::PAYMENT_COMPLETE); 
    }  
    else{ 
     $payment->set('status',XiStatus::PAYMENT_PENDING); 
     $errors['response_reason_code'] = $response->response_reason_code; 
     $errors['response_code']  = $response->response_code; 
     $errors['response_reason_text'] = $response->response_reason_text; 
    } 

    return $errors; 
} 

我在这一行有错误

$response = $transaction->authorizeAndCapture(); 

请帮助

回答

1

您有以下设置为True:

$transaction->setSandbox(true); 

当然,它应该被设置为false,活服务器环境。

相关问题