Ich benutze Active Merchant Gem, um Zahlungen über die Website zu behandeln. Aber jetzt möchte ich diese Zahlungen monatlich wiederholen. Gibt es einen Weg mit aktiven Händler oder?Active Merchant paypal wiederkehrende Zahlungen
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 Modell
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 Umgebung
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
aber, wie ich es verwenden? Wo implementiere ich es in meinem Fall? –
Scheint, dass Sie eine Aktion in einem Ihrer Controller erstellen können, ActiveMerchant benötigen und dann die Anfrage mit Ihren Produktinformationen erstellen. –
nach der Forschung denke ich paypal wiederkehrend ist veraltet. So habe ich jetzt das paypal_recurring Juwel implementiert, das die Arbeit gut macht. –