2010-11-11 29 views
5

J'essaie d'intégrer l'application ActiveMerchant dans mes rails. J'ai certains plans qui, s'ils sont souscrits, limitent l'accès de l'utilisateur. Comme vous savez tous ce qu'est une application basée sur l'abonnement, je ne vais pas expliquer mon application. Veuillez me suggérer quelques exemples pour que cela se produise. J'ai déjà visionné les épisodes 141 à 146 mais Ryan a seulement démontré Paypal Web Payments Standard et Paypal Web Payments Pro. J'ai aussi lu un tas de blogs mais cela n'a pas aidé.ActiveMerchant prend en charge la transaction par abonnement

Aidez-nous s'il vous plaît.

Merci à l'avance.

+0

Cette publication liée pourrait également vous être utile. http://stackoverflow.com/questions/1683929/paypal-recurring-billing-and-activemerchant –

Répondre

0

Un marchand actif prend en charge les paiements récurrents pour certaines de ses passerelles (https://github.com/Shopify/active_merchant/wiki/GatewayFeatureMatrix).

Chacun a une syntaxe légèrement différente (https://github.com/Shopify/active_merchant/blob/master/lib/active_merchant/billing/gateways/authorize_net_cim.rb) mais peut accomplir ce que vous voulez.

Je vous recommande cependant de choisir votre passerelle de paiement et d'utiliser un APi spécifique pour cela. AM est un peu en retard (d'après mon expérience) et les paiements récurrents ne sont pas son objectif principal.

Il existe également des services qui géreront toute l'interaction de la passerelle pour vous et il vous suffit de gérer votre API. Il est plus facile d'accepter le paiement et de gérer les exigences Pci DSS dans le cas de pages de paiement hébergées par des tiers.

+0

Je veux utiliser Paypal comme passerelle, aussi je veux que Paypal gère la transaction c'est-à-dire si l'utilisateur clique sur le bouton d'abonnement il est pris sur le site de paypal et toute la transaction est effectuée là et si un IPN est envoyé sur mon site, et une fois la transaction terminée, l'utilisateur revient sur mon site (je pense que c'est un peu comme Paypal Web Payments Standard). Est-ce possible? – Rohit

+0

Cela peut être géré en dehors de AM, son site Web sur les paypals. –

+0

Mais je veux le faire en utilisant Paypal. Est-il possible s'il vous plaît recommander quelque chose. – Rohit

9

Mieux vaut tard que jamais, hein?

La branche principale réelle d'ActiveMerchant contient une classe récurrente intégrée à la fois dans PaypalGateway et PaypalExpressGateway.

Voici un extrait de démo qui fonctionne. Je ne suis pas sûr de quelques points (je mettrai à jour la réponse dès que je les ai figuré dehors), qui sont:

  • Juste l'accord fixant de facturation ne montre aucun prix indépendamment du milieu :initial_amount. Y compris un article montrera le prix de l'article au-dessus du billing_agreement[:description]. Donc, je ne suis pas sûr de savoir comment cela affecte les capturations, ce que je suis en train de tester ces jours-ci.
  • Notifications IPN. Ils sont manquants dans l'extrait suivant. Mise à jour suivante ...

    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 
    

Vous voulez avoir un regard sur PaypalRecurringAPI et PaypalExpressGateway/PayPalGateway pour voir quelles options sont traitées et à quel endroit de la demande xml.

modifier Le plus récent, révisé screencast sur paypal et la facturation récurrente est fait avec une gemme distincte paypal-recurring. Peut-être que cela aide si vous ne pouvez pas le faire fonctionner avec ActiveMerchant.

+0

Selon [this] (https://github.com/activemerchant/active_merchant/issues/1584), ils abandonneront la prise en charge du paiement récurrent dans ActiveMerchant v2 –