Активный продавец и Authorize.net возвращают сбои в производстве
У меня есть приложение, которое имеет некоторые основные действия в области электронной коммерции. Я попробовал это с тестовой учетной записью authorize.net, и она отлично работает. Я вошел в API для производственного режима и продолжаю перенаправляться на экран сбоя, когда пытаюсь что-либо купить. Я не получаю никаких ошибок, ничего в логах на героку, и даже не знаю с чего начать отладку. Я успешно подключаюсь к Authorize.net, транзакции успешны в режиме разработки - я основал его на эпизоде Райана Бэйта 145 с RailsCast ( http://railscasts.com/episodes/145-integrating-active-merchant), но здесь некоторые основные моменты моего кода (так как я тестирую ti, я заставляю его делать транзакции за 1 цент несмотря на то, что я заказываю)
в окружающей среде / production.rb
config.after_initialize do
ActiveMerchant::Billing::Base.mode = :production
::GATEWAY = ActiveMerchant::Billing::AuthorizeNetGateway.new(
:login => "scrubbed",
:password => "scrubbed",
:test => false
)
end
orders_controller.rb
def create
@order = Order.new(params[:order])
@order.cart = current_cart
if @order.save
if @order.purchase
@order.state = 'paid'
@order.save
render :action => "success"
end
else
render :action => "failure"
end
else
redirect_to home_page_path, notice: "The order failed to save"
end
end
def purchase
response = GATEWAY.purchase(1, credit_card, purchase_options)
transactions.create!(:action => "purchase", :amount => price_in_cents, :response => response)
#cart.update_attribute(:purchased_at, Time.now) if response.success?
response.success?
end
order.rb
def purchase
response = GATEWAY.purchase(1, credit_card, purchase_options)
transactions.create!(:action => "purchase", :amount => price_in_cents, :response => response)
#cart.update_attribute(:purchased_at, Time.now) if response.success?
response.success?
end
private
def purchase_options
{
:ip => ip_address,
:billing_address => {
:first_name => first_name,
:last_name => last_name,
:address1 => address_line_1,
:address2 => address_line_2,
:city => city,
:state => billing_state,
:country => "US",
:zip => zip_code,
:phone => phone_number,
:company => company
},
:shipping_address => {
:first_name => sfirst_name,
:last_name => slast_name,
:address1 => saddress_line_1,
:address2 => saddress_line_2,
:city => scity,
:state => sbilling_state,
:country => "US",
:zip => szip_code,
:phone => sphone_number,
:company => scompany
}
}
end
def validate_card
unless credit_card.valid?
credit_card.errors.full_messages.each do |message|
errors.add :base, message
end
end
end
def credit_card
@credit_card ||= ActiveMerchant::Billing::CreditCard.new(
:brand => card_type,
:number => card_number,
:verification_value => card_verification,
:month => card_expires_on.month,
:year => card_expires_on.year,
:first_name => first_name,
:last_name => last_name
)
end
2 ответа
Я лично не имел дело с authorize.net, но я использовал подобный веб-сервис, который также требовал соответствия PCI. В моем случае это означало, что мне нужен действительный сертификат SSL для транзакций для работы в производстве. На самом деле, если я правильно помню, транзакция проваливалась очень похожим образом, и не было очевидной причины.
Похоже, что authorize.net требует некоторого типа защиты в зависимости от того, какой API вы используете. http://developer.authorize.net/integration/
Мне просто нужно спросить, чтобы быть уверенным: вы уже сделали все, чтобы настроить свой торговый счет на Authorize.net и в вашем Банке для использования в производственных целях, и вы согласовали с ними, чтобы начать переводить средства на свой банковский счет, когда деньги начнутся? в ближайшие?
Если это так, проверьте страницу документации для разработчиков на предмет различий между тестовыми и производственными транзакциями.
http://developer.authorize.net/guides/AIM/5_TestTrans.html
Транзакции, которые работают в тестовом режиме, должны работать в рабочем режиме, когда все правильно настроено на стороне шлюза. Я бы связался с authorize.net, чтобы сообщить технические или административные данные, которые необходимо будет уточнить для вашей учетной записи для обработки реальных транзакций.