بايثون/جانجو:ما هي مكتبة Authorize.net التي يجب أن أستخدمها؟

StackOverflow https://stackoverflow.com/questions/1637902

سؤال

أحتاج إلى تكامل Authorize.net لدفعات الاشتراك، على الأرجح باستخدام CIM.المتطلبات بسيطة - دفعات شهرية متكررة، مع بضع نقاط سعر مختلفة.سيتم تخزين معلومات بطاقة ائتمان العميل على موقع Authorize.net.

يوجد عدد لا بأس به من المكتبات ومقتطفات الأكواد البرمجية، وأنا أبحث عن توصيات بشأن أي منها يعمل بشكل أفضل.

  • يبدو أن Satchmo أكثر مما أحتاج إليه، ويبدو أنه معقد.
  • جانغو بورسار يبدو أنه ما أحتاج إليه، ولكنه مدرج في فئة ألفا.
  • ال أدرول/تخويل المكتبة تبدو أيضًا جيدة جدًا.
  • لا تبدو واجهات برمجة تطبيقات CIM XML سيئة للغاية، حيث يمكنني الاتصال بها مباشرةً.

وهناك عدد لا بأس به من مقتطفات التعليمات البرمجية الأخرى.

ما هو الخيار الأفضل الآن، في ضوء متطلباتي البسيطة إلى حد ما؟

هل كانت مفيدة؟

المحلول 5

لما يستحق انتهى بنا الأمر باستخدام مكتبة ترخيص adroll.يبدو كل من Paython وDjango-authorizenet مثيرين للاهتمام، وسيتم التحقق من ذلك.

نصائح أخرى

باختصار، لم يلبي أي من الحلول الحالية احتياجاتي.لقد كانت إما غير قابلة للصيانة، أو غير معلقة، أو غير مختبرة، أو تفتقر إلى البطاقات المحفوظة.لذا بالطبع قمت ببناء الحل الخاص بي وفتحته مفتوح المصدر:

تفويض الصلصة: https://github.com/jeffschenck/authorizesauce

يتعامل مع المعاملات الأساسية (API AIM)، والبطاقات المحفوظة (API CIM)، والمدفوعات المتكررة (API ARB).إنه موثق بالكامل ويحتوي على مجموعة اختبار كاملة.

أتوقع أن الملصق الأصلي قد تم تغييره منذ فترة طويلة، ولكن إذا كان بإمكانه مساعدة أي شخص آخر على تجنب بعض آلام معالجة الدفع، فسأشعر بسعادة غامرة.

يحرر: https://github.com/agiliq/merchant/blob/master/billing/gateways/authorize_net_gateway.pyيبدو جميلا جدا، لم أجربه بعد.

يحرر:[بالنسبة لمشروعي التالي الذي يستخدم Authorize.net، سألقي نظرة فاحصة على: http://github.com/zen4ever/django-authorizenet يبدو لطيفا جدا.لا أعتقد أن لديه دعمًا للمدفوعات المتكررة بالرغم من ذلك.]

في الماضي قمت بتنفيذ القليل من التطبيقات لمرة واحدة.

للنشر البسيط في بوابة الدفع AIM، يمكنك استخدام شيء مثل هذا:

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

للتفويض، عليك القيام بشيء مثل:

            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])

ومن ثم يمكننا التقاط:

        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]

هناك المزيد من الخيارات وطرق الطلب والفروق الدقيقة في الاستجابة للتحليل...أفترض ب / ج A في AIM تمثل advanced أن جميع خيارات Authorize.net متاحة.

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

أعلم أن سؤالك هو ما هو lib الأفضل ..حسنًا، قد يكون من الأسهل فقط تنفيذ طلبك المخصص والاستجابة لمتطلباتك المحددة بدلاً من محاولة البحث عن واجهة برمجة التطبيقات أعلى واجهة برمجة التطبيقات.

هناك دائمًا بايثون: https://github.com/abunsen/Paython

يدعم حاليًا أكثر من 5 بوابات دفع:

  1. Authorize.net
  2. البيانات الأولى/نقطة الارتباط
  3. بوابة مبتكرة (من إحدس)
  4. بلجن باي
  5. شريط

هنا مثال:

from paython import CreditCard, AuthorizeNet

قم بإعداد البطاقة أولاً:

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

تحقق مما إذا كانت صالحة:

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

قم بإعداد بيانات العميل لتحصيل الرسوم، ليست كل الحقول مطلوبة:

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')

التفويض ضد البوابة، تتضمن الخيارات إخراج التصحيح أو بيانات اعتماد الاختبار:

  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)

الآن يمكنك تسوية:

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

لقد كتبت مؤخرًا واجهة برمجة التطبيقات هذه لـ Python وAuthorize.net بعد الفشل في العثور على واجهة تدعم جميع وظائف Authorize.net.

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

أدرك أن هذا متأخر بعض الشيء، ولكن آمل أن يساعد الآخرين.

لقد صادفت مؤخرا Py-Authorize الذي يحتوي على بعض الوثائق الرائعة، مقارنة بالحزم الأخرى المتاحة.يمكنك تثبيته عبر:

pip install Py-Authorize

يبدو أنه يقوم بتثبيت التبعية (colondar) والتي عند تثبيتها عبر pip قديم لذا يمكنك الحصول على الأحدث (في وقت كتابة هذه السطور) عن طريق القيام بما يلي:

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

المستندات هنا: http://vcatalano.github.io/py-authorize/index.html

يعمل بشكل رائع حسب تجربتي، ولكن بالنسبة للمشروع الذي أستخدمه فيه، كنت بحاجة فقط إلى AuthCapture وليس ARB أو أي شيء آخر...جربه.أفضل حزمة وجدتها حتى الآن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top