LinkPoint Integration with .NET
I was spending some time today integrating LinkPoint into my Credit Card Processing classes into my West Wind Web Store for both the .NET and Fox versions. I’ve integrated a number of providers over the years and working with these Credit Card APIs is always a chore mainly because the documentation for these services is always bad.
LinkPoint has to be among the worst if not the worst I’ve seen.
I used LinkPoint about 10 years ago as my first online Merchant gateway and the configuration and setup and documentation was horrible then and it doesn’t seem like it has improved much since then. The API doesn’t look much different – the same concepts are used except that Linkpoint has add some ‘XML features’ to the interface. Note the quotes.
I find this an interesting business proposition. If you are a provider for an Internet based service, wouldn’t you try to make your product as easy as possible to use for your customers? To attract customers (meaning attracting developers who will have to implement this interface)? To keep support calls down with stupid questions like – ‘what do I need to install platform X?’.
Instead, LinkPoint seems to go out of their way to make their documentation as scattered as possible, not providing you clear documentation on how to install each of the different platform APIs (they support, COM, .NET, C++, PHP, Java and more, but don’t provide clear installation instructions for at least the COM and .NET ones). I downloaded the .NET version of the SDK, but other than the examples, there’s nothing .NET specific in this SDK. Not a word about how to set it up. Yes, I can figure it out, but there are dependencies that you won’t know about until you run your code and get errors!
No – it’s not rocket science and the API itself is not difficult to work with at all, but even so, it took the better part of a day to hook up a generic class front end to their API for both COM (for my VFP framework) and .NET (for the .NET version).
One of the really odd features of this API is the fact that they make you install a third party SSL driver (not for COM, but for .NET and C++). This is not part of an installation but something you must download separately from the Open Source site somewhere. To find these links from the docs you first have to go to the installation page, decipher the meaning of that text to figure out which product needs this and which doesn’t. The COM interface which I did first didn’t need it, but the .NET interface did even though the docs don’t differentiate. The .NET interface failed with DLL errors which I didn’t catch.
A third party SSL interface. Interesting concept. Isn’t SSL built into every operating system or platform? Certainly if you were building a .NET component for distribution you could use the built in .NET SSL/HTTP support to do this and give out a component that doesn’t have any dependencies? Nope, we have to install the assembly, plus a wrapper DLL into the execution directory, then copy the SSL drivers into the System32 directory. That’s intuitive. Of course, no installer so you get to repeat and more importantly remember this exercise when you deploy your app to a live server.
I’m always amazed at companies that still have an API to do this. Why not go the route of direct HTTP access like Authorize.NET or AccessPoint, which eliminates the need for any additional components? Posting data via HTTPS/SSL is built into any development platform and what could be easier than posting individual values, or as would probably be the case with LinkPoint, a hierarchical XML document. Or if you do provide an API provide it optionally to create this XML document (which is what LinkPoint apparently does), but do it in a platform specific way so it’s easy to integrate without (unmentioned) dependencies.
LinkPoint uses XML to handle its message – all the value you set get generated into an XML document that you then feed to a transaction object which basically is the HTTP transfer mechanism. The data comes back from Linkpoint as – pseudo XML! Nope not real XML, but a string of an XML fragment. No root node. Hmmm… how hard would it have been to add the root node and XML header? Most people including myself probably will just use string extraction to retrieve the content out of this string, but if you did want to stick it into an XML document/reader you would have to add the doc root at least. Silly.
The point of this isn’t to rag on LinkPoint, but it seems it’s a prime example of misguided development interfaces. To be sure the LinkPoint API does its job once you have it set up, so functionally there’s no problem. But documentation and making integration easy is a key point to a developer tool. This is often forgotten by providers and especially credit card providers. I’ve worked with at least 10 providers over the last 10 years and other than Authorize.NET I’ve never seen documentation that is even close to acceptable. With Authorize.NET I was up and running with a new implementation and class wrapper in 30 minutes. Not that the Authorize.NET docs were spectacular, but accessing an HTTP POST interface that has no installation requirements gets you on your way a lot quicker than spending an hour just trying to figure out exactly which SDK you need to install and what files you need.
It seems doubly strange when you think that these company’s primary business comes from selling these services. They have tons of staff for tech support, but a technical writer or a developer responsible for creating useful and viewable samples is apparently too much to ask. The samples that come with LinkPoint are workable, but abstracted documentation that shows the concise requirements rather than a huge ASP.NET page, that has 250 lines of text and 20 that relate to the actual CC interface is a waste of space.
The CC interfaces for all these providers are also different for each of the providers. Maybe I should say thankfully so, since some provider interfaces are much easier to implement and use than others. But if a common format was used it would at least be easier to implement in generic solutions like store front software, which is bascically what I'm doing here.
And then there’s documentation in PDF format. PDF has to be the worst format for any technical documentation. PDFs are horrible to read, cross linking works awkwardly and you can’t easily copy text out of the document. Never mind the horrible view options in the Acrobat Reader. Anything is better than a PDF document – HTML, RTF, Word… heck even a Text file would better. Unless you print the PDF document PDF is not the right choice for documentation. And who prints things these days? And LinkPoints samples would look horrible printed since nobody bothered to try to fit the samples into the line lenghts of the document.
.NET Configuration
To give you a heads up here’s what I put into my documentation for the West Wind Web Store for the .NET version:
The ccLinkPoint class interfaces with the LinkPoint API via a managed DLL that interfaces with a couple of unmanaged DLLs (the SSL interfaces). The process of using LinkPoint involves:
· Signing up with LinkPoint and getting a test account
· Downloading and installing the .NET API
· Using the ccLinkPoint class from within .NET
· Enabling the class by setting a #define EnableLinkPoint
Getting and Installing the LinkPoint API
The LinkPoint API provides a variety of components for different languages and development environments. The API basically handles setting up transactions and sending the transactions via HTTPS to the LinkPoint Gateway server. To work with the API you only the appropriate component plus a little code to drive the component which is provided by the wwLinkPoint class.
You can download the LinkPoint API from:
https://www.linkpoint.com/viewcart/
You'll want to use the LinkPoint API .NET (C# or VB) download for Windows. This download includes a couple of DLLs (linkpointTransaction.dll and lpssl.dll) which you should copy in your bin or executable directory so your application can find it.
OpenSSL is a separate, required download
For .NET you will also need to download the OpenSSL DLLs which Linkpoint uses. You can go to http://www.linkpoint.com/support/ and follow the links from there to download and drop libeay.dll and ssleay.dll into your System32 directory.
Using the wwLinkPoint Class
Once the LinkPoint API is installed you'll need the following information from your confirmation email(s):
· The path to the filename to which you copied your Certificate (a .PEM file)
· Your Store Number
· Your Store Password
· The domain name and port number of the live or test server
Enabling the ccLinkPoint class
Because the LinkPoint API has a dependency on the external LinkPoint assemblies the ccLinkPoint class by default disables the class. At the top of the ccLinkPoint class there's a #define EnableLinkPoint directive, which is commented out by default. When commented the body of the class is included and any attempt to instantiate the class fails with an exception.
To enable the class uncomment the #define EnableLinkPoint directive. Then copy the LinkpointTransaction.dll and lpssl.dll into the bin/executable directory of your application and add a reference in your project to LinkPointTransaction.dll.
Although a factory pattern might have isolated this interface more cleanly it would have also required a separate assembly. Since LinkPoint is a specialty install and you will need to copy the LinkPoint DLLs explicitly anyway we opted for this simpler more integrated approach.
Special Properties you need to set
CC = new ccLinkPoint();
CC.MerchantPassword = App.Configuration.CCMerchantId; // "123412314"
CC.CertificatePath = App.Configuration.CCCertificatePath; // "d:\app\MyCert.pem"
// *** HTTP Link can be server name plus port
CC.HTTPLink = "staging.linkpt.net:1229";
// CC.Port = 1229; // or specify port separately
Here’s the processing class. This relies on the parent classes properties, but it should be pretty obvious what these properties mean.
#define EnableLinkPoint // Make sure to add LinkPointTransaction.dll and lpSSL.dll from the LinkPoint SDK
using System;
using System.Globalization;
using Westwind.Tools;
using LinkPointTransaction;
namespace Westwind.WebStore
{
/// <summary>
///
/// </summary>
public class ccLinkPoint : ccProcessing
{
/// <summary>
/// The Port used by the LinkPoint API to communicate with the server.
/// This port will be provided to you by LinkPoint.
/// </summary>
public
public ccLinkPoint()
{
this.HttpLink = "staging.linkpt.net:1129"; // override
}
#if EnableLinkPoint
/// <summary>
/// Validates the credit card. Supported transactions include only
/// Credits should have a negative sales amount.
/// </summary>
/// <returns></returns>
public override bool ValidateCard()
{
if (!base.ValidateCard())
return false;
this.Error = false;
this.ErrorMessage = "";
// *** Parse the HttpLink for domain + port number
int At = this.HttpLink.IndexOf(":");
if (At > 0)
{
string t = this.HttpLink.Substring(At+1);
this.Port = int.Parse( t );
this.HttpLink = this.HttpLink.Substring(0,At);
}
// create order
LPOrderPart order = LPOrderFactory.createOrderPart("order");
// create a part we will use to build the order
LPOrderPart op = LPOrderFactory.createOrderPart();
// Figure out what type of order we are processing
if (this.OrderAmount < 0 )
{
op.put("ordertype","CREDIT");
this.OrderAmount = this.OrderAmount * -1;
}
else if (this.ProcessType == ccProcessTypes.Credit )
op.put("ordertype","CREDIT");
else if (this.ProcessType == ccProcessTypes.Sale )
op.put("ordertype","
else if (this.ProcessType == ccProcessTypes.PreAuth )
op.put("ordertype","PREAUTH");
// add 'orderoptions to order
order.addPart("orderoptions", op );
// Build 'merchantinfo'
op.clear();
op.put("configfile",this.MerchantId);
// add 'merchantinfo to order
order.addPart("merchantinfo", op );
// Build 'billing'
// Required for AVS. If not provided,
// transactions will downgrade.
op.clear();
op.put("name",this.Name);
op.put("address1",this.Address);
op.put("city",this.City);
op.put("state",this.State);
op.put("zip",this.Zip);
op.put("country",this.Country); // 2 letter ID
op.put("email",this.Email);
op.put("phone",this.Phone);
int AddrNum = 0;
try
{
string T = this.Address.Substring( 0 , this.Address.IndexOf(" ") ).Trim();
AddrNum = int.Parse(T);
}
catch { ; }
if (AddrNum != 0)
{
op.put("addrnum", AddrNum.ToString( System.Globalization.CultureInfo.InvariantCulture.NumberFormat) );
}
order.addPart("billing", op );
// Build 'creditcard'
op.clear();
op.put("cardnumber",this.CreditCardNumber );
op.put("cardexpmonth",this.CreditCardExpirationMonth);
op.put("cardexpyear",this.CreditCardExpirationYear);
order.addPart("creditcard", op );
// Build 'payment'
op.clear();
op.put("chargetotal",this.OrderAmount.ToString( System.Globalization.CultureInfo.InvariantCulture.NumberFormat ) );
order.addPart("payment", op );
// *** Trasnaction Details
op.clear();
if (this.OrderId != null && this.OrderId != "" )
op.put("oid",this.OrderId );
order.addPart("transactiondetails",op);
if (this.Comment != "" )
{
// *** Notes
op.clear();
op.put("comments",this.Comment );
order.addPart("notes",op);
}
// create transaction object
LinkPointTxn LPTxn = new LinkPointTxn();
// get outgoing XML from the 'order' object
this.RawProcessorRequest = order.toXML();
// Call LPTxn
try
{
this.RawProcessorResult = LPTxn.send(this.CertificatePath,this.HttpLink,this.Port, this.RawProcessorRequest );
}
catch(Exception ex)
{
if (this.RawProcessorResult != "")
{
string Msg = wwUtils.ExtractString(this.RawProcessorResult,"<r_error>","</r_error>") ;
if (Msg == "")
this.SetError(ex.Message);
else
this.SetError(Msg);
}
else
{
this.SetError(ex.Message);
}
this.ValidatedMessage = this.ErrorMessage;
this.ValidatedResult = "FAILED";
return false;
}
this.ValidatedResult = wwUtils.ExtractString(this.RawProcessorResult,"<r_approved>","</r_approved>");
if (this.ValidatedResult == "")
this.ValidatedResult = "FAILED";
this.ValidatedMessage = wwUtils.ExtractString(this.RawProcessorResult,"<r_message>","</r_message>");
if (this.ValidatedResult == "APPROVED")
{
this.SetError(null);
}
else
{
this.SetError( wwUtils.ExtractString(this.RawProcessorResult,"<r_error>","</r_error>") );
this.ValidatedMessage = this.ErrorMessage;
}
this.LogTransaction();
return !this.Error;
}
#else
public override bool ValidateCard()
{
throw new Exception("ccLinkPoint Class is not enabled. Set the EnableLinkPoint #define in the source file.");
}
#endif
}
}
When I get some time I will write up this whole Credit Card Processing hierarchy business into an article. Until then hopefully this linkpoint sample will help someone out.
The Voices of Reason
# re: LinkPoint Integration with .NET -
Per the OpenSSL dependency; they offer an assembly with the openssl protocal built in which will allow you to install their api on a server lacking the dll, but you will need to call their support line to gain access too it, its not availble off their web site.
# re: LinkPoint Integration with .NET -
Now, why would any company hold back something useful like this assembly? And worse why would they be using this in the first place if SSL is part of the platform <g> and they could probably talk to their own API with that.
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
I personally cannot believe a company like this is in business and people are using it.
My clients are now in the process of signing up with alternate vendors.
http://linkpointcentralsucks.blogspot.com/2005/05/linkpoint-central-truly-sucks.html
# no response from Linkpoint server?
I'm using it for a website, and sometimes the API doesn't get a response back--even though the transaction occured.
Any leads on what is going on, and what to do about it? I'm thinking it's a timeout thing, but I don't see a way to set the timeout.
This is my first use of Linkpoint.
Thanks for any help you can offer.
# re: LinkPoint Integration with .NET -
http://www.linkpoint.com/support/openssl_version.htm
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
Has LinkPoint improved any? Bad doc I can stand, but no response to transactions and spt issues would be a deal killer!
# re: LinkPoint Integration with .NET -
----------------------------------------
Please cancel my linkpoint account immediately. Your API documentation is a joke and so is the process. You should do some Googling to see what others are saying about your service especially in .NET circles. Your docs are not current, lack information, and are scattered all over the place.
------------------------------------------
LinkPoint truly does suck ass!
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
Everybody who uses Linkpoint should say byebye to this garbage gateway. I cannot believe there is another gateway that could be worse than Linkpoint.
Some comments about their API code, the API dll product and so on. I even do not want to comment. they are just garbage.
# re: LinkPoint Integration with .NET -
Make sure you copy the files:
libeay32.dll
ssleay32.dll
...into your %SystemRoot%\system32 directory. Usually C:\windows\system32
You can download the files at:
http://www.linkpoint.com/support/openssl_version.htm
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
That said, I thought I'd let everyone know that there's a way around the open ssl dependencies entirely. But first you have to make a PKCS#12 version of your PEM-format certificate. Just follow the instructions at http://www.linkpoint.com/support/lpintguide/helpfiles/requirements_integration_java.htm to do so.
After you've done that, use code similar to the following to post your generated XML:
protected static bool ValidateCertificateAllowAll(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; } public static string RawSSLRequest(Uri RequestURI, byte[] PostData, X509Certificate[] Certificates) { TcpClient client = null; SslStream sslStream = null; try { client = new TcpClient(RequestURI.Host, RequestURI.Port); //Create an SSL stream that will close the client's stream. sslStream = new SslStream( client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateCertificateAllowAll), null ); //Do the magic... sslStream.AuthenticateAsClient(RequestURI.Host, new X509CertificateCollection(Certificates), System.Security.Authentication.SslProtocols.Tls, false); if (PostData != null && PostData.Length > 0) { sslStream.Write(PostData); } sslStream.Flush(); //Get response... byte[] buffer = new byte[2048]; StringBuilder response = new StringBuilder(); int bytes = -1; while ((bytes = sslStream.Read(buffer, 0, buffer.Length)) > 0) response.Append(Encoding.UTF8.GetString(buffer, 0, bytes)); return response.ToString(); } catch (Exception ex) { return null; } finally { if (client != null) client.Close(); if (sslStream != null) sslStream.Close(); if (sslStream != null) sslStream.Dispose(); } }
Create your X509Certificate object like so:
new X509Certificate2("C:\MyCert.p12", "MyPassword", X509KeyStorageFlags.PersistKeySet);
Then call RawSSLRequest() and voila!
I've spent a few days and created a complete (as far as I know) wrapper around the linkpoint API. Linkpoint is almost usable now! If anyone's interested just drop me a line: david@hoytsoft.org - I'd be glad to send you the code. (c:
# re: LinkPoint Integration with .NET -
I added some example code, but look at the zip file's example project to see how it works. It's pretty straightforward.
# re: LinkPoint Integration with .NET -
JS
# re: LinkPoint Integration with .NET -
The parent company reported that they processed in excess of $1 trillion USD. In my humble opinion they need to either provide services or get out of the business.
My deepest gratitude to David Hoyt of Hoytsoft. His gracious posting of his solution gave me just the insight and clues that I needed to get our application to work with LinkPoint. Thank you David for making that available. For those who might be reading this post Mr. Hoyt has a very good solution. I was able to compile and run without any changes his sample application in Visual Studio 2008 beta 2 on a Vista machine. While I didn't use his code directly, his gave me the necessary functionality to make our application work with a very minor modification.
Larry Aultman
# re: LinkPoint Integration with .NET -
I was Not able to add the lpssl.Dll to my project and i am having the following Dll's in the windows directory(libeay32.dll, ssleay32.dll)then also iam getting the error of Dll is is not accessable or not of the teh tyrp .DLL or not a component like.
Please hepl me out form this
Thanks you.
# re: LinkPoint Integration with .NET -
X509Certificate cert = new X509Certificate2(File.ReadAllBytes(certPath), certPwd, X509KeyStorageFlags.MachineKeySet);# Win32 OpenSSl Installer
A linkpoint customer sevice rep gave me this 3rd party download link of the OpenSSL installer - Linkpoint specific.
http://www.slproweb.com/products/Win32OpenSSL.html
I verified the installer compiles the correct machine name and copies these files to the c\windows\system32 directory:
libeay32.dll
ssleay32.dll
Kokkos
# re: LinkPoint Integration with .NET -
Thanks for you wonderful post.After that i am getting this error -
Unable to load certificate ERRs: wsa=33558530 err=33558530 ssl=537317504 sys=33558530. INFO: ACE_SSL (2324|2904) error code: 33558530 - error:02001002:system library:fopen:No such file or directory
Could you please help me to solve this error.
Thanks in advance.
Deep
# Error on live server
But I got one error when I implemented LinkPoint Transaction in live server(using windows 2003 server)
Unable to connect to server. ERRs: wsa=0 err=604389476 ssl=0 sys=0. INFO: ACE_SSL (2280|4064) error code: 604389476 - error:24064064:random number generator:SSLEAY_RAND_BYTES:PRNG not seeded
Everything is working in my local system using windows xp. What happened to live server....
Any solution? pls help me.
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
Thank you for your reply.
All assemblies are installed. but still the error is coming. I found the description of this error in http://www.error1002.com/api/api_errors.php
And the decription is:
"This error is a problem with the COM Object that seems to affect Windows 2003 server.
There is no work around currently available."
Do I want to buy COM Object? Is this a solution?
Any solution to solve this? Help me.
# Project: Integrate LinkPointAPI
The candidate should have experience with integrating http://linkpoint.com/
for charging customers credit card. we need to send the credit card info to
third party (the web credit card company), like YouPay.com. I have some
sample code, need help who has the experience to finish the job.
Interested parties reply me here.
Thanks.
# re: Project: Integrate LinkPointAPI
# re: Project: Integrate LinkPointAPI
# re: LinkPoint Integration with .NET -
Unable to load certificate ERRs: wsa=33558530 err=33558530 ssl=537317504 sys=33558530. INFO: ACE_SSL (3536|4036) error code: 33558530 - error:02001002:lib(2):func(1):reason(2)
# re: LinkPoint Integration with .NET -
Make sure you have the .pem file and set the correct path to that file. This error is due to the path or the pem file is not correct.
# re: LinkPoint Integration with .NET -
I've got the most bizarre error message back from using the LinkPointTransaction.dll and haven't been able to find a solution anywhere. Essentially, sometimes when I make the call:
this.RawProcessorResult = LPTxn.send(this.CertificatePath,this.HttpLink,this.Port, this.RawProcessorRequest );
I end up getting the following exception:
Exception Type: System.AccessViolationException
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Data: System.Collections.ListDictionaryInternal
TargetSite: System.String lp_send(System.String, System.String, System.String, Int32, System.String, Int32, System.String, Int32)
HelpLink: NULL
Source: LinkPointTransaction
Also, this is the stack trace:
at LinkPointTransaction.LPSSL_Wrapper.lp_send(String inXml, String clientCertPath, String host, Int32 port, String outXml, Int32 outLen, String logFile, Int32 logOpts)
at LinkPointTransaction.LinkPointTxn.send(String sXml)
at LinkPointTransaction.LinkPointTxn.send(String sClientCertPath, String sHost, Int32 iPort, String sXml)
I'm not sure what's going on because most of the time it works; only occassionally do I get this error.
Do you have any suggestions about what could be going on here or how I should proceed?
# re: LinkPoint Integration with .NET -
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.:
at LinkPointTransaction.LPSSL_Wrapper.lp_send(String inXml, String clientCertPath, String host, Int32 port, String outXml, Int32 outLen, String logFile, Int32 logOpts)
at LinkPointTransaction.LinkPointTxn.send(String sXml)
at LinkPointTransaction.LinkPointTxn.send(String sClientCertPath, String sHost, Int32 iPort, String sXml)
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
I am gettigns same error
Unable to connect to server. ERRs: wsa=0 err=604389476 ssl=0 sys=0. INFO: ACE_SSL (2280|4064) error code: 604389476 - error:24064064:random number generator:SSLEAY_RAND_BYTES:PRNG not seeded
Please help me what I do to solve this. it is working in local machine fine but not on server.
reply ASAP
Thanks
# re: LinkPoint Integration with .NET -
This is the error that is responded
<r_error> Unable to connect to server. ERRs: wsa=0 err=604389476 ssl=0 sys=0. INFO: ACE_SSL (97168|97448) error code: 604389476 - error:24064064:random number generator:SSLEAY_RAND_BYTES:PRNG not seeded
</r_error>
That was moving on one of servers, but when we moved to a new server, same enviroment, it did not work
Thanks for help
# re: LinkPoint Integration with .NET -
Thanks,
Dean
# re: LinkPoint Integration with .NET -
I had everything working great using LinkPoint's test accounts but, when I move everything over to the live account I get the following:
Unable to load certificate ERRs: wsa=33558530 err=33558530 ssl=537317504 sys=33558530. INFO: ACE_SSL (740|328) error code: 33558530 - error:02001002:lib(2):func(1):reason(2)
After checking what should be the cause(s); wrong path, permission problem, corrupted file, below ended up being the fix.
What I ended up having to do is make a copy of the live store .pem file/rename it/copy contents of original file to copy of original file/update web.config file. Do a test order and viola appropriate SGS error was received.
How anyone in their right mind would expect this to be the fix I don't know.
Note to LinkPoint: Please get rid of OpenSSL as a requirement, as it complicates an already needlessly complicated process.
# re: LinkPoint Integration with .NET -
Unable to connect to server. ERRs: wsa=0 err=604389476 ssl=0 sys=0. INFO: ACE_SSL (97168|97448) error code: 604389476 - error:24064064:random number generator:SSLEAY_RAND_BYTES:PRNG not seeded
It works fine on my development box: Windows Vista + .net 2.0
But on 2003 server it flat out doesn't work.
I have contacted LinkPoint but they are completely clueless about this problem, and suggested that I use Linux instead.
I have spent days trying to solve this problem, I hope someone can tell me how to fix it otherwise I will have to switch to authorize.net.
Thanks
# re: LinkPoint Integration with .NET -
Move the 3 OpenSLL file to bin. It worked great after that.
libeay32
libssl32
ssleay32
# re: LinkPoint Integration with .NET -
I have use LinkPointTransaction.dll in my site and its working well in local. The problem arise when I uploaded on godaddy server. Here I echo that error message
"Security Exception
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file."
Exception Details: System.Security.SecurityException: System.Security.Permissions.SecurityPermission "
I have also read lots of article reg it to slove problem but still not solve my problem.
If you have any idea then please help me.
Thanks in advance.
Regards,
Haresh
# re: LinkPoint Integration with .NET -
I found out that Godaddy specifically blocks port 1129 only on their shared hosting packages not full server areas. So LinkPoint will not work on Godaddy. So I moved to Aplus.net and found that Linkpoint doesn't like IIS7. So I have moved to another hosting provider now and I think I back to square one with same issue which I believe is the port being blocked. I have checked my code and it works fine on my Windows Vista & Visual Studios 2005 system just fine, LinkPoint just hates Sharing a Host.
So if anyone has got some time I need help :-)
# re: LinkPoint Integration with .NET -
connect to server. ERRs: wsa=0 err=604389476 ssl=0 sys=0. INFO: ACE_SSL (48120|28012) error code: 604389476 - error:24064064:random number generator:SSLEAY_RAND_BYTES:PRNG not seeded
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
Thanks
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
http://www.codeplex.com/aspnetSuite
Just download that and pull out the gateway stuff and you're set.
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
http://www.dragonlights.net/DragonLights/phpbb/viewtopic.php?f=4&t=233&p=233#p233
# re: LinkPoint Integration with .NET -
Any help would be greatly appreciated!
# re: LinkPoint Integration with .NET -
I went through hell to try and fix this issue so I decided it's worth my time to sum everything up for future victims!
My current system is Windows SBS 2008 with IIS 7.
You can dowload the alternative DLL files from here: http://www.dragonlights.net/DragonLights/phpbb/viewtopic.php?f=4&t=233&p=233
Follow the instructions at the link - You would need to use regsvr32 to register the DLL - Just open CMD with "Run as Administrator". Please make sure you run the regsvr32 from the WOW64 directory to allow the 32 BIT dll to register properly. Everything else will just return an error, so make sure you do it right.
If you are using the .NET solution like I was, you would need to adjust your code to fit the COM Object. It is VERY similar and only requires 2-3 adjustmants inside the code file of asp (.vb or .c, whatever you are using). Check their documantation for the exact changes.
After you're done, make sure to use the Aspcomp="true" at the header of your file. T
hat wasn't the end of it on my end. I had to reconfigure the IIS7 to work with the 32 BIT application.
1) Change the application pool to support the 32 bit.
2) You will also have to change the application.config.
Detailed instructions here: http://blogs.msdn.com/carloc/archive/2009/02/04/service-unavailable-in-iis7-with-32-bit-application-pool.aspx
You will face one last error which you will solve by running: %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /-[name='xpress'] This needs to be done using "Run As Admin" CMD.
Hopefully this will help all of you who wasted A LOT OF TIME figuring this out.
Nick.
# re: LinkPoint Integration with .NET -
In your web.config make sure you specify a full path to your cert files partials will not work
# re: LinkPoint Integration with .NET -
Thank you.
# re: LinkPoint Integration with .NET -
Should I encounter any errors as we move this to production, I will update my post. So far I have had no problems running through a few hundred live transactions on staging, and a couple on secure.
Good luck!
# re: LinkPoint Integration with .NET -
# re: LinkPoint Integration with .NET -
Please help me to solve this, iam getting the below error message always:
Result: Unable to resolve the hostname. ERRs: wsa=0 err=11004 ssl=0 sys=11004. INFO: ACE_INET_Addr::ACE_INET_Addr: https://secure.linkpt.net:1129: The requested name is valid and was found in the database, but it does not have the correct associated data being resolved for.
My XML:
---------
<order>
<billing><addrnum>123</addrnum><zip>12345</zip></billing>
<payment><chargetotal>4</chargetotal></payment>
<creditcard><cardnumber>4000000000000010</cardnumber>
<cardexpmonth>10</cardexpmonth><cardexpyear>2010</cardexpyear>
</creditcard>
<shipping></shipping>
<orderoptions><result>LIVE</result><ordertype>SALE</ordertype></orderoptions>
<transactiondetails></transactiondetails>
<merchantinfo><configfile>1909425970</configfile>
<keyfile>1909425970.pem</keyfile><port>1129</port>
<host>staging.linkpt.net</host>
</merchantinfo>
</order>
# re: LinkPoint Integration with .NET -
@AGuy & Everyone - Have you integrated the Web Service API into the WestWind cart?
I would like to see some sample code or even an update to the ccLinkPoint class and some instructions on how to get this thing working properly.
Any help is much appreciated.
# re: LinkPoint Integration with .NET -
I read your article.it is quite comprehensive. Thanks for this. Now i have some confusion. Please Answer my following questions.
Q1. How can i find documentation about LinkPoint DLL, as there is only one documentation that i have find on http://www.linkpoint.com/support/ , that is about web service. can you please give the exact documentation about LinkPoint DLL, not webserviec.
Q2. i am unable to fine OpenSLL on http://www.linkpoint.com/support/. can you provide me the exact link.
Q3. what is AddrNum that you had used. As i don't have documentation so i am unable to understand?
Waiting for your kind response. Thanks in advance.
# re: LinkPoint Integration with .NET -
Unable to load DLL 'lpssl.dll': Invalid access to memory location. (Exception from HRESULT: 0x800703E6)
# re: LinkPoint Integration with .NET -
http://www.atrevido.net/blog/PermaLink.aspx?guid=60cdc849-099b-47f4-9fb8-54b07b5368f2