[英]PayPal IPN Send Email
我有一個處理PayPal IPN回調的控制器。 我想將與會者標記為“已付款”,如果他們已成功付款,則向他們發送確認電子郵件。
標記付款操作正在工作,但電子郵件未發送。
這是我的控制器:
class PaymentNotificationsController < ApplicationController
protect_from_forgery :except => [:create]
def create
PaymentNotification.create!(:params => params, :attendee_id => params[:invoice], :status => params[:payment_status], :transaction_id => params[:txn_id])
if params[:payment_status] == 'Complete'
@attendee = Attendee.find(params[:invoice])
## Working
@attendee.update_attribute(:paid, Time.now)
## Not Working
UserMailer.welcome_email(@attendee).deliver
end
render nothing: true
end
end
這是我的user_mailer文件:
class UserMailer < ActionMailer::Base
default from: 'example@email.com'
def welcome_email(user)
@user = user
email_with_name = "#{@user.first_name} #{@user.last_name} <#{@user.email}>"
@url = 'http://example.com'
mail(
to: email_with_name,
subject: 'Welcome to Yadda Yadda'
)
end
end
這很奇怪,在另一個沒有PayPal的控制器中,郵件程序正常工作:
class VendorsController < ApplicationController
def create
@vendor = Vendor.new(vendor_params)
if @vendor.save
UserMailer.welcome_email(@vendor).deliver
redirect_to vendor_success_path
else
render 'new'
end
end
end
我正在從您的問題中拉出您的答案,並將其發布在此處以供將來參考。
這將執行兩個操作(標記已付款並發送郵件)。 它已作為after_create方法移至模型。
這是模型:
class PaymentNotification < ActiveRecord::Base
...
after_create :mark_attendee_paid
private
def mark_attendee_paid
if status == 'Completed'
attendee.update_attribute(:paid, Time.now)
UserMailer.welcome_email(attendee).deliver
end
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.