I am attempting to run a WS operation called CreditCardAuthorization hosted by a credit card processor. After connecting successfully to the webservice, I make this call:
RUN CreditCardAuthorization IN hCCSoap(INPUT cCredentials,
INPUT cApplication,
INPUT cTerm,
INPUT cCard,
INPUT cTrans,
INPUT cAdd,
INPUT cExtended,
OUTPUT cResponse) NO-ERROR.
Progress is creating the SOAP envelope with the first few elements looking like this:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CreditCardAuthorization>
<credentials>
<AccountID>XXX</AccountID>
<AccountToken>XXX</AccountToken>
<AcceptorID>XXX</AcceptorID>
</credentials>
<application>
<ApplicationID>XXX</ApplicationID>
<ApplicationName>XXX</ApplicationName>
<ApplicationVersion>XXX</ApplicationVersion>
</application>
However the processor is telling me my operation is failing because I need the webservice URL added as an attribute to the <CreditCardAuthorization> element, like this:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CreditCardAuthorization xmlns="https://transaction.ccprocessor.com">
<credentials>
<AccountID>XXX</AccountID>
<AccountToken>XXX</AccountToken>
<AcceptorID>XXX</AcceptorID>
</credentials>
<application>
<ApplicationID>XXX</ApplicationID>
<ApplicationName>XXX</ApplicationName>
<ApplicationVersion>XXX</ApplicationVersion>
</application>
But since Progress creates the CreditCardAuthorization element as part of the SOAP wrapper, I can't control it with the SAX Writer. Does anyone know how I can get Progress to do this? A couple of people have suggested that this is a deficiency in the WSDL, but I can't find a place to add it there. I also added it as the TargetNameSpace and ServiceNameSpace parameters on the CONNECT statement, to no avail.
RUN CreditCardAuthorization IN hCCSoap(INPUT cCredentials,
INPUT cApplication,
INPUT cTerm,
INPUT cCard,
INPUT cTrans,
INPUT cAdd,
INPUT cExtended,
OUTPUT cResponse) NO-ERROR.
Progress is creating the SOAP envelope with the first few elements looking like this:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CreditCardAuthorization>
<credentials>
<AccountID>XXX</AccountID>
<AccountToken>XXX</AccountToken>
<AcceptorID>XXX</AcceptorID>
</credentials>
<application>
<ApplicationID>XXX</ApplicationID>
<ApplicationName>XXX</ApplicationName>
<ApplicationVersion>XXX</ApplicationVersion>
</application>
However the processor is telling me my operation is failing because I need the webservice URL added as an attribute to the <CreditCardAuthorization> element, like this:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CreditCardAuthorization xmlns="https://transaction.ccprocessor.com">
<credentials>
<AccountID>XXX</AccountID>
<AccountToken>XXX</AccountToken>
<AcceptorID>XXX</AcceptorID>
</credentials>
<application>
<ApplicationID>XXX</ApplicationID>
<ApplicationName>XXX</ApplicationName>
<ApplicationVersion>XXX</ApplicationVersion>
</application>
But since Progress creates the CreditCardAuthorization element as part of the SOAP wrapper, I can't control it with the SAX Writer. Does anyone know how I can get Progress to do this? A couple of people have suggested that this is a deficiency in the WSDL, but I can't find a place to add it there. I also added it as the TargetNameSpace and ServiceNameSpace parameters on the CONNECT statement, to no avail.