I am using suds client for WSDL in our project.
i have this code .
sudsclient = sudsClient(settings.WSDL_URL)
values = {
"MerchantCode": settings.YP_MERCHANT_CODE,
"MerchantReference": str(reference_id),
"TransactionType":settings.YP_TRANSACTION_TYPE,
"Amount":int(charged),
"CurrencyCode":client.currency,
"CardHolderName":str(form.cleaned_data['name_on_card']),
"CardNumber": str(form.cleaned_data['card_number']),
"ExpiryMonth":int(form.cleaned_data['exp_month']),
"ExpiryYear":int(form.cleaned_data['exp_year']),
"CardID":0,
"CardSecurityCode":str(form.cleaned_data['security_code']),
"CustomerAccountNumber":"",
"BillNumber":0,
"CardHolderEmail":str(form.cleaned_data['email']),
"ClientIPAddress":get_ip,
"Notes":"OK",
}
response = sudsclient.service.OnlineTransaction(**values)
when i run my program i got this error:
Exception Type: AttributeError
Exception Value:
'NoneType' object has no attribute 'str'
Exception Location: /usr/local/lib/python2.7/dist-packages/suds/sax/document.py in str, line 48
I am sure that my code in my local and test are same.
I think the problem is in the suds
, but i don't have any idea on how to solve it.
Do anyone can help me in my case? thanks in advance ..
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/1/book/save/?csrfmiddlewaretoken=05e5bdb542c3be7515b87e8160c347a0&check_in=2012-04-24&check_out=2012-04-25&no_of_nights=1&quantity=1&product=4&price=900.0&chargedMasterCard=180.0&chargedVisa=90.0&totalcostMasterCard=720.0&totalcostVisa=810.0&totalcost=900.0&charged=10.0&price_rate=1000.0&old_totalcost=1000.0&discount_charged=100.0&first_name=dsnmbmh&last_name=jhbjhb&email=jdlabandero%40agile.com.ph&contact=657879&address=gjkj&no_of_adult=1&no_of_kid=0&memo=&card_type=MasterCard&card_number=40000234234210&security_code=788&name_on_card=ghjk&exp_month=1&exp_year=2012
Django Version: 1.3.1
Python Version: 2.7.1
Installed Applications:
['admin_tools',
'admin_tools.theming',
'admin_tools.menu',
'admin_tools.dashboard',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'django.contrib.admin',
'surebooked.booking',
'surebooked.api',
'surebooked.account_app',
'surebooked.client_app',
'surebooked.product_app',
'surebooked.report_app',
'debug_toolbar',
'billing',
'south',
'paypal.standard.ipn',
'django_extensions',
'cms',
'menus',
'mptt',
'south',
'cms.plugins.text',
'cms.plugins.picture',
'cms.plugins.link',
'cms.plugins.file',
'cms.plugins.snippet',
'cms.plugins.googlemap',
'sekizai',
'django.contrib.admin',
'filer',
'sorl.thumbnail',
'easy_thumbnails',
'cmsplugin_filer_file',
'cmsplugin_filer_folder',
'cmsplugin_filer_image',
'cmsplugin_filer_teaser',
'cmsplugin_filer_video',
'media_tree',
'django_cron']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
'media_tree.middleware.SessionPostMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware')
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/agileone/workspace/surebooked/surebooked/../surebooked/booking/views.py" in booking_save_page
752. response = sudsclient.service.OnlineTransaction(**values)
File "/usr/local/lib/python2.7/dist-packages/suds/client.py" in __call__
542. return client.invoke(args, kwargs)
File "/usr/local/lib/python2.7/dist-packages/suds/client.py" in invoke
595. soapenv = binding.get_message(self.method, args, kwargs)
File "/usr/local/lib/python2.7/dist-packages/suds/bindings/binding.py" in get_message
120. content = self.bodycontent(method, args, kwargs)
File "/usr/local/lib/python2.7/dist-packages/suds/bindings/document.py" in bodycontent
63. p = self.mkparam(method, pd, value)
File "/usr/local/lib/python2.7/dist-packages/suds/bindings/document.py" in mkparam
105. return Binding.mkparam(self, method, pdef, object)
File "/usr/local/lib/python2.7/dist-packages/suds/bindings/binding.py" in mkparam
287. return marshaller.process(content)
File "/usr/local/lib/python2.7/dist-packages/suds/mx/core.py" in process
62. self.append(document, content)
File "/usr/local/lib/python2.7/dist-packages/suds/mx/core.py" in append
73. log.debug('appending parent:\n%s\ncontent:\n%s', parent, content)
File "/usr/lib/python2.7/logging/__init__.py" in debug
1120. self._log(DEBUG, msg, args, **kwargs)
File "/usr/lib/python2.7/logging/__init__.py" in _log
1250. self.handle(record)
File "/usr/lib/python2.7/logging/__init__.py" in handle
1260. self.callHandlers(record)
File "/usr/lib/python2.7/logging/__init__.py" in callHandlers
1300. hdlr.handle(record)
File "/usr/lib/python2.7/logging/__init__.py" in handle
744. self.emit(record)
File "/home/agileone/workspace/surebooked/surebooked/.ve/src/django-debug-toolbar/debug_toolbar/panels/logger.py" in emit
51. 'message': record.getMessage(),
File "/usr/lib/python2.7/logging/__init__.py" in getMessage
328. msg = msg % self.args
File "/usr/local/lib/python2.7/dist-packages/suds/sax/document.py" in __str__
58. return unicode(self).encode('utf-8')
File "/usr/local/lib/python2.7/dist-packages/suds/sax/document.py" in __unicode__
61. return self.str()
File "/usr/local/lib/python2.7/dist-packages/suds/sax/document.py" in str
48. s.append(self.root().str())
Exception Type: AttributeError at /1/book/save/
Exception Value: 'NoneType' object has no attribute 'str'
i really2x don't know why i got this error. Now I got the same error in my local and my production. btw, when i separate the code and try to run. it runs ok.
sudstest.py
#!/usr/bin/env python
import os
from suds.client import Client as abo
WSDL = 'DirectConnect.production.wsdl'
#def test_api():
url = 'file://' + os.path.join(os.path.abspath(os.path.dirname(__file__)), WSDL)
print url
client = abo(url)
data = {
'MerchantCode': 'HELLO',
'MerchantReference': '3252',
'TransactionType': 20,
'Amount': 10,
'CurrencyCode': 'USD',
'CardHolderName': 'RAUL O REVECHE',
'CardNumber': 4005550000000001,
'ExpiryMonth': 5,
'ExpiryYear': 2013,
'CardID': 0,
'CardSecurityCode': 400,
'CustomerAccountNumber': '',
'BillNumber': 0,
'CardHolderEmail': '[email protected]',
'ClientIPAddress': 'http://127.0.0.1:8000/',
'Notes': 'This is test',
}
print data
result = client.service.OnlineTransaction(**data)
print result.ResponseDescription