簡體   English   中英

PayPal IPN發送電子郵件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM