2010-11-11 16 views
5

Estoy intentando integrar ActiveMerchant en mi aplicación de rieles. Tengo ciertos planes que si se suscriben limitan el acceso del usuario. Como todos ustedes pueden saber lo que es una aplicación basada en suscripción, no voy a explicar mi aplicación. Por favor sugiera algunos ejemplos para hacer que esto suceda. Ya he visto los episodios de transmisiones de audio 141 a 146, pero Ryan solo ha demostrado Paypal Web Payments Standard y Paypal Web Payments Pro. También he leído muchos blogs, pero no me ayudó.¿ActiveMerchant admite transacción basada en suscripción?

Por favor ayuda.

Gracias de antemano.

+0

Esta publicación relacionada también puede ser útil para usted. http://stackoverflow.com/questions/1683929/paypal-recurring-billing-and-activemerchant –

Respuesta

0

El comerciante activo admite pagos periódicos para algunas de sus puertas de enlace (https://github.com/Shopify/active_merchant/wiki/GatewayFeatureMatrix).

Cada uno tiene una sintaxis ligeramente diferente (https://github.com/Shopify/active_merchant/blob/master/lib/active_merchant/billing/gateways/authorize_net_cim.rb) pero puede lograr lo que desea.

Recomendaría sin embargo elegir su pasarela de pago y utilizar un APi específico para ello. AM está un poco rezagado (según mi experiencia) y los pagos recurrentes no son su objetivo principal.

También hay servicios que manejarán todas las interacciones de la puerta de enlace para usted y usted solo se ocupará de su API. Hace que sea más fácil aceptar pagos y manejar los requisitos de Pci DSS en el caso de páginas de pago alojadas de terceros.

+0

Quiero usar Paypal como Gateway, también quiero que Paypal maneje la transacción, es decir, si el usuario hace clic en el botón de suscripción, se lo toma. al sitio de paypal y toda la transacción se lleva a cabo allí y, si tiene éxito, se envía un IPN a mi sitio, y una vez completada la transacción, el usuario regresa a mi sitio (creo que esto es algo así como Paypal Web Payments Standard). Es posible – Rohit

+0

Esto se puede manejar fuera de AM, está en el sitio web de paypal. –

+0

Pero quiero hacerlo usando Paypal. Es posible por favor recomienda algo. – Rohit

9

Mejor tarde que nunca, ¿eh?

La rama maestra real de ActiveMerchant contiene una clase recurrente integrada tanto en PaypalGateway como en PaypalExpressGateway.

Aquí hay un fragmento de demostración que funciona. No estoy seguro acerca de solo unos pocos puntos (Voy a actualizar la respuesta tan pronto como me di cuenta de ellos), que son:

  • Sólo establecer el acuerdo de pago no muestra ningún precio independientemente de lo programado :initial_amount. Si se incluye un artículo, se mostrará el precio del artículo por encima del billing_agreement[:description]. Así que no estoy seguro de cómo esto afecta las capturas, que es lo que estoy probando en estos días.
  • notificaciones IPN. Faltan en el siguiente fragmento. Actualizar siguiente ...

    class PaymentsController < ApplicationController 
        include ActiveMerchant::Billing 
    
    
        # GET /subscriptions/:id/checkout 
        def checkout 
        payment_request = PAYPAL_EXPRESS_GATEWAY.setup_purchase(@subscription.price_in_cents, 
         :billing_agreement => { 
          :type => 'RecurringPayments', 
          :description => 'Subscription agreement', 
         }, 
    
         :currency => 'CHF', 
         :no_shipping => true, 
         :allow_guest_checkout => true, 
         :allow_note => false, 
         :initial_amount => @subscription.price_in_cents, 
         :locale => 'de', 
         :ip => request.remote_ip, 
         :return_url => url_for(:action => :confirm, :only_path => false), 
         :cancel_return_url => url_for(:action => :cancel, :only_path => false), 
         # Looks like :notify_url is not used here, but in the next section 
        ) 
    
        if payment_request.success? 
         redirect_to PAYPAL_EXPRESS_GATEWAY.redirect_url_for(payment_request.token) 
        else 
         # Render something informal 
         render :text => payment_request.inspect.to_s and return 
        end 
        end 
    
        # POST /subscriptions/:id/confirm 
        # params having token and PayerID 
        def confirm 
        profile = PAYPAL_EXPRESS_GATEWAY.recurring(@subscription.price_in_cents, nil, 
         :description => 'Subscription agreement', 
         :start_date => Date.tomorrow, # PayPal throws an error if the date is not in the future 
         :period => 'Year', 
         :frequency => 1, 
         :amount => @subscription.price_in_cents, 
         :currency => 'CHF', 
         :initial_amount => @subscription.price_in_cents, 
         :auto_bill_outstanding => true, 
    
         :token => params[:token] 
        ) 
    
        # profile has profile_id and profile_status. remember status because this gets updated via IPN. 
        @debug = {:params => params.inspect.to_s, :profile => profile.inspect.to_s } 
    
        # Render something informal 
        render :text => @debug.to_s and return 
        end 
    
    
        # implement instead of just log 
        def notification 
        log = Logger.new 'log/ipn.log' 
        log.debug params.inspect 
        render :text => params.inspect.to_s and return 
        end 
    
    
        # Private methods omitted 
    
    end 
    

Usted quiere tener una mirada en PaypalRecurringAPI y PaypalExpressGateway/PayPalGateway para ver qué opciones se procesan y en el que el lugar de la solicitud XML.

editar El nuevo screencast revisado sobre paypal y facturación recurrente se realiza con una gema separada paypal-recurring. Tal vez esto ayude si no puedes hacer que funcione con ActiveMerchant.

+0

De acuerdo con [este] (https://github.com/activemerchant/active_merchant/issues/1584), dejarán de recibir soporte para el pago recurrente en ActiveMerchant v2 –

Cuestiones relacionadas