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