Python/django : 어떤 인증 .net 라이브러리를 사용해야합니까?
-
08-07-2019 - |
문제
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 개 이상의 결제 게이트웨이를 지원합니다.
- authorize.net
- 첫 번째 데이터/링크 포인트
- 혁신적인 게이트웨이 (Intuit에서)
- plugnpay
- 줄무늬
예는 다음과 같습니다.
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를 작성했습니다.
나는 이것이 조금 늦었다는 것을 알고 있지만, 다른 사람들을 돕기를 바랍니다.
나는 최근에왔다 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 등이 아닌 인증 만 필요했습니다 ... 시도해보십시오. 지금까지 찾은 최고의 패키지.