0

我們正在使用貝寶自適應鏈式支付,以允許在衆籌網站上提供捐款。我已經完成了所有工作,只要付款成功並在支付成功後返回到'return_url'(在沙箱中)。Paypal IPN on Rails應用程序不被稱爲

關於在沙箱中測試IPN的PayPal文檔很少。也許我錯過了一個設置來啓用IPN回調?

我希望能夠使用IPN回調來驗證付款是否成功。我想看到回調JSON,所以我知道要捕獲哪個字段並與之比較。我找到了示例代碼,但IPN回調似乎沒有在沙箱中調用。我試圖輸出像這樣的PARAMS(也賣出期權語句不叫):

****backers_controller.rb 
class BackersController < ApplicationController  
include ActiveMerchant::Billing::Integrations 

    def callback_ipn 
    puts "callback: ipn" 
    notify = PaypalAdaptivePayment::Notification.new(request.raw_post) 
    puts notify.to_yaml 
    end 

    def callback_return 
    puts "callback: return" 
    @backer = Backer.find(params[:id]) 
    @reward = @project.rewards.find_by_id(@backer.reward_id) 
    @backer.callback 

    respond_to do |format| 
     format.html { render :layout => 'application_proj_back_blog' } 
     format.json { render json: @backer } 
    end 
    end 

(在 'callback_return' 行動工作)

****backer.rb 
class Backer < ActiveRecord::Base 
    include ActionDispatch::Routing::UrlFor 
    include Rails.application.routes.url_helpers 

def purchase 
    project = Project.find(self.project_id) 
    default_url_options[:host] = 'localhost:3000' 
    proj_owner_email = User.find(project.user_id).email 
    recipients = [{:email => PRIMARY_EMAIL, 
       :amount => total_pledge, 
       :primary => true}, 
       {:email => project.paypal_email, 
       :amount => project_owner_cut, 
       :primary => false} 
    ] 
    response = GATEWAY.setup_purchase(
    :action_type => "PAY_PRIMARY", 
    :return_url => callback_return_project_backer_url(project, self), 
    :cancel_url => callback_cancel_project_backer_url(project, self), 
    :ipn_notification_url => callback_ipn_project_backer_url(project, self), 
    :currency_code =>"USD", 
    :receiver_list => recipients 
) 
    puts response.to_yaml 
    pay_key = response["payKey"] 

    pledge_transactions.create!(:action => "purchase", :amount => total_pledge, :response => response) 
    return response["payKey"] 
end 

回到backers_controller.rb, 'def購買'電話購買:

****backers_controller.rb 
class BackersController < ApplicationController 

    def purchase 
    @backer = Backer.find(params[:id]) 
    @backer.purchase 

    redirect_to (GATEWAY.redirect_url_for(@backer.purchase)) 
    end 

回答

0

事實證明,我的身份驗證是阻止貝寶呼叫我的ipn監聽器。