3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'app/services/payola/create_sale.rb', line 3
def self.call(params)
product = params[:product]
affiliate = params[:affiliate]
coupon = params[:coupon]
if params[:stripe_customer_id].present?
customer = Stripe::Customer.retrieve(params[:stripe_customer_id], Payola.secret_key)
email = customer.email
token = customer.default_source
else
email = params[:stripeEmail]
token = params[:stripeToken]
end
Payola::Sale.new do |s|
s.product = product
s.email = email
s.stripe_token = token
s.affiliate_id = affiliate.try(:id)
s.currency = product.respond_to?(:currency) ? product.currency : Payola.default_currency
s.signed_custom_fields = params[:signed_custom_fields]
s.stripe_customer_id = customer.id if customer
if coupon
s.coupon = coupon
s.amount = product.price * (1 - s.coupon.percent_off / 100.0)
else
s.amount = product.price
end
end
end
|