私は現金支払いをサイトで処理するためにアクティブマーチャントの宝石を使用しています。しかし、今私は毎月これらの支払いを繰り返したいと思っています。アクティブな商人を使用する方法はありますか?アクティブマーチャントのペイパル定期支払い
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つにアクションを作成し、ActiveMerchantを要求してから、製品情報で要求を作成することができます。研究後の私は –
私はpaypal反復は非難されると思います。したがって、私は今仕事をうまくやっているpaypal_recurringの宝石を実装しました。 –