2016-04-10 17 views
0

私は現金支払いをサイトで処理するためにアクティブマーチャントの宝石を使用しています。しかし、今私は毎月これらの支払いを繰り返したいと思っています。アクティブな商人を使用する方法はありますか?アクティブマーチャントのペイパル定期支払い

subscription_controller.rb

class SubscriptionsController < ApplicationController 
    def new 
    @home_page = true 
    @white = true 
    @subscription = Subscription.new(token: params[:token]) 
    if !logged_in? 
     redirect_to signup_url 
    end 
    end 

    def create 
    @subscription = Subscription.new(subscription_params) 
    @subscription.remote_ip = request.remote_ip 
    @subscription.user_id = current_user.id 
    if @subscription.save 
     if @subscription.purchase 
     @subscription.send_thank_you_email 
     redirect_to thankyou_path 
     else 
     raise ActiveRecord::Rollback 
     flash[:notice] = "It seems something went wrong with the paypal transaction. Please check that your credit card is valid and has credit in it and try again." 
     redirect_to :back 
     end 
    else 
     flash[:notice] = "Something went wrong with marking your purchase as complete. Please contact support to check it out." 
     redirect_to :back 
    end 
    end 

    def purchase 
    response = GATEWAY.setup_purchase(999, 
     ip: request.remote_ip, 
     return_url: new_subscription_url, 
     cancel_return_url: root_url, 
     currency: "USD", 
     items: [{name: "Order", description: "Recurring payment for ******", quantity: "1", amount: 999}] 
    ) 
    redirect_to GATEWAY.redirect_url_for(response.token) 
    end 

    def thank_you 
    @home_page = true 
    @white = true 
    end 

    private 

    def subscription_params 
     params.require(:subscription).permit(:token) 
    end 


end 

subscription.rbモデル

def purchase 
    response = GATEWAY.purchase(999, express_purchase_options) 
    response.success? 
    end 

    def token=(token) 
    self[:token] = token 
    if new_record? && !token.blank? 
     # you can dump details var if you need more info from buyer 
     details = GATEWAY.details_for(token) 
     puts details.params["PayerInfo"]["PayerName"].inspect 
     self.payer_id = details.payer_id 
     self.first_name = details.params["PayerInfo"]["PayerName"]["FirstName"] 
     self.last_name = details.params["PayerInfo"]["PayerName"]["LastName"] 
    end 
    end 

    # send thank you email 
    def send_thank_you_email 
    UserMailer.thank_you(self).deliver_now 
    end 

    private 

    def express_purchase_options 
    { 
     :ip => remote_ip, 
     :token => token, 
     :payer_id => payer_id 
    } 
    end 

production.rb環境

config.after_initialize do 
    ActiveMerchant::Billing::Base.mode = :production 
    ::GATEWAY = ActiveMerchant::Billing::PaypalExpressGateway.new(
     :login => ENV['PAYPAL_LOGIN'], 
     :password => ENV['PAYPAL_PASSWORD'], 
     :signature => ENV['PAYPAL_SIGNATURE'] 
    ) 
    end 

答えて

1
+0

が、私はそれをどのように使うのですか?私のケースではどこに実装しますか? –

+0

コントローラの1つにアクションを作成し、ActiveMerchantを要求してから、製品情報で要求を作成することができます。研究後の私は –

+1

私はpaypal反復は非難されると思います。したがって、私は今仕事をうまくやっているpaypal_recurringの宝石を実装しました。 –