1

私はしばらくの間、PayPal へのこの応答を理解しようとしましたが、気が狂いそうになります。PayPal が IPN を再送信するのを止めるために、どこかに返送する必要があります。これはこれまでの IPN リスナーのコードですが、IPN 応答を送信するにはどうすればよいですか? ppr.validをやっているだけですか?VERIFIED 応答を作成しますが、IPN メッセージが引き続き送信されるため、IPN 応答としてカウントされないと思います。有効な?行は常に失敗し、email と Seller_id が見つからないため、これらもどこかに配置する必要があります (これにはドキュメントが必要です)。こちらの gem ドキュメントを参照してください: https://github.com/fnando/paypal-recurring

def ipn
  subscription = Subscription.where(:email => params[:payer_email], :status => "Active").last
  if subscription
    ppr = PayPal::Recurring::Notification.new(params)

    PaymentsNotification.create!(:params => params.to_json, :status => params[:payment_status], :transaction_id => params[:txn_id])

    if ppr.valid? && (ppr.express_checkout? || ppr.recurring_payment?)
       #business logic
    end
end

私はこのコードで終わった:

def ipn
subscription = Subscription.where(:email => params[:payer_email], :status => "Active").last
if subscription
  PaymentsNotification.create!(:params => params.to_json.gsub("\"", "'"), :status => params[:payment_status], :transaction_id => params[:txn_id])
  ppr = PayPal::Recurring::Notification.new(params)
  ppr.response #send back the response to confirm IPN, stops further IPN notifications from being sent out
  if ppr.verified? && ppr.completed?
    if ppr.express_checkout? || ppr.recurring_payment?
      #do stuff here
    end
  else
    #raise response.errors.inspect
  end
end
render :nothing => true

終わり

4

0 に答える 0