Frage

Ich brauche authorize.net Integration für Abonnementzahlungen, wahrscheinlich CIM verwenden. Die Anforderungen sind einfach - wiederkehrende monatliche Zahlungen, mit ein paar verschiedenen Preisklassen. Kundenkreditkartendaten werden eine authorize.net gespeichert werden.

Es gibt durchaus ein paar Bibliotheken und Code-Schnipsel um, ich bin auf der Suche nach Empfehlungen, welche am besten funktionieren.

  • scheint Satchmo mehr als ich brauche, und es sieht aus wie es komplex ist.
  • Django-Bursar scheint wie das, was ich brauche, aber es ist als alpha aufgeführt.
  • Die AdRoll / Bibliothek autorisieren auch ziemlich gut aussieht.
  • Die CIM XML APIs sieht nicht allzu schlecht, ich direkt mit ihnen verbinden kann.

Und es gibt durchaus ein paar anderen Code-Schnipsel.

Was ist die beste Wahl, gerade jetzt, meine ziemlich einfachen Anforderungen gegeben?

War es hilfreich?

Lösung 5

Für was es wert, den wir am Ende mit der AdRoll Bibliothek genehmigen. Sowohl Paython und django-AuthorizeNet interessant aussehen, werden diejenigen, werden überprüft.

Andere Tipps

Lange Rede kurzer Sinn, keine der bestehenden Lösungen erfüllt meine Bedürfnisse. Sie waren entweder nicht betreut, unkommentiert, ungetestet, oder fehlte gespeichert Karten. So natürlich baute ich meine eigene Lösung und Open-Source-it:

AuthorizeSauce: https://github.com/jeffschenck/authorizesauce

Es behandelt grundlegende Transaktionen (die AIM API), gespeichert Karten (CIM API), und wiederkehrende Zahlungen (die ARB API). Es ist vollständig dokumentiert und verfügt über eine vollständige Testsuite.

Ich erwarte, dass das ursprüngliche Plakat längst weitergezogen, aber wenn es jemand helfen kann sonst etwas von dem Schmerz der Zahlungsabwicklung zu vermeiden, würde ich überglücklich sein.

Edit: https://github.com/agiliq /merchant/blob/master/billing/gateways/authorize_net_gateway.py sieht ziemlich schön, es noch nicht ausprobiert haben.

Edit: [Für das nächste Projekt, das ich habe, dass authorize.net verwendet, werde ich einen Blick nehmen auf: http://github.com/zen4ever/django-authorizenet Es ziemlich schön aussieht. Ich glaube nicht, dass es Unterstützung hat jedoch Zahlungen für wiederkehrende.]

In der Vergangenheit habe ich wenig einmalige Implementierungen gemacht.

Für einfache Post an die AIM Payment-Gateway, Sie so etwas wie diese verwenden können:

URL = 'https://test.authorize.net/gateway/transact.dll'
API = {'x_login':'XXX',
'x_tran_key':'XXX', 'x_method':'CC', 'x_type':'AUTH_ONLY',
'x_delim_data':'TRUE', 'x_duplicate_window':'10', 'x_delim_char':'|',
'x_relay_response':'FALSE', 'x_version':'3.1'}

def call_auth(amount, card_num, exp_date, card_code, zip_code, request_ip=None):
    '''Call authorize.net and get a result dict back'''
    import urllib2, urllib
    payment_post = API
    payment_post['x_amount'] = amount
    payment_post['x_card_num'] = card_num
    payment_post['x_exp_date'] = exp_date
    payment_post['x_card_code'] = card_code
    payment_post['x_zip'] = zip_code
    payment_request = urllib2.Request(URL, urllib.urlencode(payment_post))
    r = urllib2.urlopen(payment_request).read()
    return r

def call_capture(trans_id): # r.split('|')[6] we get back from the first call, trans_id
    capture_post = API
    capture_post['x_type'] = 'PRIOR_AUTH_CAPTURE'
    capture_post['x_trans_id'] = trans_id
    capture_request = urllib2.Request(URL, urllib.urlencode(capture_post))
    r = urllib2.urlopen(capture_request).read()
    return r

So autorisieren, Sie tun so etwas wie:

            r = authorize.call_auth(
                unicode(decimal_total),
                request.POST.get('card_num'),
                request.POST.get('exp_date'),
                request.POST.get('card_code'),
                request.POST.get('zip_code') if request.POST.get('zip_code') else address.zip_code,
            )
            if r.split('|')[0] == '1':
              # it's good, we have authorized the card...
            else:
              error = "%s Please try again." % (r.split('|')[3])

dann können wir erfassen:

        r = authorize.call_capture(trans_id) # r.split('|')[6] in first response..
        if r.split('|')[0] == '1':
            # we captured it.
        else:
            error = r.split('|')[3]

Es gibt mehr Möglichkeiten, Wege zu verlangen, Nuancen in der Antwort zu analysieren ... Ich gehe davon aus b / c A in AIM steht für advanced die mit allen von authorize.net Optionen zur Verfügung stehen.

http://developer.authorize.net/guides/AIM/

Ich weiß, dass Ihre Frage ist, was lib am besten ist .. gut, könnte es am einfachsten, nur Ihr eigenes kleines bisschen Ad-hoc-Anfrage und Antwort für Ihre spezifischen Anforderungen zu implementieren, anstatt zu versuchen, durch eine api oben auf Grube ein api.

Es gibt immer Paython: https://github.com/abunsen/Paython

Derzeit unterstützt 5+ Zahlungs-Gateways:

  1. Authorize.net
  2. First Data / Linkpoint
  3. Innovative-Gateway (von Intuit)
  4. PlugnPay
  5. Streifen

Hier ist ein Beispiel:

from paython import CreditCard, AuthorizeNet

Eine Karte einrichten zuerst:

credit_card = CreditCard(
      number = '4111111111111111',
      exp_mo = '02',
      exp_yr = '2012',
      first_name = 'John',
      last_name = 'Doe',
      cvv = '911',
      strict = False
  )

überprüfen, ob seine Gültigkeit:

if not credit_card.is_valid(): return 'houston, we have a problem' # checks card number + expiration date

Kundendaten einrichten zu berechnen, sind nicht alle Felder sind erforderlich:

customer_data = dict(
      address='123 Main St', 
      address2='Apt 1', 
      city='Pleasantville', 
      state='IA', 
      zipcode='54321', 
      country='US', 
      phone='654-369-9589', 
      email='john@localwoodshop.com', 
      ip='127.0.0.1')

autorisieren gegen Gateway, Optionen umfassen Debug-Ausgabe oder Testanmeldeinformationen:

  api = AuthorizeNet(username='test', password='testpassword', debug=True, test=True)
  gateway_response = api.auth(amount='0.05', credit_card=credit_card, billing_info=customer_data, shipping_info=None)

Jetzt können Sie begleichen:

  api = AuthorizeNet(username='test', password='testpassword', debug=True, test=True)
  gateway_response = api.settle(amount='0.05', trans_id='2156729380')

Ich schrieb vor kurzem diese API für Python und Authorize.net nach dem Fehlschlagen zu finden, die alle von Authorize.net Funktionalität unterstützt.

https://github.com/vcatalano/py-authorize

Ich weiß, das ist ein bisschen spät, aber hoffentlich hilft es anderen.

Ich kam vor kurzem in Py-Authorize, das einige große Dokumentation hat, im Vergleich zu den anderen Paketen zur Verfügung. Sie können es über installieren:

pip install Py-Authorize

Es scheint eine Abhängigkeit (colondar) zu installieren, die, wenn sie über pip installiert ist veraltet, so dass Sie die neueste (zum Zeitpunkt des Schreibens dieses Artikels) bekommen kann durch die folgenden Aktionen ausführen:

pip install git+git://github.com/Pylons/colander.git@1.0b1

Die Dokumente sind hier: http://vcatalano.github.io/py-authorize /index.html

Arbeiten groß in meiner Erfahrung, aber für das Projekt, das ich es auf Ich verwende nur benötigt AuthCapture und nicht ARB oder etwas ... es zu versuchen. Bestes Paket, das ich bisher gefunden habe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top