0

クラウドファンディングのウェブサイトへの寄付を許可するために、Paypal Adaptive Chained 支払いを使用しています。支払いを行い、支払いが成功した後(サンドボックスで)「return_url」に返される限り、すべてが機能しています。

サンドボックスでの IPN のテストに関する Paypals のドキュメントはまばらです。IPN コールバックを有効にするための設定をどこかで忘れたのでしょうか?

IPN コールバックを使用して、支払いが成功したことを確認できるようにしたいと考えています。コールバック JSON を確認して、どのフィールドをキャプチャして比較するかを知りたいです。サンプル コードを見つけましたが、サンドボックスで IPN コールバックが呼び出されないようです。私はそのようにパラメータを出力しようとしました(また、 puts ステートメントは呼び出されません):

****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 purchase' が購入を呼び出します。

****backers_controller.rb
class BackersController < ApplicationController

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

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

1 に答える 1

0

私の認証が原因で、Paypal が私の IPN リスナーを呼び出すことができなかったことが判明しました。

于 2012-07-31T20:44:11.420 に答える