Я использую ActiveMerchant с Authorize.net и уже настроил 2 модели Order and Transaction. (http://railscasts.com/episodes/145-integrating-active-merchant)
Я хотел бы получить сообщение об ошибке из транзакции, если произошла ошибка, а затем вывести во флэш-сообщение. Вот мой код:
#order_controller.rb
def create
@order = Order.new(params[:order])
respond_to do |format|
if @order.save
if @order.purchase
format.html { redirect_to(@order, :notice => 'Order was successfully created.') }
format.xml { render :xml => @order, :status => :created, :location => @order }
else
flash[:error] = @order.transactions.response
format.html { render :action => "new" }
end
else
format.html { render :action => "new" }
format.xml { render :xml => @order.errors, :status => :unprocessable_entity }
end
end
end
А вот моя модель транзакции:
#models/order_transaction.rb
class OrderTransaction < ActiveRecord::Base
belongs_to :order
serialize :params
def response=(response)
self.success = response.success?
self.authorization = response.authorization
self.message = response.message
self.params = response.params
rescue ActiveMerchant::ActiveMerchantError => e
self.success = false
self.authorization = nil
self.message = e.message
self.params = {}
end
end
Данные транзакции были сохранены в базе данных, как показано ниже:
#models/order.rb
class Order < ActiveRecord::Base
has_many :transactions, :class_name => "OrderTransaction"
attr_accessor :card_type, :card_number, :card_month, :card_year, :card_verification
def purchase
response = GATEWAY.purchase(charge_amount, credit_card, purchase_options)
transactions.create!(:action => "purchase", :amount => charge_amount, :response => response)
response.success?
end
...
end
Я хочу высветить это сообщение об ошибке транзакции при сбое транзакции. И что я должен сделать, чтобы получить эти ошибки, если у меня есть 2 транзакции для одного заказа .?
Любая помощь будет высоко ценится.
Спасибо!