We have an eCommerce site that uses the Paypal API COM object to process credit card transactions. We need to update this to use the First Data/Link Point API COM object. This is currently done via a server-side Javascript classic asp (NO [login to view URL]).
Additionally, the First Data/Link Point API returns an xml response. This needs to be parsed to mimic the name/value pair returned by the PayPal API. Due testing limitations, preference will be given to coders local to PDX.
## Deliverables
Link to the PayPal API:
[login to view URL]
(Note: we use and older version and NVP)
Included Files are the First Data/LinkPoint Guide and Code Samples. Samples are VBScript and need to be converted to Javascript.
Code Fragment to be updated
---Start Fragment---
function fCyberObj()
{
oCyber = [login to view URL]("[login to view URL]");
return oCyber;
}
function fCCAuth(OrderID, Amount, CardType, CardNumber, ExpDate, Name, TESTMODE,horder)
{
var hResult = new classCCRet();
[login to view URL](OrderID);
[login to view URL](Amount);
[login to view URL](CardType);
[login to view URL](CardNumber);
[login to view URL](ExpDate);
[login to view URL](Name);
try
{
Amount = ([login to view URL](Amount*100)/100);
if( "NaN"==(""+Amount))
{
[login to view URL]("PMTERR_PARAMETER");
return hResult;
}
var locCardNumber="";
var locCardType=CardType;
var context;
[login to view URL]("Creating oCyber");
var oCyber = fCyberObj();
[login to view URL]("oCyber Created:"+oCyber);
locCardNumber=String(CardNumber);
// testing
var host = "[login to view URL]";
// production
//var host = "[login to view URL]";
// host port
var port = 443;
// transaction timeout in seconds
var timeOut = 45;
var proxyAddress = "";
var proxyPort = 0;
var proxyLogon = "";
var proxyPassword = "";
// Specify whether exception trace is enabled or not. when ON, response will also have entire stack
// trace of exception if any. Default is OFF.
var traceEnabled = "OFF";
// DO NOT CHANGE THE FOLLOWING 4 LEGACY PARAMS
var doNotChangeParam1 = "";
var doNotChangeParam2 = "";
var doNotChangeParam3 = "";
var doNotChangeParam4 = true;
[login to view URL](host, port, timeOut, proxyAddress, proxyPort, proxyLogon, proxyPassword, traceEnabled, doNotChangeParam1, doNotChangeParam2, doNotChangeParam3, doNotChangeParam4);
[login to view URL]("locCardNumber:"+locCardNumber);
[login to view URL]("Adding Parameters");
// now build the parameter list that we will pass in. Start with the constant data
parmList = "TRXTYPE=S&TENDER=C&VENDOR=xxxxxxxxx&USER=xxxxx&PWD=xxxxx&PARTNER=xxxxx"
parmList = parmList + "&ACCT=" + String(locCardNumber).replace(/ |\D/g,"");
parmList = parmList + "&EXPDATE=" + String(ExpDate).replace(/\//,"");
parmList = parmList + "&AMT=" + Amount;
parmList = parmList + "&COMMENT1=" + String(OrderID);
parmList = parmList + "&COMMENT2=" + Name;
// the following is no longer used
// [login to view URL]("INVNUM",String(OrderID));
[login to view URL]("ParametersAdded");
var ResultString;
try
{
ResultString = [login to view URL](parmList,OrderID);
}
catch (e)
{
[login to view URL]([login to view URL]("failed in SubmitTransaction"));
[login to view URL]([login to view URL] + " parmList is " + parmList);
}
[login to view URL]("ResultString:"+ResultString);
oCyber = null;
eval("var hRes={"+[login to view URL](/\=/g,":'").replace(/\&/g,"',")+"'}"); //split("&");
// According to the PayPall documentation, return code 30 occurs if two SubmitTransaction
// calls are made with the same requestID (OrderID). Unfortunately, testing shows that 0
// is returned along with the string DUPLICATE=1. The only instance where this should
// occur is if we actually get a duplicate purchase due to pressing the buy button
// multiple times, cosmic rays, etc. Since the values from the first request are
// returned with the duplicate error, we should be able to just treat it like everything
// worked.
if([login to view URL] == "0" || [login to view URL] == "30")
{
[login to view URL]("Sale");
[login to view URL]("success");
}
else
{
[login to view URL]("");
[login to view URL](String(hRes["RESPMSG"]));
}
[login to view URL](String(hRes["AUTHCODE"]));
[login to view URL](String([login to view URL]));
[login to view URL](String(hRes["RESULT"]));
[login to view URL](String(hRes["RESPMSG"]));
[login to view URL](String(hRes["PNREF"]));
[login to view URL](OrderID);
[login to view URL](Amount);
[login to view URL](CardType);
[login to view URL] = locCardNumber+"";
[login to view URL](CardNumber);
[login to view URL](ExpDate);
[login to view URL](Name);
hResult.fResultString= ResultString;
}
catch(e)
{
[login to view URL]([login to view URL]("really failed here"));
[login to view URL]([login to view URL] + " ResultString is " + ResultString);
}
return hResult;
}
---End Fragment