문제

CIM을 사용하여 구독 결제에 대한 Authorize.net 통합이 필요합니다. 요구 사항은 간단합니다. 몇 가지 가격대와 함께 월별 반복 지불입니다. 고객 신용 카드 정보는 authorize.net이 저장됩니다.

주변에는 몇 가지 라이브러리와 코드 스 니펫이 있습니다. 나는 어떤 가장 잘 작동하는지 추천을 찾고 있습니다.

  • Satchmo는 내가 필요한 것보다 더 많이 보이며 복잡한 것 같습니다.
  • Django-Bursar 내가 필요한 것 같지만 알파로 나열되어 있습니다.
  • 그만큼 Adroll/Authorize Library 또한 꽤 좋아 보인다.
  • CIM XML API는 너무 나쁘지 않아서 직접 연결할 수 있습니다.

그리고 다른 코드 스 니펫이 꽤 많이 있습니다.

상당히 간단한 요구 사항을 감안할 때 지금 당장 최선의 선택은 무엇입니까?

도움이 되었습니까?

해결책 5

가치가있는 것에 대해 우리는 Adroll은 도서관을 승인합니다. Paython과 Django-Authorizenet은 모두 흥미롭게 보이며, 그 사람들을 확인할 것입니다.

다른 팁

간단히 말해서, 기존의 솔루션 중 어느 것도 내 요구를 충족하지 못했습니다. 그들은 유지되지 않았거나, 무책임하거나, 테스트되지 않았거나, 저장된 카드가 부족했습니다. 물론 나는 내 자신의 솔루션을 만들고 오픈 소스를 제공했습니다.

승인 : https://github.com/jeffschenck/authorizesauce

기본 거래 (AIM API), 저장 카드 (CIM API) 및 반복 지불 (ARB API)을 처리합니다. 완전히 문서화되어 있으며 전체 테스트 스위트가 있습니다.

나는 원래 포스터가 오랫동안 계속되었지만 다른 사람이 지불 처리의 고통을 피하는 데 도움이되면 너무 기뻐할 것입니다.

편집하다: 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]

더 많은 옵션, 요청 방법, 구문 분석에 대한 응답의 뉘앙스가 있습니다 ... 나는 b/c라고 가정합니다. A 안에 AIM 의지합니다 advanced 모든 Authorize.net 옵션을 사용할 수 있습니다.

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

귀하의 질문이 LIB가 가장 좋은 것이라는 것을 알고 있습니다. 글쎄, API 위에 API를 통과하려고 시도하는 대신 특정 요구 사항에 대한 약간의 임시 요청 및 응답을 구현하는 것이 가장 쉬울 수 있습니다.

항상 Paython이 있습니다 : https://github.com/abunsen/paython

현재 5 개 이상의 결제 게이트웨이를 지원합니다.

  1. authorize.net
  2. 첫 번째 데이터/링크 포인트
  3. 혁신적인 게이트웨이 (Intuit에서)
  4. plugnpay
  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')

나는 최근에 Authorize.net의 기능을 지원하는 것을 찾지 못한 후 Python 및 Authorize.net 에이 API를 작성했습니다.

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

내 경험에서 훌륭하게 작동하지만 프로젝트를 위해서는 ARB 등이 아닌 인증 만 필요했습니다 ... 시도해보십시오. 지금까지 찾은 최고의 패키지.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top