
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдПрдХ рджреЛрд╕реНрдд рдиреЗ рдкреВрдЫрд╛ рдХрд┐ рдХреНрдпрд╛ рдореЗрд░реЗ рдкрд╛рд╕ рд░реЙрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд░реЛрдмреЛрдХреИрд╕рд╛ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЛрдб рдерд╛, рдФрд░ рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдерд╛ред рдореИрдВрдиреЗ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдФрд░ рд╕реЛрдЪрд╛ рдХрд┐ рд╢рд╛рдпрдж рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЗрд╕ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕реАрд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдпрд╣рд╛рдБ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИред
рдирд┐рдпрдВрддреНрд░рдХ
рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рд╣рдореЗрдВ 4 рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рднреБрдЧрддрд╛рди - рдпрд╣ рд╡рд╣ рдкреГрд╖реНрда рд╣реИ рдЬрд╣рд╛рдВ "рднреБрдЧрддрд╛рди" рдмрдЯрди рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛
- рдкрд░рд┐рдгрд╛рдо рдПрдХ рдХреЙрд▓рдмреИрдХ рд╣реИ рдЬреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдбреЗрд╕реНрдХ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╛ рддреЛ "рдУрдХреЗ" + "рдЗрдирд╡рд┐рдж" рд╡рд╛рдкрд╕ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛, рдпрджрд┐ рд▓реЗрдирджреЗрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рдереЗ, рддреЛ "рдлреЗрд▓" рд▓реМрдЯреЗрдВред
- рд╕рдлрд▓рддрд╛ - рд╡рд╣ рдкреЗрдЬ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдбреЗрд╕реНрдХ рд╕рдлрд▓ рднреБрдЧрддрд╛рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
- рд╡рд┐рдлрд▓ - рд╡рд╣ рдкреГрд╖реНрда рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЯрд┐рдХрдЯ рдХрд╛рд░реНрдпрд╛рд▓рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдХреБрдЫ рдЧрд▓рдд рд╣реИред
class PaymentsController < ApplicationController def pay
рджреГрд╢реНрдп
рднреБрдЧрддрд╛рди рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо:
<form action="<%= @pay_desc['mrh_url'] %>" method="post"> <input type=hidden name=MrchLogin value="<%= @pay_desc['mrh_login'] %>"> <input type=hidden name=OutSum value="<%= @pay_desc['out_summ'] %>"> <input type=hidden name=InvId value="<%= @pay_desc['inv_id'] %>"> <input type=hidden name=Desc value="<%= @pay_desc['inv_desc'] %>"> <input type=hidden name=SignatureValue value="<%= @pay_desc['crc'] %>"> <input type=hidden name=Shp_item value="<%= @pay_desc['shp_item'] %>"> <input type=hidden name=IncCurrLabel value="<%= @pay_desc['in_curr'] %>"> <input type=hidden name=Culture value="<%= @pay_desc['culture'] %>"> <input type=submit value=''> </form>
рдпрд╣рд╛рдВ рдпрд╣ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдореИрдВ рд░реВрдкреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрд▓ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рднреА рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рдХрдо рд╕рдордЭ рд╣реИ, рдФрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рддрдХ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд░реЗрд▓ рдЕрднреА рднреА CSRF рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЫрд┐рдкреЗ рд╣реБрдП рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреИрд╢ рдбреЗрд╕реНрдХ рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред
рдХреИрдк, рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рджреГрд╢реНрдп рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛:
<%= @result %>
рд╕рдлрд▓рддрд╛ рдФрд░ рдЕрд╕рдлрд▓рддрд╛ рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЖрджрд░реНрд╢
рдЗрд╕ рдореЙрдбрд▓ рдореЗрдВ, рдореИрдВ рдореЙрдиреНрдбреЙрдпрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдУрдЖрд░рдПрдо рдХреЗ рддрд╣рдд рд░реАрдореЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕ рдореЙрдбрд▓ рдореЗрдВ рд░реЛрдмреЛрдХреИрд╢ рдбреЗрд╕реНрдХ рдХреЗ рдПрдХреНрд╕рдПрдордПрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВред рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп, рдореБрдЭреЗ рд░реЗрд▓ рдХреЗ рддрд╣рдд рдкрд░реНрдпрд╛рдкреНрдд рдПрд╕рдУрдПрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдирд╣реАрдВ рдорд┐рд▓реЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реНрдХреЛрд░ рдХрд┐рдпрд╛ рдФрд░ рдиреЛрдЦреЗрд░реА рдкрд░ рдмрд╕ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
require 'open-uri' require 'digest/md5' class Payment include Mongoid::Document include Mongoid::Timestamps field :status, :type => Integer field :invid, :type => Integer field :price, :type => Float field :desc
рд░реВрдЯрд░
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рдХреИрд╢ рдбреЗрд╕реНрдХ рдХреЛ рдмрд╛рдж рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛:
match 'payment/result' => "payments#result" match 'payment/success' => "payments#success" match 'payment/fail' => "payments#fail" match 'payment' => "payments#pay"
рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ
рд╕рднреА рдкреНрд░рд╕реНрддреБрдд рдХреЛрдб рдПрдХ рд╣рд┐рд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ