module Payola
Constants
- DEFAULT_EMAILS
- VERSION
Attributes
additional_charge_attributes[RW]
background_worker[RW]
charge_verifier[RW]
create_stripe_plans[RW]
default_currency[RW]
default_tax_percent[RW]
event_filter[RW]
guid_generator[RW]
pdf_receipt[RW]
publishable_key[RW]
publishable_key_retriever[RW]
secret_key[RW]
secret_key_retriever[RW]
sellables[RW]
subscribables[RW]
support_email[RW]
Public Class Methods
all(callable = Proc.new)
click to toggle source
# File lib/payola.rb, line 57 def all(callable = Proc.new) StripeEvent.all(callable) end
configure() { |self| ... }
click to toggle source
# File lib/payola.rb, line 36 def configure(&block) raise ArgumentError, "must provide a block" unless block_given? block.arity.zero? ? instance_eval(&block) : yield(self) end
instrument(name, object)
click to toggle source
# File lib/payola.rb, line 53 def instrument(name, object) StripeEvent.backend.instrument(StripeEvent.namespace.call(name), object) end
publishable_key_for_sale(sale)
click to toggle source
# File lib/payola.rb, line 45 def publishable_key_for_sale(sale) return publishable_key_retriever.call(sale).to_s end
queue!(klass, *args)
click to toggle source
# File lib/payola.rb, line 61 def queue!(klass, *args) if background_worker.is_a? Symbol Payola::Worker.find(background_worker).call(klass, *args) elsif background_worker.respond_to?(:call) background_worker.call(klass, *args) else Payola::Worker.autofind.call(klass, *args) end end
register_sellable(klass)
click to toggle source
# File lib/payola.rb, line 97 def register_sellable(klass) sellables[klass.product_class] = klass end
register_subscribable(klass)
click to toggle source
# File lib/payola.rb, line 101 def register_subscribable(klass) subscribables[klass.plan_class] = klass end
reset!()
click to toggle source
# File lib/payola.rb, line 75 def reset! StripeEvent.event_retriever = Retriever Stripe.api_version = ENV['STRIPE_API_VERSION'] || '2015-02-18' self.background_worker = nil self.event_filter = lambda { |event| event } self.charge_verifier = lambda { |event| true } self.publishable_key = EnvWrapper.new('STRIPE_PUBLISHABLE_KEY') self.secret_key = EnvWrapper.new('STRIPE_SECRET_KEY') self.secret_key_retriever = lambda { |sale| Payola.secret_key } self.publishable_key_retriever = lambda { |sale| Payola.publishable_key } self.support_email = 'sales@example.com' self.default_currency = 'usd' self.default_tax_percent = nil self.sellables = {} self.subscribables = {} self.additional_charge_attributes = lambda { |sale, customer| { } } self.pdf_receipt = false self.guid_generator = lambda { SecureRandom.random_number(1_000_000_000).to_s(32) } self.create_stripe_plans = true end
secret_key_for_sale(sale)
click to toggle source
# File lib/payola.rb, line 41 def secret_key_for_sale(sale) return secret_key_retriever.call(sale).to_s end
send_email_for(*emails)
click to toggle source
# File lib/payola.rb, line 105 def send_email_for(*emails) emails.each do |email| spec = DEFAULT_EMAILS[email].dup if spec Payola.subscribe(spec.shift) do |sale| if sale.is_a?(Stripe::Event) sale = Payola::Sale.find_by!(stripe_id: sale.data.object.id) end Payola.send_mail(*(spec + [sale.guid])) end end end end
send_mail(mailer, method, *args)
click to toggle source
# File lib/payola.rb, line 71 def send_mail(mailer, method, *args) Payola.queue!(Payola::SendMail, mailer.to_s, method.to_s, *args) end
subscribe(name, callable = Proc.new)
click to toggle source
# File lib/payola.rb, line 49 def subscribe(name, callable = Proc.new) StripeEvent.subscribe(name, callable) end