ご注意 翻訳者-ロボカッサとRailsの統合についての投稿はすでにありましたが 、そこで提供されている方法は多くの人には適さないと思います。Ruby on Railsで記述されたアプリケーションがあり、何らかの支払いシステム(たとえば、PayPal、Moneybookers、またはこの場合のロボカッサなど)を追加する予定がある場合、最初に考えるべき宝石はShopifyの
active_merchantです。
ActiveMerchantは、Shopifyが使用および支援する単純な抽象支払いライブラリです。
そのため、ロボカッサ経由で支払いをプロジェクトに追加する必要があるとき、サポートされている支払いシステムのリストを開きましたが、ロボカッサが含まれていなかったため少し失望しました。 少し後に、サポートを追加したフォークを見つけましたが、すでに廃止されているため、一部のテストで
はec801d3d4f8がクラッシュしました 。 だから私はこのコードを見て修正することを決め、すべてをゼロから書くことはしなかった。
実際、テストを修正するには、小さなタイプミス
07fb5494134 (
zbs-およそPer。 )を修正する必要がありました。 はい、簡単でした。 次に、テスト環境に異なるURLを追加し、以前のソリューションに本番環境を追加することにしました(Robokassaは、最初にサンドボックスでコードをテストし、その後すべてが機能する場合にのみライブモードで使用することをお勧めします)。 このコードは
c2ec85d53cbで確認できます。
次に、プロジェクトにactive_merchantを追加します。 gemfileに追加します。
gem 'activemerchant', :require => 'active_merchant'
ActionViewヘルパー(payment_service_forなど)を使用するには、ファイルactivemerchant.rbをinitializersフォルダーに配置する必要があります。
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
次のステップはルートです。 Robokassaは、トランザクションが完了するとアプリケーションにプッシュリクエストを行うため、routes.rbに次の行を追加する必要があります。
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
オブジェクトがある場合、フォームを送信すると、Robocassa Webサイトへのリダイレクトが発生し、そこで
@payment.amount
指定された金額を支払うことができます。