2010-11-11 5 views
5

Ich versuche, ActiveMerchant in meiner App Rails zu integrieren. Ich habe bestimmte Pläne, dass, wenn abonniert den Benutzerzugriff beschränken. Da ihr alle wisst, was eine App ist, die auf einem Abonnement basiert, werde ich meine App nicht erklären. Bitte schlagen Sie mir einige Beispiele vor, um dies zu ermöglichen. Ich habe bereits die Railscasts 141 bis 146 gesehen, aber Ryan hat nur Paypal Web Payments Standard und Paypal Web Payments Pro gezeigt. Ich habe auch eine Reihe von Blogs gelesen, aber es hat nicht geholfen.Unterstützt ActiveMerchant Subscription Based Transaktion

Bitte helfen.

Vielen Dank im Voraus.

+0

Dieser Beitrag kann auch hilfreich für Sie sein. http://stackoverflow.com/questions/1683929/paypal-recurring-billing-and-activermerchant –

Antwort

0

Der aktive Händler unterstützt wiederkehrende Zahlungen für einige seiner Gateways (https://github.com/Shopify/active_merchant/wiki/GatewayFeatureMatrix).

Jede hat etwas andere Syntax (https://github.com/Shopify/active_merchant/blob/master/lib/active_merchant/billing/gateways/authorize_net_cim.rb) aber kann erreichen, was Sie wollen.

Ich würde empfehlen, aber Sie wählen Ihre Zahlung Gateway und verwenden Sie eine bestimmte APi dafür. AM liegt etwas zurück (aus meiner Erfahrung) und wiederkehrende Zahlungen sind nicht das primäre Ziel.

Es gibt auch Dienste da draußen, die alle Gateway-Interaktion für Sie behandeln werden und Sie nur mit dort API beschäftigen. Es erleichtert die Annahme von Zahlungen und die Handhabung von Pci DSS-Anforderungen im Fall gehosteter Zahlungsseiten Dritter.

+0

Ich möchte Paypal als Gateway verwenden, auch möchte ich Paypal, um die Transaktion zu handhaben, dh wenn der Benutzer auf die Schaltfläche zum Abonnieren klickt, wird er genommen auf Paypal's Website und die gesamte Transaktion wird dort ausgeführt und wenn erfolgreich ein IPN an meine Website gesendet wird, und nach der Transaktion ist der Benutzer wieder auf meiner Website (ich denke, das ist ein bisschen wie Paypal Web Payments Standard). Ist dies möglich – Rohit

+0

Dies kann außerhalb von AM behandelt werden, ist es auf Paypals-Website. –

+0

Aber ich möchte es mit Paypal machen. Ist es möglich, bitte etwas empfehlen. – Rohit

9

Besser spät als nie, nicht wahr?

Der eigentliche Master-Zweig von ActiveMerchant enthält eine wiederkehrende Klasse, die sowohl in PaypalGateway als auch in PaypalExpressGateway integriert ist.

Hier ist ein Demo-Snippet, das funktioniert. Ich bin nur nicht sicher über ein paar Punkte (ich werde so bald die Antwort aktualisieren, wie ich sie herausgefunden), das ist:

  • einfach die Abrechnungsvereinbarung Einstellung nicht jeden Preis nicht zeigen, unabhängig :initial_amount der Einstellung. Wenn Sie einen Artikel hinzufügen, wird der Artikelpreis über dem billing_agreement[:description] angezeigt. Ich bin also nicht sicher, wie sich das auf die Gefangenschaft auswirkt, und das teste ich gerade.
  • IPN-Benachrichtigungen. Sie fehlen im folgenden Codeausschnitt. Aktualisieren Sie folgende ...

    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 
    

Sie wollen einen Blick haben in PaypalRecurringAPI und PaypalExpressGateway/PayPalGateway zu sehen, welche Optionen verarbeitet werden und an welchem ​​Ort der XML-Anfrage.

bearbeiten Der neuere, überarbeitete Screencast über Paypal und wiederkehrende Abrechnung erfolgt mit einem separaten paypal-recurring Edelstein. Vielleicht hilft das, wenn Sie ActiveMerchant nicht zum Laufen bringen können.

+0

Laut [this] (https://github.com/activemerchant/active_merchant/issues/1584) wird die Unterstützung für wiederkehrende Zahlungen in ActiveMerchant v2 unterbrochen –