def getClient(): try: code = Element('UserName').setText('admin') pwd = Element('PassWord').setText('123abc') en = ('RequestSOAPHeader', 'http://com.appScan.cxf/') e = Element('auth', ns=en) e.insert(code) e.insert(pwd) c = Client(url, cache=None) c.set_options(soapheaders=e) return c except urllib2.URLError: #no internet connection print "[*]no internet connection. try again[*]" time.sleep(2) getClient() except TransportError: #HTTP Error 500: Internal Server Error print "[*]Auth failed. try again[*]" time.sleep(2) getClient() except (KeyboardInterrupt) as Exit: print("[*]\nExit[*]") sys.exit(0) except Exception as e: print str(e) sys.exit(0)
def testWSDL(wsdlURL): replyURL = 'http://wsamplification.appspot.com/?webservice=' + wsdlURL try: client = Client(wsdlURL) wsans = ('wsa', 'http://schemas.xmlsoap.org/ws/2004/08/addressing') wsaReply = Element('ReplyTo', ns=wsans) wsaAddress = Element('Address', ns=wsans).setText(replyURL) wsaReply.insert(wsaAddress) except: print 'Moving on...' return try: client.set_options(soapheaders=wsaReply) #impl = getattr(client.service, 'submitOrderNoAck') #print impl() for method in client.wsdl.services[0].ports[0].methods.values(): print method.name result = getattr(client.service, method.name)() #print result() except suds.WebFault as detail: print 'Invoking method failed' print client except: print 'Derping...' print client
def payuMeaGetTransactionApiCall(self, args): #urlToQuery = 'https://secure.payu.co.za/service/PayUAPI?wsdl' if (args['store']['environment'] == 'staging'): urlToQuery = 'https://staging.payu.co.za/service/PayUAPI?wsdl' else: urlToQuery = 'https://secure.payu.co.za/service/PayUAPI?wsdl' plugin = MyPlugin() client = Client(urlToQuery, plugins=[plugin]) #client = Client(urlToQuery, faults=False) #------------------------------------- CREATING CUSTOM HEADER-------------------------------------- wsse = ( 'wsse', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' ) mustAttributeSecurity = Attribute('SOAP-ENV:mustUnderstand', '1') addressAttributeSecurity = Attribute( 'xmlns:wsse', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' ) AttributeUsernameToken1 = Attribute('wsu:Id', 'UsernameToken-9') addressAttributeUsernameToken = Attribute( 'xmlns:wsu', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd' ) addressAttributePassword = Attribute( 'Type', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText' ) msgUsername = Element('Username', ns=wsse).setText(args['store']['soapUsername']) msgPassword = Element('Password', ns=wsse).setText( args['store']['soapPassword']).append(addressAttributePassword) msgUsernameToken = Element('UsernameToken', ns=wsse) msgUsernameToken.append(AttributeUsernameToken1) msgUsernameToken.append(addressAttributeUsernameToken) msgUsernameToken.insert(msgPassword).insert(msgUsername) msgSecurity = Element('Security', ns=wsse).addPrefix( p='SOAP-ENC', u='http://www.w3.org/2003/05/soap-encoding') msgSecurity.append(mustAttributeSecurity) msgSecurity.append(addressAttributeSecurity) msgSecurity.insert(msgUsernameToken) client.set_options(soapheaders=[msgSecurity]) #------------------------------------- CREATING SOAP CALL DETAILS HERE-------------------------------------- transaction = {} transaction['Api'] = 'ONE_ZERO' transaction['Safekey'] = args['store']['safekey'] transaction['AdditionalInformation'] = args['additionalInformation'] #------------------------------------- DOING SOAP CALL HERE-------------------------------------- try: setTransaction = client.service.getTransaction(**transaction) except Exception, e: print_exc()
def _build_mouser_header(self): header_partnerid = Element('PartnerID').setText(self._api_key) header_accountinfo = Element('AccountInfo') header_accountinfo.insert(header_partnerid) header = Element('MouserHeader') header.insert(header_accountinfo) header.set('xmlns', 'http://api.mouser.com/service') return header
def __init__(self, url, username, password): self._client = Client(url) wsse_ns = ("wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd") mustAttribute = Attribute('SOAP-ENV:mustUnderstand', '1') security_header = Element("Security", ns=wsse_ns).append(mustAttribute) message_header = Element("UsernameToken", ns=wsse_ns) message_header.insert(Element("Username", ns=wsse_ns).setText(username)) message_header.insert(Element("Password", ns=wsse_ns).setText(password)) security_header.insert(message_header) self._client.set_options(soapheaders = security_header) self.mappingUtils = MappingUtils(self._client)
def call_service(action, address=JMMServer_Address, port=JMMServer_Port): binding.envns = ('s', 'http://www.w3.org/2003/05/soap-envelope') client = Client( format_url(address, port), headers={'Content-Type': 'application/soap+msbin1'}, transport=HttpAuthenticatedBinary(), plugins=[BinaryMessagePlugin()] ) ssnns = ('a', 'http://www.w3.org/2005/08/addressing') element_action = Element('Action', ns=ssnns).setText('http://tempuri.org/IJMMServer/{0}'.format(action)) element_action.set('s:mustUnderstand', "1") element_reply_to = Element('ReplyTo', ns=ssnns) element_address = Element('Address', ns=ssnns).setText('http://www.w3.org/2005/08/addressing/anonymous') element_reply_to.insert(element_address, 0) element_to = Element('To', ns=ssnns).setText('http://{0}:{1}/JMMServerBinary'.format(address, port)) element_to.set('s:mustUnderstand', "1") client.set_options(soapheaders=(element_action, element_reply_to, element_to)) func = getattr(client.service, action) func()
def json_response(num_dni): objServicio = ServicioReniec.objects.get(id=1) ns = objServicio.namespace # 'http://tempuri.org/' url = objServicio.urlwsdlservice # 'http://ws_min.minsa.gob.pe/wsreniecmq/serviciomq.asmx?wsdl' app = objServicio.appservice # 'WAWARED' usuario = objServicio.userservice # '05353734' clave = objServicio.passservice # '/*_waw@r3d+$' tem_ns = ('tem', ns) cliente = suds.client.Client(url) h_app = Element('app', ns=tem_ns) h_usuario = Element('usuario', ns=tem_ns) h_clave = Element('clave', ns=tem_ns) h_app.setText(app) h_usuario.setText(usuario) h_clave.setText(clave) h_credentialmq = Element('Credencialmq', ns=tem_ns) h_credentialmq.insert(h_app) h_credentialmq.insert(h_usuario) h_credentialmq.insert(h_clave) cliente.set_options(soapheaders=h_credentialmq) resultado = cliente.service.obtenerDatosCompletos(num_dni) return JsonResponse(resultado[0], safe=False)
def _build_security_header(self, username, password): """ Alternative method for building security header elements to use in the SOAP calls. This method is *not* being used currently, but is left here for reference. """ usernameElement = Element('Username', ns=WSSE_NS) usernameElement.setText(username) passwordElement = Element('Password', ns=WSSE_NS) passwordElement.setText(password) passwordElement.append(Attribute('Type', WSU_UN_URI)) userCreds = Element('UsernameToken', ns=WSSE_NS) userCreds.append(Attribute('wsu:Id', 'UsernameToken-9')) userCreds.append(Attribute('xmlns:wsu', WSSE_URI)) userCreds.insert(usernameElement) userCreds.insert(passwordElement) security = Element('Security', ns=WSSE_NS) security.addPrefix(p='SOAP-ENC', u=SOAP_ENC_URI) security.append(Attribute('SOAP-ENV:mustUnderstand', '1')) security.append(Attribute('xmlns:wsse', WSSE_URI)) security.insert(userCreds) return security
def __init__(self, url, username, password): self._client = Client(url) wsse_ns = ( "wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" ) mustAttribute = Attribute('SOAP-ENV:mustUnderstand', '1') security_header = Element("Security", ns=wsse_ns).append(mustAttribute) message_header = Element("UsernameToken", ns=wsse_ns) message_header.insert( Element("Username", ns=wsse_ns).setText(username)) message_header.insert( Element("Password", ns=wsse_ns).setText(password)) security_header.insert(message_header) self._client.set_options(soapheaders=security_header) self.mappingUtils = MappingUtils(self._client)
from suds.client import Client as SudsClient from suds.sax.element import Element """ default "UsernameToken" in suds produces "Password" element without a "Type" field https://fedorahosted.org/suds/ticket/402 so need to build it manually, specifying namespaces """ wsse = ('wsse', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd') security = Element('Security', ns=wsse) usernametoken = Element('UsernameToken', ns=wsse) uname = Element('Username', ns=wsse).setText('myusername') passwd = Element('Password', ns=wsse).setText('mypassword') passwd.set('Type', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText') usernametoken.insert(uname) usernametoken.insert(passwd) security.insert(usernametoken) url = 'http://127.0.0.1:5000/soap/someservice?wsdl' client = SudsClient(url=url, cache=None) client.set_options(soapheaders=security) r = client.service.echo(str='hello world', cnt=3) print(r)
""" default "UsernameToken" in suds produces "Password" element without a "Type" field https://fedorahosted.org/suds/ticket/402 so need to build it manually, specifying namespaces """ wsse = ( 'wsse', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' ) security = Element('Security', ns=wsse) usernametoken = Element('UsernameToken', ns=wsse) uname = Element('Username', ns=wsse).setText('myusername') passwd = Element('Password', ns=wsse).setText('mypassword') passwd.set( 'Type', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText' ) usernametoken.insert(uname) usernametoken.insert(passwd) security.insert(usernametoken) url = 'http://127.0.0.1:5000/soap/someservice?wsdl' client = SudsClient(url=url, cache=None) client.set_options(soapheaders=security) r = client.service.echo(str='hello world', cnt=3) print(r)
'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd' ) addressAttributePassword = Attribute( 'Type', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText' ) msgUsername = Element('Username', ns=wsse).setText(args['store']['soapUsername']) msgPassword = Element('Password', ns=wsse).setText( args['store']['soapPassword']).append(addressAttributePassword) msgUsernameToken = Element('UsernameToken', ns=wsse) msgUsernameToken.append(AttributeUsernameToken1) msgUsernameToken.append(addressAttributeUsernameToken) msgUsernameToken.insert(msgPassword).insert(msgUsername) msgSecurity = Element('Security', ns=wsse).addPrefix( p='SOAP-ENC', u='http://www.w3.org/2003/05/soap-encoding') msgSecurity.append(mustAttributeSecurity) msgSecurity.append(addressAttributeSecurity) msgSecurity.insert(msgUsernameToken) client.set_options(soapheaders=[msgSecurity]) #------------------------------------- CREATING SOAP CALL DETAILS HERE-------------------------------------- transaction = {} transaction['Api'] = 'ONE_ZERO' transaction['Safekey'] = args['store']['safekey'] transaction['TransactionType'] = 'PAYMENT' transaction['AdditionalInformation'] = args['additionalInformation']
def payuMeaGetTransactionApiCall(self, args): if (args['store']['environment'] == 'prod'): urlToQuery = 'https://secure.payu.co.za/service/PayUAPI?wsdl' else: urlToQuery = 'https://staging.payu.co.za/service/PayUAPI?wsdl' plugin = MyPlugin() client = Client(urlToQuery, plugins=[plugin]) # client = Client(urlToQuery, faults=False) # ------------------------------------- CREATING CUSTOM HEADER-------------------------------------- wsse = ('wsse', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd') mustAttributeSecurity = Attribute('SOAP-ENV:mustUnderstand', '1') addressAttributeSecurity = Attribute('xmlns:wsse', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd') AttributeUsernameToken1 = Attribute('wsu:Id', 'UsernameToken-9') addressAttributeUsernameToken = Attribute('xmlns:wsu', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd') addressAttributePassword = Attribute('Type', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText') msgUsername = Element('Username', ns=wsse).setText(args['store']['soapUsername']) msgPassword = Element('Password', ns=wsse).setText(args['store']['soapPassword']).append( addressAttributePassword) msgUsernameToken = Element('UsernameToken', ns=wsse) msgUsernameToken.append(AttributeUsernameToken1) msgUsernameToken.append(addressAttributeUsernameToken) msgUsernameToken.insert(msgPassword).insert(msgUsername) msgSecurity = Element('Security', ns=wsse).addPrefix(p='SOAP-ENC', u='http://www.w3.org/2003/05/soap-encoding') msgSecurity.append(mustAttributeSecurity) msgSecurity.append(addressAttributeSecurity) msgSecurity.insert(msgUsernameToken) client.set_options(soapheaders=[msgSecurity]) # ------------------------------------- CREATING SOAP CALL DETAILS HERE-------------------------------------- transaction = {} transaction['Api'] = 'ONE_ZERO' transaction['Safekey'] = args['store']['safekey'] transaction['AdditionalInformation'] = args['additionalInformation'] # ------------------------------------- DOING SOAP CALL HERE-------------------------------------- try: setTransaction = client.service.getTransaction(**transaction) except Exception as e: print_exc() s = plugin.last_received_raw transactionState = '' successful_status = False if s: dic = xmltodict.parse(str(s[2:-1])) dic['soap:Envelope']['soap:Body']['ns2:getTransactionResponse']['return']['displayMessage'] payUReference = dic['soap:Envelope']['soap:Body']['ns2:getTransactionResponse']['return']['payUReference'] successful_status = dic['soap:Envelope']['soap:Body']['ns2:getTransactionResponse']['return']['successful'] transactionState = dic['soap:Envelope']['soap:Body']['ns2:getTransactionResponse']['return'][ 'transactionState'] if transactionState == 'SUCCESSFUL' and successful_status: return dic['soap:Envelope']['soap:Body']['ns2:getTransactionResponse']['return'] elif transactionState == 'AWAITING_PAYMENT': return dic['soap:Envelope']['soap:Body']['ns2:getTransactionResponse']['return'] else: return False
def payuMeaSetTransactionApiCall(self, args): if (args['store']['environment'] == 'prod'): urlToQuery = 'https://secure.payu.co.za/service/PayUAPI?wsdl' else: urlToQuery = 'https://staging.payu.co.za/service/PayUAPI?wsdl' try: plugin = MyPlugin() client = Client(urlToQuery, plugins=[plugin]) except Exception as e: return "/shop/unsuccessful" # ------------------------------------- CREATING CUSTOM HEADER-------------------------------------- wsse = ('wsse', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd') mustAttributeSecurity = Attribute('SOAP-ENV:mustUnderstand', '1') addressAttributeSecurity = Attribute('xmlns:wsse', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd') AttributeUsernameToken1 = Attribute('wsu:Id', 'UsernameToken-9') addressAttributeUsernameToken = Attribute('xmlns:wsu', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd') addressAttributePassword = Attribute('Type', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText') msgUsername = Element('Username', ns=wsse).setText(args['store']['soapUsername']) msgPassword = Element('Password', ns=wsse).setText(args['store']['soapPassword']).append( addressAttributePassword) msgUsernameToken = Element('UsernameToken', ns=wsse) msgUsernameToken.append(AttributeUsernameToken1) msgUsernameToken.append(addressAttributeUsernameToken) msgUsernameToken.insert(msgPassword).insert(msgUsername) msgSecurity = Element('Security', ns=wsse).addPrefix(p='SOAP-ENC', u='http://www.w3.org/2003/05/soap-encoding') msgSecurity.append(mustAttributeSecurity) msgSecurity.append(addressAttributeSecurity) msgSecurity.insert(msgUsernameToken) client.set_options(soapheaders=[msgSecurity]) # ------------------------------------- CREATING SOAP CALL DETAILS HERE-------------------------------------- transaction = {} transaction['Api'] = 'ONE_ZERO' transaction['Safekey'] = args['store']['safekey'] transaction['TransactionType'] = 'PAYMENT' transaction['AdditionalInformation'] = args['additionalInformation'] transaction['Basket'] = args['basket'] transaction['Customer'] = args['customer'] # ------------------------------------- DOING SOAP CALL HERE-------------------------------------- try: setTransaction = client.service.setTransaction(**transaction) except Exception as e: print_exc() s = plugin.last_received_raw dic = xmltodict.parse(str(s[2:-1])) response = dic['soap:Envelope']['soap:Body']['ns2:setTransactionResponse']['return'] if response['successful'] == 'true': number = response['payUReference'] if (args['store']['environment'] == 'prod'): url = 'https://secure.payu.co.za/rpp.do' + '?PayUReference=' + str(number) else: url = 'https://staging.payu.co.za/rpp.do' + '?PayUReference=' + str(number) else: error_message = response['resultMessage'] failuer = response['pointOfFailure'] resultCode = response['resultCode'] status = '%s - %s', (failuer, resultCode) return request.render('website.http_error', {'status_code': status, 'status_message': error_message}) return url
def payuMeaDoTransactionApiCall(args): urlToQuery = 'https://secure.payu.co.za/service/PayUAPI?wsdl' if (args['store']['environment'] == 'staging') : urlToQuery = 'https://staging.payu.co.za/service/PayUAPI?wsdl' client = Client(urlToQuery, faults=False) # print client # Logging: #logging.basicConfig(level=logging.DEBUG) #handler = logging.StreamHandler(sys.stderr) #logger = logging.getLogger('suds.transport.http') #logger.setLevel(logging.DEBUG), handler.setLevel(logging.DEBUG) #logger.addHandler(handler) # class OutgoingFilter(logging.Filter): # def filter(self, record): # return record.msg.startswith('sending:') # handler.addFilter(OutgoingFilter()) #------------------------------------- CREATING CUSTOM HEADER-------------------------------------- wsse = ('wsse','http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd') mustAttributeSecurity = Attribute('SOAP-ENV:mustUnderstand', '1') addressAttributeSecurity = Attribute('xmlns:wsse', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd') AttributeUsernameToken1 = Attribute('wsu:Id','UsernameToken-9') addressAttributeUsernameToken = Attribute('xmlns:wsu','http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd') addressAttributePassword = Attribute('Type','http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText') msgUsername = Element('Username', ns=wsse).setText(args['store']['soapUsername']) msgPassword = Element('Password', ns=wsse).setText(args['store']['soapPassword']).append(addressAttributePassword) msgUsernameToken = Element('UsernameToken', ns=wsse) msgUsernameToken.append(AttributeUsernameToken1) msgUsernameToken.append(addressAttributeUsernameToken) msgUsernameToken.insert(msgPassword).insert(msgUsername) msgSecurity = Element('Security', ns=wsse).addPrefix(p='SOAP-ENC', u='http://www.w3.org/2003/05/soap-encoding') msgSecurity.append(mustAttributeSecurity) msgSecurity.append(addressAttributeSecurity) msgSecurity.insert(msgUsernameToken) client.set_options(soapheaders=[msgSecurity]) #------------------------------------- CREATING SOAP CALL DETAILS HERE-------------------------------------- transaction = {} transaction['Api'] = 'ONE_ZERO'; transaction['Safekey'] = args['store']['safekey']; transaction['TransactionType'] = 'FINALIZE'; transaction['AdditionalInformation'] = args['additionalInformation'] transaction['Basket'] = args['basket'] #transaction['Customer'] = args['customer'] #------------------------------------- DOING SOAP CALL HERE-------------------------------------- try: setTransaction = client.service.doTransaction(** transaction) except Exception, e: print "----------------" print 'type is:', e.__class__.__name__ print_exc() print "----------------"