Estoy usando el paypal-recurring gem para manejar pagos recurrentes en una aplicación de Rails. La mayoría de mi código proviene de este excelente Railscast, pero también deseo agregar un modelo de notificación de pago para aceptar la devolución de llamada IPN y almacenar cualquier dato relevante. Este Railscast repasa cómo configurar las notificaciones. Sin embargo, me está resultando difícil descifrar cómo enviar la devolución de llamada IPN de la gema recurrente de paypal a mi modelo PaymentNotification.Rieles: manejo de la devolución de llamada del IPN de PayPal usando la gema recurrente de paypal
Cómo puedo configurar: ipn_url para escribir correctamente la devolución de llamada IPN a mi modelo PaymentNotification. Probé la siguiente hasta el momento:
1) Adición de ipn_url: "http://my-app-name.com/payment_notifications"
con el método de proceso (en las opciones) o payment_notifications_url
2) Tratar la solución sugerida en la parte inferior de esta GitHub issue page
3) Uso de instantánea de PayPal Simulador de notificación de pago (IPN) para enviar a "http://my-app-name.com/payment_notifications", pero aparece un error: Falló la entrega de IPN. código de error HTTP 401: no autorizado
EDITAR
he sido capaz de simular con éxito la entrega del IPN a mi payments_notifications_url. Ahora solo necesito descubrir cómo señalar la gema recurrente para enviar el ipn a allí.
Cualquier puntero sería muy apreciado. A continuación se muestra parte de mi código actual. Si me olvido de alguna pieza relevante, házmelo saber.
PaypalPayment Modelo
class PaypalPayment
def initialize(subscription)
@subscription = subscription
end
def checkout_details
process :checkout_details
end
def checkout_url(options)
process(:checkout, options).checkout_url
end
def make_recurring
process :request_payment
process :create_recurring_profile, period: :monthly, frequency: 1, start_at: Time.zone.now
end
def cancel_recurring
process :cancel
end
private
def process(action, options = {})
options = options.reverse_merge(
token: @subscription.paypal_payment_token,
payer_id: @subscription.paypal_customer_token,
description: @subscription.plan.name,
amount: @subscription.plan.monthly_price,
currency: "JPY"
)
response = PayPal::Recurring.new(options).send(action)
raise response.errors.inspect if response.errors.present?
response
end
end
PaymentNotifications controlador
class PaymentNotificationsController < ApplicationController
protect_from_forgery :except => [:create]
def create
PaymentNotification.create!(:params => params, :status => params[:payment_status], :transaction_id => params[:txn_id])
render :nothing => true
end
end
puede ayudarme por favor aquí, estoy un poco confundido sobre cómo cancelar la suscripción de PayPal. http://stackoverflow.com/questions/21372793/link-to-paypal-to-cancel-paypal-recurring-rails –