私はしばらくの間、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
終わり