I have the following web service call:
<cfinvoke webservice="#application.capsRemote#card.cfc?wsdl" method="purchase" returnVariable="retpurchase" refreshwsdl="true">
<cfinvokeargument name="iCustomer" value="#session.user.customerCode#">
<cfinvokeargument name="iAmountCents" value="#form.cc_amount*100#">
<cfinvokeargument name="sCard" value="#form.cc_number#">
<cfinvokeargument name="sExpiry" value="#form.cc_expiry#">
<cfinvokeargument name="sType" value="PAYMENT">
<cfinvokeargument name="sSecurityNo" value="#form.cc_securitycode#">
</cfinvoke>
This calls the following web service:
<cffunction name="purchase" access="remote" returntype="struct" hint="This function wraps calls to the purchase method of the Buyline OCX at Compass">
<cfargument name="iCustomer" required="yes" type="string">
<cfargument name="iAmountCents" required="yes" type="string">
<cfargument name="sCard" required="yes" type="string">
<cfargument name="sExpiry" required="yes" type="string" hint="Format yyyymm">
<cfargument name="sType" required="yes" type="string">
<cfargument name="sSecurityNo" required="yes" type="string">
<cfargument name="sMerchant" required="no" default="F" type="string">
<cfargument name="sBuylineUser" required="no" default="FreenetWeb" type="string">
<cfscript>
var Status = "";
var StatusText = "";
var ResponseSequence = "";
var ResponseCode = "";
var ResponseText = "";
var stReturn = StructNew();
</cfscript>
<cftry>
<cfobject type="COM" action="Create" name="oBuyline" class="ctlBuyline.Buyline">
<cfscript>
// Create an instance of the OCX
oBuyline.Server = variables.sBuylineServer;
oBuyline.RemotePort = variables.nBuylineRemoteport;
oBuyline.UserName = variables.sBuylineUsername;
oBuyline.Password = variables.sBuylinePassword;
oBuyline.Timeout = variables.sBuylineTimeout;
</cfscript>
<cfscript>
// calling the purchase method, call does not contain the sSBank argument
Status = oBuyline.Purchase(arguments.sMerchant,arguments.iCustomer,arguments.iAmountCents,arguments.sCard,arguments.sExpiry,arguments.sBuylineUser,arguments.sType,0,arguments.sSecurityNo);
switch(Status)
{
case "0":
StatusText = oBuyline.ResponseText;
break;
case "1":
StatusText = "Successful transaction";
break;
case "2":
StatusText = oBuyline.ResponseText;
break;
default:
StatusText = "CAPS: Unknown issue with communicating with Buyline";
}
// response from the purchase method
ResponseSequence = oBuyline.Sequence;
ResponseCode = oBuyline.ResponseCode;
if (ResponseCode neq "0"){
ResponseText = "Declined (" & Replace(oBuyline.ResponseText, "ERROR~~", "") & ")";
} else {
ResponseText = "Approved";
}
// set return values
stReturn.Status = Status;
stReturn.StatusText = StatusText;
stReturn.ResponseSequence = ResponseSequence;
stReturn.ResponseCode = ResponseCode;
stReturn.ResponseText = ResponseText;
if (sMerchant eq "T") {
stReturn.MerchantId = "TEST555555";
} else {
stReturn.MerchantId = "1111111";
}
//
return stReturn;
</cfscript>
<cfcatch type="any"><!--- catch code ---></cfcatch>
</cftry>
However, I get the following error:
Web service operation purchase with parameters {sSecurityNo={111},iAmountCents={100.0},sExpiry={201310},sCard={1111111111111111},iCustomer={111111},sType={PAYMENT}} cannot be found.
I’ve trolled google and followed up the usual suspects for this type of error, to no avail so far.
Any help hugely appreciated.
While calling through webservice you may need to pass all arguments available in function but in case you want to pass as optional you need to tell ColdFusion to omit it just adding attributes omit= “true”
See below