简体   繁体   English

Active Merchant Paypal定期付款

[英]Active Merchant paypal recurring payments

I am using Active Merchant gem to handle payments through the site. 我正在使用Active Merchant gem通过网站处理付款。 But now i want to make these payments recurring, on a monthly basis. 但是现在我想每月定期进行这些付款。 Is there a way using active merchant or? 有没有办法使用活跃的商人?

subscription_controller.rb 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 model 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 environment 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM