Для начала нам необходимо установить сам плагин в приложение
script/plugin install http://activemerchant.googlecode.com/svn/trunk/active_merchant
После установки можно приступать к его настройке, а именно получению тестового аккаунта на Authorize.net и настройкой поведения при различных environment в rails.В файле environment.rb необходимо дописать следующий код:
unless RAILS_ENV == 'production'
ActiveMerchant::Billing::Base.mode = :test
end
Который сообщит приложению что надо использовать тестовый интерфейс если приложение не в production режиме.Для успешной транзакции необходимо проделать следующие проверки:
- проверить верность номера карты
- Авторизовать карту на authorize.net
- Списать средства
Проверка верности карты
creditcard = ActiveMerchant::Billing::CreditCard.new(
:number => params[:cc_number],
:month => params[:cc_month],
:year => params[:cc_year],
:first_name => params[:first_name],
:last_name => params[:last_name],
:type => params[:cc_type],
:verification_value => params[:cvv]
)
if creditcard.valid?
#Данные карты верны
end
При неудачной проверке ошибки сходны с ошибками ActiveRecordАвторизация карты на Authorize.net
options = {
:address => {},
:billing_address => {
:name => params[:full_name],
:address1 => params[:address],
:city => params[:city],
:state => params[:state],
:country => params[:country],
:zip => params[:zip],
:phone => params[:phone]
}
}
gateway = AuthorizeNetGateway.new(
:login => 'APILOGINLOGINLOGIN', #API Login ID
:password => 'APIPASSWORD' #API Password
)
response = gateway.authorize(1000, creditcard, options)
unless response.success?
@message = response.message.to_s
render :action => 'error'
end
Следует помнить, что суммы списываются в центах.
Списание средств
gateway.capture(1000, response.authorization)
После чего с карты будет списано 10 долларов.