17

おそらくCIMを使用して、サブスクリプションの支払いにauthorize.netの統合が必要です。要件は単純です-いくつかの異なる価格ポイントで、定期的な毎月の支払い。顧客のクレジットカード情報はauthorize.netに保存されます。

かなりの数のライブラリとコードスニペットがありますが、どれが最適かについての推奨事項を探しています。

  • Satchmoは私が必要としている以上のようで、複雑に見えます。
  • Django-Bursarは私が必要としているもののようですが、アルファ版としてリストされています。
  • adroll /authorizeライブラリもかなり良さそうです。
  • CIM XML APIはそれほど悪くはありませんが、直接接続できます。

そして、他にもかなりの数のコードスニペットがあります。

私のかなり単純な要件を考えると、現時点で最良の選択は何ですか?

4

6 に答える 6

16

簡単に言えば、既存のソリューションはどれも私のニーズを満たしていませんでした。それらは、メンテナンスされていない、コメントされていない、テストされていない、または保存されたカードがないかのいずれかでした。もちろん、私は独自のソリューションを構築し、それをオープンソース化しました。

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

基本的なトランザクション(AIM API)、保存されたカード(CIM API)、および定期的な支払い(ARB API)を処理します。それは完全に文書化されており、完全なテストスイートがあります。

元のポスターはずっと前に移動したと思いますが、それが他の誰かが支払い処理の苦痛の一部を回避するのを助けることができれば、私は大喜びするでしょう。

于 2012-08-18T08:16:19.037 に答える
9

編集:https ://github.com/agiliq/merchant/blob/master/billing/gateways/authorize_net_gateway.py はかなり見栄えがよく、まだ試していません。

編集:[authorize.netを使用する次のプロジェクトについては、詳しく見ていきます:http: //github.com/zen4ever/django-authorizenetかなり見栄えがします。ただし、定期的な支払いはサポートされていないと思います。]

過去に、私はほとんど1回限りの実装を行いませんでした。

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 Ainは、authorize.netオプションのすべてが利用可能であることをAIM意味すると思います。advanced

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

私はあなたの質問がどのlibが最良かということを知っています..まあ、APIの上にAPIを調べようとするよりも、特定の要件に対して独自のアドホックな要求と応答を実装する方が簡単かもしれません。

于 2010-03-29T23:20:34.767 に答える
6

Paythonは常にあります:https ://github.com/abunsen/Paython

現在、5つ以上の支払いゲートウェイをサポートしています。

  1. Authorize.net
  2. 最初のデータ/リンクポイント
  3. 革新的なゲートウェイ(intuitから)
  4. 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')
于 2011-05-10T00:41:59.393 に答える
3

私は最近、Authorize.netのすべての機能をサポートするAPIを見つけられなかったため、PythonとAuthorize.net用にこのAPIを作成しました。

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

于 2013-06-13T07:21:46.933 に答える
1

その価値については、adrollauthorizeライブラリを使用することになりました。Paythonとdjango-authorizenetはどちらも面白そうに見えますが、それらをチェックする予定です。

于 2011-08-31T17:50:04.577 に答える
1

これは少し遅いと思いますが、うまくいけば他の人の助けになります。

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などは必要ありませんでした...試してみてください。私がこれまでに見つけた最高のパッケージ。

于 2014-06-26T21:48:05.930 に答える