рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджрдХ - рд░реЛрдмреЛрдХреИрд╕рд╛ рдФрд░ рд░реЗрд▓реНрд╕ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреЛрд╕реНрдЯ рдерд╛ , рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рдХрдИ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛрдЧреАредрдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд░реВрдмреА рдСрди рд░реЗрд▓реНрд╕ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдЖрд╡реЗрджрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рднреБрдЧрддрд╛рди рдкреНрд░рдгрд╛рд▓реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреЗрдкрд╛рд▓, рдордиреАрдмреБрдХрд░реНрд╕ рдпрд╛ рд░реЛрдмреЛрдХреИрд╕рд╛, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЬрд┐рд╕ рдкрд╣рд▓реЗ рд░рддреНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рд╣реИ Shopify's
active_merchant ред
ActiveMerchant рдПрдХ рд╕рд░рд▓ рдЕрдореВрд░реНрдд рднреБрдЧрддрд╛рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ Shopify рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЬрдм рдореБрдЭреЗ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд░реЛрдмреЛрдХреИрд╕рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреБрдЧрддрд╛рди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реБрдИ, рддреЛ рдореИрдВрдиреЗ рд╕рдорд░реНрдерд┐рдд рднреБрдЧрддрд╛рди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдЦреЛрд▓реА рдФрд░ рдереЛрдбрд╝рд╛ рдирд┐рд░рд╛рд╢ рд╣реБрдЖ рдХреНрдпреЛрдВрдХрд┐ рд░реЛрдмреЛрдХрд╕рд╛ рдХреЛ рд╡рд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ рдХрд╛рдВрдЯрд╛ рдорд┐рд▓рд╛ рдЬрд┐рд╕рдиреЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрджрд╛рд╡рдирдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ
рдиреЗ ec801d3d4f8 рдХреЛ рдХреНрд░реИрд╢ рдХрд░ рджрд┐рдпрд╛ ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдмрд╕ рдПрдХ рдЫреЛрдЯрд╛ рдЯрд╛рдЗрдкреЛ рдареАрдХ рдХрд░рдирд╛ рдерд╛
07fb5494134 (
z - рд▓рдЧрднрдЧ - рдкреНрд░рддрд┐ред )ред рд╣рд╛рдБ, рдпрд╣ рдЖрд╕рд╛рди рдерд╛ред рдлрд┐рд░ рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдпреВрдЖрд░рдПрд▓ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рд░реЛрдмреЛрдХрд╕рд╛ рдиреЗ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА, рдЬрдм рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд▓рд╛рдЗрд╡ рдореЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)ред рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ -
c2ec85d53cbрдЕрдм рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдХреНрд░рд┐рдп_рдореЗрд░рдХрдВрдЯ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЗрд╕реЗ рдордгрд┐рдн рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
gem 'activemerchant', :require => 'active_merchant'
ActionView рд╣реЗрд▓реНрдкрд░реНрд╕ (рдЬреИрд╕реЗ рдХрд┐ payment_service_for) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢реБрд░реБрдЖрддреА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ activemerchant.rb рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
require 'active_merchant' require 'active_merchant/billing/integrations/action_view_helper' ActionView::Base.send(:include, ActiveMerchant::Billing::Integrations::ActionViewHelper)
рдЗрдирд┐рд▓рд╛рдЗрдЬрд╝рд░ рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
ActiveMerchant::Billing::Base.integration_mode = :production
рдЕрдЧрд▓рд╛ рдХрджрдо рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рд╣реИред рд▓реЗрди-рджреЗрди рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ рд░реЛрдмреЛрдХреИрд╕рд╛ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдорд╛рд░реНрдЧреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
scope 'robokassa' do match 'paid' => 'robokassa#paid', :as => :robokassa_paid
рдЕрдм рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдПрдБ:
class RobokassaController < ApplicationController include ActiveMerchant::Billing::Integrations skip_before_filter :verify_authenticity_token
рдЕрдВрдд рдореЗрдВ, рдлреЙрд░реНрдо рдХреЛ рдкреЗрдЬ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
<%= payment_service_for @payment.id, AppConfig.robokassa_login, :amount => @payment.amount, :service => :robokassa, :secret => AppConfig.robokassa_secret do |s| %> <%= submit_tag "Submit" %> <% end %>
рд╡рд╣ рд╕рдм рд╣реИ! рдЕрдм рдпрджрд┐ рдХреЛрдИ
@payment
рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рддреЛ рдлреЙрд░реНрдо рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд░реЛрдмреЛрдХреИрд╕рд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдЖрдПрдЧрд╛, рдЬрд╣рд╛рдВ
@payment.amount
рднреБрдЧрддрд╛рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░рд╛рд╢рд┐ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред