mirror of
https://github.com/neocities/neocities.git
synced 2025-07-22 10:36:07 +02:00
Code to display tips submitted on news feed
This commit is contained in:
parent
621e45b6a2
commit
cc07e90b44
11 changed files with 131 additions and 12 deletions
|
@ -10,6 +10,57 @@ post '/webhooks/paypal' do
|
|||
'ok'
|
||||
end
|
||||
|
||||
def valid_paypal_webhook_source?
|
||||
# https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1465&viewlocale=en_US&direct=en
|
||||
return true if ['127.0.0.1', '173.0.81.1', '173.0.81.33', '66.211.170.66'].include?(request.ip)
|
||||
false
|
||||
end
|
||||
|
||||
post '/webhooks/paypal/tipping_notify' do
|
||||
return 403 unless valid_paypal_webhook_source?
|
||||
payload = JSON.parse Base64.strict_decode64(params[:custom]), symbolize_names: true
|
||||
|
||||
site = Site[payload[:site_id]]
|
||||
|
||||
@tip_hash = {
|
||||
message: (params[:memo] ? params[:memo] : nil),
|
||||
amount: params[:mc_gross],
|
||||
currency: params[:mc_currency],
|
||||
fee: params[:mc_fee],
|
||||
actioning_site: (payload[:actioning_site_id] ? Site[payload[:actioning_site_id]] : nil),
|
||||
paypal_payer_email: params[:payer_email],
|
||||
paypal_receiver_email: params[:receiver_email],
|
||||
paypal_txn_id: params[:txn_id],
|
||||
created_at: DateTime.strptime(params[:payment_date], "%H:%M:%S %b %e, %Y %Z").to_time
|
||||
}
|
||||
|
||||
@tip = site.add_tip @tip_hash
|
||||
|
||||
Event.create(
|
||||
site_id: @tip.site.id,
|
||||
actioning_site_id: (@tip.actioning_site ? @tip.actioning_site.id : nil),
|
||||
tip_id: @tip.id
|
||||
)
|
||||
|
||||
if @tip.actioning_site
|
||||
subject = "You received a #{@tip.amount_string} tip from #{@tip.actioning_site.username}!"
|
||||
else
|
||||
subject = "You received a #{@tip.amount_string} tip!"
|
||||
end
|
||||
|
||||
@tip.site.send_email(
|
||||
subject: subject,
|
||||
body: Tilt.new('./views/templates/email/tip_received.erb', pretty: true).render(self)
|
||||
)
|
||||
|
||||
EmailWorker.perform_async({
|
||||
from: 'web@neocities.org',
|
||||
to: params[:payer_email],
|
||||
subject: "You sent a #{@tip.amount_string} tip!",
|
||||
body: Tilt.new('./views/templates/email/tip_sent.erb', pretty: true).render(self)
|
||||
})
|
||||
end
|
||||
|
||||
post '/webhooks/stripe' do
|
||||
event = JSON.parse request.body.read
|
||||
if event['type'] == 'customer.created'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue