/* paylidpaylidwsdlBindingProxy.cpp
   Generated by gSOAP 2.8.16 from PaylidService.h

Copyright(C) 2000-2013, Robert van Engelen, Genivia Inc. All Rights Reserved.
The generated code is released under one of the following licenses:
GPL or Genivia's license for commercial use.
This program is released under the GPL with the additional exemption that
compiling, linking, and/or using OpenSSL is allowed.
*/

#include "paylidpaylidwsdlBindingProxy.h"

namespace paylid {

paylidwsdlBindingProxy::paylidwsdlBindingProxy()
{	paylidwsdlBindingProxy_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT);
}

paylidwsdlBindingProxy::paylidwsdlBindingProxy(const struct soap &_soap) : soap(_soap)
{ }

paylidwsdlBindingProxy::paylidwsdlBindingProxy(const char *url)
{	paylidwsdlBindingProxy_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT);
	soap_endpoint = url;
}

paylidwsdlBindingProxy::paylidwsdlBindingProxy(soap_mode iomode)
{	paylidwsdlBindingProxy_init(iomode, iomode);
}

paylidwsdlBindingProxy::paylidwsdlBindingProxy(const char *url, soap_mode iomode)
{	paylidwsdlBindingProxy_init(iomode, iomode);
	soap_endpoint = url;
}

paylidwsdlBindingProxy::paylidwsdlBindingProxy(soap_mode imode, soap_mode omode)
{	paylidwsdlBindingProxy_init(imode, omode);
}

paylidwsdlBindingProxy::~paylidwsdlBindingProxy()
{ }

void paylidwsdlBindingProxy::paylidwsdlBindingProxy_init(soap_mode imode, soap_mode omode)
{	soap_imode(this, imode);
	soap_omode(this, omode);
	soap_endpoint = NULL;
	static const struct Namespace namespaces[] =
{
	{"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope", NULL},
	{"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding", NULL},
	{"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL},
	{"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL},
	{"paylid", "urn:paylidwsdl", NULL, NULL},
	{NULL, NULL, NULL, NULL}
};
	soap_set_namespaces(this, namespaces);
}

void paylidwsdlBindingProxy::destroy()
{	soap_destroy(this);
	soap_end(this);
}

void paylidwsdlBindingProxy::reset()
{	destroy();
	soap_done(this);
	soap_initialize(this);
	paylidwsdlBindingProxy_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT);
}

void paylidwsdlBindingProxy::soap_noheader()
{	this->header = NULL;
}

const SOAP_ENV__Header *paylidwsdlBindingProxy::soap_header()
{	return this->header;
}

const SOAP_ENV__Fault *paylidwsdlBindingProxy::soap_fault()
{	return this->fault;
}

const char *paylidwsdlBindingProxy::soap_fault_string()
{	return *soap_faultstring(this);
}

const char *paylidwsdlBindingProxy::soap_fault_detail()
{	return *soap_faultdetail(this);
}

int paylidwsdlBindingProxy::soap_close_socket()
{	return soap_closesock(this);
}

int paylidwsdlBindingProxy::soap_force_close_socket()
{	return soap_force_closesock(this);
}

void paylidwsdlBindingProxy::soap_print_fault(FILE *fd)
{	::soap_print_fault(this, fd);
}

#ifndef WITH_LEAN
#ifndef WITH_COMPAT
void paylidwsdlBindingProxy::soap_stream_fault(std::ostream& os)
{	::soap_stream_fault(this, os);
}
#endif

char *paylidwsdlBindingProxy::soap_sprint_fault(char *buf, size_t len)
{	return ::soap_sprint_fault(this, buf, len);
}
#endif

int paylidwsdlBindingProxy::getAccountBalance(const char *endpoint, const char *soap_action, std::string terminalID, std::string hmac, struct paylid__getAccountBalanceResponse &_param_1)
{	struct soap *soap = this;
	struct paylid__getAccountBalance soap_tmp_paylid__getAccountBalance;
	if (endpoint)
		soap_endpoint = endpoint;
	if (soap_endpoint == NULL)
		soap_endpoint = "https://www.paylid.com:443/rsl/service.php";
	if (soap_action == NULL)
		soap_action = "urn:paylidwsdl#getAccountBalance";
	soap_begin(soap);
	soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/";
	soap_tmp_paylid__getAccountBalance.terminalID = terminalID;
	soap_tmp_paylid__getAccountBalance.hmac = hmac;
	soap_set_version(soap, 1); /* SOAP1.1 */
	soap_serializeheader(soap);
	soap_serialize_paylid__getAccountBalance(soap, &soap_tmp_paylid__getAccountBalance);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_paylid__getAccountBalance(soap, &soap_tmp_paylid__getAccountBalance, "paylid:getAccountBalance", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_url(soap, soap_endpoint, NULL), soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_paylid__getAccountBalance(soap, &soap_tmp_paylid__getAccountBalance, "paylid:getAccountBalance", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!&_param_1)
		return soap_closesock(soap);
	soap_default_paylid__getAccountBalanceResponse(soap, &_param_1);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	if (soap_recv_fault(soap, 1))
		return soap->error;
	soap_get_paylid__getAccountBalanceResponse(soap, &_param_1, "", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	return soap_closesock(soap);
}

int paylidwsdlBindingProxy::transferFund(const char *endpoint, const char *soap_action, std::string terminalID, std::string toDestination, std::string hmac, struct paylid__transferFundResponse &_param_2)
{	struct soap *soap = this;
	struct paylid__transferFund soap_tmp_paylid__transferFund;
	if (endpoint)
		soap_endpoint = endpoint;
	if (soap_endpoint == NULL)
		soap_endpoint = "https://www.paylid.com:443/rsl/service.php";
	if (soap_action == NULL)
		soap_action = "urn:paylidwsdl#transferFund";
	soap_begin(soap);
	soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/";
	soap_tmp_paylid__transferFund.terminalID = terminalID;
	soap_tmp_paylid__transferFund.toDestination = toDestination;
	soap_tmp_paylid__transferFund.hmac = hmac;
	soap_set_version(soap, 1); /* SOAP1.1 */
	soap_serializeheader(soap);
	soap_serialize_paylid__transferFund(soap, &soap_tmp_paylid__transferFund);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_paylid__transferFund(soap, &soap_tmp_paylid__transferFund, "paylid:transferFund", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_url(soap, soap_endpoint, NULL), soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_paylid__transferFund(soap, &soap_tmp_paylid__transferFund, "paylid:transferFund", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!&_param_2)
		return soap_closesock(soap);
	soap_default_paylid__transferFundResponse(soap, &_param_2);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	if (soap_recv_fault(soap, 1))
		return soap->error;
	soap_get_paylid__transferFundResponse(soap, &_param_2, "", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	return soap_closesock(soap);
}

int paylidwsdlBindingProxy::checkTransferStatus(const char *endpoint, const char *soap_action, std::string terminalID, std::string transactionRef, std::string hmac, struct paylid__checkTransferStatusResponse &_param_3)
{	struct soap *soap = this;
	struct paylid__checkTransferStatus soap_tmp_paylid__checkTransferStatus;
	if (endpoint)
		soap_endpoint = endpoint;
	if (soap_endpoint == NULL)
		soap_endpoint = "https://www.paylid.com:443/rsl/service.php";
	if (soap_action == NULL)
		soap_action = "urn:paylidwsdl#checkTransferStatus";
	soap_begin(soap);
	soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/";
	soap_tmp_paylid__checkTransferStatus.terminalID = terminalID;
	soap_tmp_paylid__checkTransferStatus.transactionRef = transactionRef;
	soap_tmp_paylid__checkTransferStatus.hmac = hmac;
	soap_set_version(soap, 1); /* SOAP1.1 */
	soap_serializeheader(soap);
	soap_serialize_paylid__checkTransferStatus(soap, &soap_tmp_paylid__checkTransferStatus);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_paylid__checkTransferStatus(soap, &soap_tmp_paylid__checkTransferStatus, "paylid:checkTransferStatus", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_url(soap, soap_endpoint, NULL), soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_paylid__checkTransferStatus(soap, &soap_tmp_paylid__checkTransferStatus, "paylid:checkTransferStatus", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!&_param_3)
		return soap_closesock(soap);
	soap_default_paylid__checkTransferStatusResponse(soap, &_param_3);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	if (soap_recv_fault(soap, 1))
		return soap->error;
	soap_get_paylid__checkTransferStatusResponse(soap, &_param_3, "", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	return soap_closesock(soap);
}

int paylidwsdlBindingProxy::directAirTimeTopUp(const char *endpoint, const char *soap_action, std::string terminalID, std::string topupData, std::string hmac, struct paylid__directAirTimeTopUpResponse &_param_4)
{	struct soap *soap = this;
	struct paylid__directAirTimeTopUp soap_tmp_paylid__directAirTimeTopUp;
	if (endpoint)
		soap_endpoint = endpoint;
	if (soap_endpoint == NULL)
		soap_endpoint = "https://www.paylid.com:443/rsl/service.php";
	if (soap_action == NULL)
		soap_action = "urn:paylidwsdl#checkTransferStatus";
	soap_begin(soap);
	soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/";
	soap_tmp_paylid__directAirTimeTopUp.terminalID = terminalID;
	soap_tmp_paylid__directAirTimeTopUp.topupData = topupData;
	soap_tmp_paylid__directAirTimeTopUp.hmac = hmac;
	soap_set_version(soap, 1); /* SOAP1.1 */
	soap_serializeheader(soap);
	soap_serialize_paylid__directAirTimeTopUp(soap, &soap_tmp_paylid__directAirTimeTopUp);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_paylid__directAirTimeTopUp(soap, &soap_tmp_paylid__directAirTimeTopUp, "paylid:directAirTimeTopUp", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_url(soap, soap_endpoint, NULL), soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_paylid__directAirTimeTopUp(soap, &soap_tmp_paylid__directAirTimeTopUp, "paylid:directAirTimeTopUp", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!&_param_4)
		return soap_closesock(soap);
	soap_default_paylid__directAirTimeTopUpResponse(soap, &_param_4);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	if (soap_recv_fault(soap, 1))
		return soap->error;
	soap_get_paylid__directAirTimeTopUpResponse(soap, &_param_4, "", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	return soap_closesock(soap);
}

int paylidwsdlBindingProxy::currentXrate(const char *endpoint, const char *soap_action, std::string terminalID, std::string topupData, std::string hmac, struct paylid__currentXrateResponse &_param_5)
{	struct soap *soap = this;
	struct paylid__currentXrate soap_tmp_paylid__currentXrate;
	if (endpoint)
		soap_endpoint = endpoint;
	if (soap_endpoint == NULL)
		soap_endpoint = "https://www.paylid.com:443/rsl/service.php";
	if (soap_action == NULL)
		soap_action = "urn:paylidwsdl#currentXrate";
	soap_begin(soap);
	soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/";
	soap_tmp_paylid__currentXrate.terminalID = terminalID;
	soap_tmp_paylid__currentXrate.topupData = topupData;
	soap_tmp_paylid__currentXrate.hmac = hmac;
	soap_set_version(soap, 1); /* SOAP1.1 */
	soap_serializeheader(soap);
	soap_serialize_paylid__currentXrate(soap, &soap_tmp_paylid__currentXrate);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_paylid__currentXrate(soap, &soap_tmp_paylid__currentXrate, "paylid:currentXrate", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_url(soap, soap_endpoint, NULL), soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_paylid__currentXrate(soap, &soap_tmp_paylid__currentXrate, "paylid:currentXrate", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!&_param_5)
		return soap_closesock(soap);
	soap_default_paylid__currentXrateResponse(soap, &_param_5);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	if (soap_recv_fault(soap, 1))
		return soap->error;
	soap_get_paylid__currentXrateResponse(soap, &_param_5, "", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	return soap_closesock(soap);
}

int paylidwsdlBindingProxy::getAccount(const char *endpoint, const char *soap_action, std::string terminalID, std::string topupData, std::string hmac, struct paylid__getAccountResponse &_param_6)
{	struct soap *soap = this;
	struct paylid__getAccount soap_tmp_paylid__getAccount;
	if (endpoint)
		soap_endpoint = endpoint;
	if (soap_endpoint == NULL)
		soap_endpoint = "https://www.paylid.com:443/rsl/service.php";
	if (soap_action == NULL)
		soap_action = "urn:paylidwsdl#getAccount";
	soap_begin(soap);
	soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/";
	soap_tmp_paylid__getAccount.terminalID = terminalID;
	soap_tmp_paylid__getAccount.topupData = topupData;
	soap_tmp_paylid__getAccount.hmac = hmac;
	soap_set_version(soap, 1); /* SOAP1.1 */
	soap_serializeheader(soap);
	soap_serialize_paylid__getAccount(soap, &soap_tmp_paylid__getAccount);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_paylid__getAccount(soap, &soap_tmp_paylid__getAccount, "paylid:getAccount", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_url(soap, soap_endpoint, NULL), soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_paylid__getAccount(soap, &soap_tmp_paylid__getAccount, "paylid:getAccount", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!&_param_6)
		return soap_closesock(soap);
	soap_default_paylid__getAccountResponse(soap, &_param_6);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	if (soap_recv_fault(soap, 1))
		return soap->error;
	soap_get_paylid__getAccountResponse(soap, &_param_6, "", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	return soap_closesock(soap);
}

int paylidwsdlBindingProxy::getTrxStatus(const char *endpoint, const char *soap_action, std::string terminalID, std::string topupData, std::string hmac, struct paylid__getTrxStatusResponse &_param_7)
{	struct soap *soap = this;
	struct paylid__getTrxStatus soap_tmp_paylid__getTrxStatus;
	if (endpoint)
		soap_endpoint = endpoint;
	if (soap_endpoint == NULL)
		soap_endpoint = "https://www.paylid.com:443/rsl/service.php";
	if (soap_action == NULL)
		soap_action = "urn:paylidwsdl#getTrxStatus";
	soap_begin(soap);
	soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/";
	soap_tmp_paylid__getTrxStatus.terminalID = terminalID;
	soap_tmp_paylid__getTrxStatus.topupData = topupData;
	soap_tmp_paylid__getTrxStatus.hmac = hmac;
	soap_set_version(soap, 1); /* SOAP1.1 */
	soap_serializeheader(soap);
	soap_serialize_paylid__getTrxStatus(soap, &soap_tmp_paylid__getTrxStatus);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_paylid__getTrxStatus(soap, &soap_tmp_paylid__getTrxStatus, "paylid:getTrxStatus", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_url(soap, soap_endpoint, NULL), soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_paylid__getTrxStatus(soap, &soap_tmp_paylid__getTrxStatus, "paylid:getTrxStatus", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!&_param_7)
		return soap_closesock(soap);
	soap_default_paylid__getTrxStatusResponse(soap, &_param_7);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	if (soap_recv_fault(soap, 1))
		return soap->error;
	soap_get_paylid__getTrxStatusResponse(soap, &_param_7, "", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	return soap_closesock(soap);
}

int paylidwsdlBindingProxy::getSupportedBanks(const char *endpoint, const char *soap_action, std::string terminalID, std::string topupData, std::string hmac, struct paylid__getSupportedBanksResponse &_param_8)
{	struct soap *soap = this;
	struct paylid__getSupportedBanks soap_tmp_paylid__getSupportedBanks;
	if (endpoint)
		soap_endpoint = endpoint;
	if (soap_endpoint == NULL)
		soap_endpoint = "https://www.paylid.com:443/rsl/service.php";
	if (soap_action == NULL)
		soap_action = "urn:paylidwsdl#getSupportedBanks";
	soap_begin(soap);
	soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/";
	soap_tmp_paylid__getSupportedBanks.terminalID = terminalID;
	soap_tmp_paylid__getSupportedBanks.topupData = topupData;
	soap_tmp_paylid__getSupportedBanks.hmac = hmac;
	soap_set_version(soap, 1); /* SOAP1.1 */
	soap_serializeheader(soap);
	soap_serialize_paylid__getSupportedBanks(soap, &soap_tmp_paylid__getSupportedBanks);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_paylid__getSupportedBanks(soap, &soap_tmp_paylid__getSupportedBanks, "paylid:getSupportedBanks", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_url(soap, soap_endpoint, NULL), soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_paylid__getSupportedBanks(soap, &soap_tmp_paylid__getSupportedBanks, "paylid:getSupportedBanks", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!&_param_8)
		return soap_closesock(soap);
	soap_default_paylid__getSupportedBanksResponse(soap, &_param_8);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	if (soap_recv_fault(soap, 1))
		return soap->error;
	soap_get_paylid__getSupportedBanksResponse(soap, &_param_8, "", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	return soap_closesock(soap);
}

} // namespace paylid

/* End of client proxy code */
